From 94b57c15618c1e2bb7bcf4501e0102f7e4bf6b64 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 13 Apr 2012 17:02:19 -0700 Subject: [PATCH 001/502] added CS Circles fork reference --- tutor.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tutor.html b/tutor.html index eaa8c4913..c65942bd3 100644 --- a/tutor.html +++ b/tutor.html @@ -109,7 +109,7 @@

-Then try some programming questions:
+Then try some sample programming questions:
Solve: Two-sum | Reverse list | @@ -196,9 +196,9 @@ production code.

Official Python 3 support is coming soon; -for now, try the Python 3 fork by -Peter Wentworth. +for now, try the Python 3 forks by CS Circles and +Peter Wentworth.

Check out the Date: Fri, 13 Apr 2012 17:04:51 -0700 Subject: [PATCH 002/502] updated copyright and links --- index.html | 6 +++--- tutor.html | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/index.html b/index.html index c7694a825..27f4ac656 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ diff --git a/question.html b/question.html index 6ea6ea4d2..16fd8bf78 100644 --- a/question.html +++ b/question.html @@ -4,21 +4,28 @@ diff --git a/tutor.html b/tutor.html index 956827705..2027c9de5 100644 --- a/tutor.html +++ b/tutor.html @@ -4,21 +4,28 @@ From 6cd960e5ba7fb2baa356447b97f304bf03e81f91 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 16 Jul 2012 21:16:47 -0700 Subject: [PATCH 004/502] removed demjson dependency and moved over to Python 2.6 --- README | 4 +- cgi-bin/demjson.py | 2138 -------------------------------------- cgi-bin/load_question.py | 2 +- cgi-bin/pg_logger.py | 2 +- cgi-bin/web_exec.py | 12 +- cgi-bin/web_run_test.py | 8 +- question.html | 2 +- tutor.html | 2 +- 8 files changed, 13 insertions(+), 2157 deletions(-) delete mode 100644 cgi-bin/demjson.py diff --git a/README b/README index 284cba9de..f24d68b2e 100644 --- a/README +++ b/README @@ -43,7 +43,7 @@ System architecture overview: The Online Python Tutor is implemented as a web application, with a JavaScript front-end making AJAX calls to a pure-Python back-end. -The back-end has been tested on an Apache server running Python 2.5 +The back-end has been tested on an Apache server running Python 2.6 through CGI. Note that it will probably fail in subtle ways on other Python 2.X (and will DEFINITELY fail on Python 3.X). Peter Wentworth has create a port to Python 3.X, and hopefully we can eventually @@ -97,8 +97,6 @@ The back-end resides in the cgi-bin/ sub-directory in this repository: grading back-end cgi-bin/pg_logger.py - the 'meat' of the back-end cgi-bin/pg_encoder.py - encodes Python data into JSON - cgi-bin/demjson.py - 3rd-party JSON module, since Python 2.5 - doesn't have the built-in 'import json' cgi-bin/create_db.py - for optional sqlite query logging cgi-bin/db_common.py - for optional sqlite query logging cgi-bin/.htaccess - for Apache CGI execute permissions diff --git a/cgi-bin/demjson.py b/cgi-bin/demjson.py deleted file mode 100644 index a513ee134..000000000 --- a/cgi-bin/demjson.py +++ /dev/null @@ -1,2138 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# -r""" A JSON data encoder and decoder. - - This Python module implements the JSON (http://json.org/) data - encoding format; a subset of ECMAScript (aka JavaScript) for encoding - primitive data types (numbers, strings, booleans, lists, and - associative arrays) in a language-neutral simple text-based syntax. - - It can encode or decode between JSON formatted strings and native - Python data types. Normally you would use the encode() and decode() - functions defined by this module, but if you want more control over - the processing you can use the JSON class. - - This implementation tries to be as completely cormforming to all - intricacies of the standards as possible. It can operate in strict - mode (which only allows JSON-compliant syntax) or a non-strict mode - (which allows much more of the whole ECMAScript permitted syntax). - This includes complete support for Unicode strings (including - surrogate-pairs for non-BMP characters), and all number formats - including negative zero and IEEE 754 non-numbers such a NaN or - Infinity. - - The JSON/ECMAScript to Python type mappings are: - ---JSON--- ---Python--- - null None - undefined undefined (note 1) - Boolean (true,false) bool (True or False) - Integer int or long (note 2) - Float float - String str or unicode ( "..." or u"..." ) - Array [a, ...] list ( [...] ) - Object {a:b, ...} dict ( {...} ) - - -- Note 1. an 'undefined' object is declared in this module which - represents the native Python value for this type when in - non-strict mode. - - -- Note 2. some ECMAScript integers may be up-converted to Python - floats, such as 1e+40. Also integer -0 is converted to - float -0, so as to preserve the sign (which ECMAScript requires). - - In addition, when operating in non-strict mode, several IEEE 754 - non-numbers are also handled, and are mapped to specific Python - objects declared in this module: - - NaN (not a number) nan (float('nan')) - Infinity, +Infinity inf (float('inf')) - -Infinity neginf (float('-inf')) - - When encoding Python objects into JSON, you may use types other than - native lists or dictionaries, as long as they support the minimal - interfaces required of all sequences or mappings. This means you can - use generators and iterators, tuples, UserDict subclasses, etc. - - To make it easier to produce JSON encoded representations of user - defined classes, if the object has a method named json_equivalent(), - then it will call that method and attempt to encode the object - returned from it instead. It will do this recursively as needed and - before any attempt to encode the object using it's default - strategies. Note that any json_equivalent() method should return - "equivalent" Python objects to be encoded, not an already-encoded - JSON-formatted string. There is no such aid provided to decode - JSON back into user-defined classes as that would dramatically - complicate the interface. - - When decoding strings with this module it may operate in either - strict or non-strict mode. The strict mode only allows syntax which - is conforming to RFC 4627 (JSON), while the non-strict allows much - more of the permissible ECMAScript syntax. - - The following are permitted when processing in NON-STRICT mode: - - * Unicode format control characters are allowed anywhere in the input. - * All Unicode line terminator characters are recognized. - * All Unicode white space characters are recognized. - * The 'undefined' keyword is recognized. - * Hexadecimal number literals are recognized (e.g., 0xA6, 0177). - * String literals may use either single or double quote marks. - * Strings may contain \x (hexadecimal) escape sequences, as well as the - \v and \0 escape sequences. - * Lists may have omitted (elided) elements, e.g., [,,,,,], with - missing elements interpreted as 'undefined' values. - * Object properties (dictionary keys) can be of any of the - types: string literals, numbers, or identifiers (the later of - which are treated as if they are string literals)---as permitted - by ECMAScript. JSON only permits strings literals as keys. - - Concerning non-strict and non-ECMAScript allowances: - - * Octal numbers: If you allow the 'octal_numbers' behavior (which - is never enabled by default), then you can use octal integers - and octal character escape sequences (per the ECMAScript - standard Annex B.1.2). This behavior is allowed, if enabled, - because it was valid JavaScript at one time. - - * Multi-line string literals: Strings which are more than one - line long (contain embedded raw newline characters) are never - permitted. This is neither valid JSON nor ECMAScript. Some other - JSON implementations may allow this, but this module considers - that behavior to be a mistake. - - References: - * JSON (JavaScript Object Notation) - - * RFC 4627. The application/json Media Type for JavaScript Object Notation (JSON) - - * ECMA-262 3rd edition (1999) - - * IEEE 754-1985: Standard for Binary Floating-Point Arithmetic. - - -""" - -__author__ = "Deron Meranda " -__date__ = "2008-12-17" -__version__ = "1.4" -__credits__ = """Copyright (c) 2006-2008 Deron E. Meranda -Licensed under GNU LGPL 3.0 (GNU Lesser General Public License) or -later. See LICENSE.txt included with this software. - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU Lesser General Public License as -published by the Free Software Foundation, either version 3 of the -License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU Lesser General Public License -along with this program. If not, see -or . - -""" - -# ------------------------------ -# useful global constants - -content_type = 'application/json' -file_ext = 'json' -hexdigits = '0123456789ABCDEFabcdef' -octaldigits = '01234567' - -# ---------------------------------------------------------------------- -# Decimal and float types. -# -# If a JSON number can not be stored in a Python float without loosing -# precision and the Python has the decimal type, then we will try to -# use decimal instead of float. To make this determination we need to -# know the limits of the float type, but Python doesn't have an easy -# way to tell what the largest floating-point number it supports. So, -# we detemine the precision and scale of the float type by testing it. - -try: - # decimal module was introduced in Python 2.4 - import decimal -except ImportError: - decimal = None - -def determine_float_precision(): - """Returns a tuple (significant_digits, max_exponent) for the float type. - """ - import math - # Just count the digits in pi. The last two decimal digits - # may only be partial digits, so discount for them. - whole, frac = repr(math.pi).split('.') - sigdigits = len(whole) + len(frac) - 2 - - # This is a simple binary search. We find the largest exponent - # that the float() type can handle without going infinite or - # raising errors. - maxexp = None - minv = 0; maxv = 1000 - while True: - if minv+1 == maxv: - maxexp = minv - 1 - break - elif maxv < minv: - maxexp = None - break - m = (minv + maxv) // 2 - try: - f = repr(float( '1e+%d' % m )) - except ValueError: - f = None - else: - if not f or f[0] < '0' or f[0] > '9': - f = None - if not f: - # infinite - maxv = m - else: - minv = m - return sigdigits, maxexp - -float_sigdigits, float_maxexp = determine_float_precision() - -# ---------------------------------------------------------------------- -# The undefined value. -# -# ECMAScript has an undefined value (similar to yet distinct from null). -# Neither Python or strict JSON have support undefined, but to allow -# JavaScript behavior we must simulate it. - -class _undefined_class(object): - """Represents the ECMAScript 'undefined' value.""" - __slots__ = [] - def __repr__(self): - return self.__module__ + '.undefined' - def __str__(self): - return 'undefined' - def __nonzero__(self): - return False -undefined = _undefined_class() -del _undefined_class - - -# ---------------------------------------------------------------------- -# Non-Numbers: NaN, Infinity, -Infinity -# -# ECMAScript has official support for non-number floats, although -# strict JSON does not. Python doesn't either. So to support the -# full JavaScript behavior we must try to add them into Python, which -# is unfortunately a bit of black magic. If our python implementation -# happens to be built on top of IEEE 754 we can probably trick python -# into using real floats. Otherwise we must simulate it with classes. - -def _nonnumber_float_constants(): - """Try to return the Nan, Infinity, and -Infinity float values. - - This is unnecessarily complex because there is no standard - platform- independent way to do this in Python as the language - (opposed to some implementation of it) doesn't discuss - non-numbers. We try various strategies from the best to the - worst. - - If this Python interpreter uses the IEEE 754 floating point - standard then the returned values will probably be real instances - of the 'float' type. Otherwise a custom class object is returned - which will attempt to simulate the correct behavior as much as - possible. - - """ - try: - # First, try (mostly portable) float constructor. Works under - # Linux x86 (gcc) and some Unices. - nan = float('nan') - inf = float('inf') - neginf = float('-inf') - except ValueError: - try: - # Try the AIX (PowerPC) float constructors - nan = float('NaNQ') - inf = float('INF') - neginf = float('-INF') - except ValueError: - try: - # Next, try binary unpacking. Should work under - # platforms using IEEE 754 floating point. - import struct, sys - xnan = '7ff8000000000000'.decode('hex') # Quiet NaN - xinf = '7ff0000000000000'.decode('hex') - xcheck = 'bdc145651592979d'.decode('hex') # -3.14159e-11 - # Could use float.__getformat__, but it is a new python feature, - # so we use sys.byteorder. - if sys.byteorder == 'big': - nan = struct.unpack('d', xnan)[0] - inf = struct.unpack('d', xinf)[0] - check = struct.unpack('d', xcheck)[0] - else: - nan = struct.unpack('d', xnan[::-1])[0] - inf = struct.unpack('d', xinf[::-1])[0] - check = struct.unpack('d', xcheck[::-1])[0] - neginf = - inf - if check != -3.14159e-11: - raise ValueError('Unpacking raw IEEE 754 floats does not work') - except (ValueError, TypeError): - # Punt, make some fake classes to simulate. These are - # not perfect though. For instance nan * 1.0 == nan, - # as expected, but 1.0 * nan == 0.0, which is wrong. - class nan(float): - """An approximation of the NaN (not a number) floating point number.""" - def __repr__(self): return 'nan' - def __str__(self): return 'nan' - def __add__(self,x): return self - def __radd__(self,x): return self - def __sub__(self,x): return self - def __rsub__(self,x): return self - def __mul__(self,x): return self - def __rmul__(self,x): return self - def __div__(self,x): return self - def __rdiv__(self,x): return self - def __divmod__(self,x): return (self,self) - def __rdivmod__(self,x): return (self,self) - def __mod__(self,x): return self - def __rmod__(self,x): return self - def __pow__(self,exp): return self - def __rpow__(self,exp): return self - def __neg__(self): return self - def __pos__(self): return self - def __abs__(self): return self - def __lt__(self,x): return False - def __le__(self,x): return False - def __eq__(self,x): return False - def __neq__(self,x): return True - def __ge__(self,x): return False - def __gt__(self,x): return False - def __complex__(self,*a): raise NotImplementedError('NaN can not be converted to a complex') - if decimal: - nan = decimal.Decimal('NaN') - else: - nan = nan() - class inf(float): - """An approximation of the +Infinity floating point number.""" - def __repr__(self): return 'inf' - def __str__(self): return 'inf' - def __add__(self,x): return self - def __radd__(self,x): return self - def __sub__(self,x): return self - def __rsub__(self,x): return self - def __mul__(self,x): - if x is neginf or x < 0: - return neginf - elif x == 0: - return nan - else: - return self - def __rmul__(self,x): return self.__mul__(x) - def __div__(self,x): - if x == 0: - raise ZeroDivisionError('float division') - elif x < 0: - return neginf - else: - return self - def __rdiv__(self,x): - if x is inf or x is neginf or x is nan: - return nan - return 0.0 - def __divmod__(self,x): - if x == 0: - raise ZeroDivisionError('float divmod()') - elif x < 0: - return (nan,nan) - else: - return (self,self) - def __rdivmod__(self,x): - if x is inf or x is neginf or x is nan: - return (nan, nan) - return (0.0, x) - def __mod__(self,x): - if x == 0: - raise ZeroDivisionError('float modulo') - else: - return nan - def __rmod__(self,x): - if x is inf or x is neginf or x is nan: - return nan - return x - def __pow__(self, exp): - if exp == 0: - return 1.0 - else: - return self - def __rpow__(self, x): - if -1 < x < 1: return 0.0 - elif x == 1.0: return 1.0 - elif x is nan or x is neginf or x < 0: - return nan - else: - return self - def __neg__(self): return neginf - def __pos__(self): return self - def __abs__(self): return self - def __lt__(self,x): return False - def __le__(self,x): - if x is self: - return True - else: - return False - def __eq__(self,x): - if x is self: - return True - else: - return False - def __neq__(self,x): - if x is self: - return False - else: - return True - def __ge__(self,x): return True - def __gt__(self,x): return True - def __complex__(self,*a): raise NotImplementedError('Infinity can not be converted to a complex') - if decimal: - inf = decimal.Decimal('Infinity') - else: - inf = inf() - class neginf(float): - """An approximation of the -Infinity floating point number.""" - def __repr__(self): return '-inf' - def __str__(self): return '-inf' - def __add__(self,x): return self - def __radd__(self,x): return self - def __sub__(self,x): return self - def __rsub__(self,x): return self - def __mul__(self,x): - if x is self or x < 0: - return inf - elif x == 0: - return nan - else: - return self - def __rmul__(self,x): return self.__mul__(self) - def __div__(self,x): - if x == 0: - raise ZeroDivisionError('float division') - elif x < 0: - return inf - else: - return self - def __rdiv__(self,x): - if x is inf or x is neginf or x is nan: - return nan - return -0.0 - def __divmod__(self,x): - if x == 0: - raise ZeroDivisionError('float divmod()') - elif x < 0: - return (nan,nan) - else: - return (self,self) - def __rdivmod__(self,x): - if x is inf or x is neginf or x is nan: - return (nan, nan) - return (-0.0, x) - def __mod__(self,x): - if x == 0: - raise ZeroDivisionError('float modulo') - else: - return nan - def __rmod__(self,x): - if x is inf or x is neginf or x is nan: - return nan - return x - def __pow__(self,exp): - if exp == 0: - return 1.0 - else: - return self - def __rpow__(self, x): - if x is nan or x is inf or x is inf: - return nan - return 0.0 - def __neg__(self): return inf - def __pos__(self): return self - def __abs__(self): return inf - def __lt__(self,x): return True - def __le__(self,x): return True - def __eq__(self,x): - if x is self: - return True - else: - return False - def __neq__(self,x): - if x is self: - return False - else: - return True - def __ge__(self,x): - if x is self: - return True - else: - return False - def __gt__(self,x): return False - def __complex__(self,*a): raise NotImplementedError('-Infinity can not be converted to a complex') - if decimal: - neginf = decimal.Decimal('-Infinity') - else: - neginf = neginf(0) - return nan, inf, neginf - -nan, inf, neginf = _nonnumber_float_constants() -del _nonnumber_float_constants - - -# ---------------------------------------------------------------------- -# String processing helpers - -unsafe_string_chars = '"\\' + ''.join([chr(i) for i in range(0x20)]) -def skipstringsafe( s, start=0, end=None ): - i = start - #if end is None: - # end = len(s) - while i < end and s[i] not in unsafe_string_chars: - #c = s[i] - #if c in unsafe_string_chars: - # break - i += 1 - return i -def skipstringsafe_slow( s, start=0, end=None ): - i = start - if end is None: - end = len(s) - while i < end: - c = s[i] - if c == '"' or c == '\\' or ord(c) <= 0x1f: - break - i += 1 - return i - -def extend_list_with_sep( orig_seq, extension_seq, sepchar='' ): - if not sepchar: - orig_seq.extend( extension_seq ) - else: - for i, x in enumerate(extension_seq): - if i > 0: - orig_seq.append( sepchar ) - orig_seq.append( x ) - -def extend_and_flatten_list_with_sep( orig_seq, extension_seq, separator='' ): - for i, part in enumerate(extension_seq): - if i > 0 and separator: - orig_seq.append( separator ) - orig_seq.extend( part ) - - -# ---------------------------------------------------------------------- -# Unicode helpers -# -# JSON requires that all JSON implementations must support the UTF-32 -# encoding (as well as UTF-8 and UTF-16). But earlier versions of -# Python did not provide a UTF-32 codec. So we must implement UTF-32 -# ourselves in case we need it. - -def utf32le_encode( obj, errors='strict' ): - """Encodes a Unicode string into a UTF-32LE encoded byte string.""" - import struct - try: - import cStringIO as sio - except ImportError: - import StringIO as sio - f = sio.StringIO() - write = f.write - pack = struct.pack - for c in obj: - n = ord(c) - if 0xD800 <= n <= 0xDFFF: # surrogate codepoints are prohibited by UTF-32 - if errors == 'ignore': - continue - elif errors == 'replace': - n = ord('?') - else: - cname = 'U+%04X'%n - raise UnicodeError('UTF-32 can not encode surrogate characters',cname) - write( pack('L', n) ) - return f.getvalue() - - -def utf32le_decode( obj, errors='strict' ): - """Decodes a UTF-32LE byte string into a Unicode string.""" - if len(obj) % 4 != 0: - raise UnicodeError('UTF-32 decode error, data length not a multiple of 4 bytes') - import struct - unpack = struct.unpack - chars = [] - i = 0 - for i in range(0, len(obj), 4): - seq = obj[i:i+4] - n = unpack('L',seq)[0] - chars.append( unichr(n) ) - return u''.join( chars ) - - -def auto_unicode_decode( s ): - """Takes a string and tries to convert it to a Unicode string. - - This will return a Python unicode string type corresponding to the - input string (either str or unicode). The character encoding is - guessed by looking for either a Unicode BOM prefix, or by the - rules specified by RFC 4627. When in doubt it is assumed the - input is encoded in UTF-8 (the default for JSON). - - """ - if isinstance(s, unicode): - return s - if len(s) < 4: - return s.decode('utf8') # not enough bytes, assume default of utf-8 - # Look for BOM marker - import codecs - bom2 = s[:2] - bom4 = s[:4] - a, b, c, d = map(ord, s[:4]) # values of first four bytes - if bom4 == codecs.BOM_UTF32_LE: - encoding = 'utf-32le' - s = s[4:] - elif bom4 == codecs.BOM_UTF32_BE: - encoding = 'utf-32be' - s = s[4:] - elif bom2 == codecs.BOM_UTF16_LE: - encoding = 'utf-16le' - s = s[2:] - elif bom2 == codecs.BOM_UTF16_BE: - encoding = 'utf-16be' - s = s[2:] - # No BOM, so autodetect encoding used by looking at first four bytes - # according to RFC 4627 section 3. - elif a==0 and b==0 and c==0 and d!=0: # UTF-32BE - encoding = 'utf-32be' - elif a==0 and b!=0 and c==0 and d!=0: # UTF-16BE - encoding = 'utf-16be' - elif a!=0 and b==0 and c==0 and d==0: # UTF-32LE - encoding = 'utf-32le' - elif a!=0 and b==0 and c!=0 and d==0: # UTF-16LE - encoding = 'utf-16le' - else: #if a!=0 and b!=0 and c!=0 and d!=0: # UTF-8 - # JSON spec says default is UTF-8, so always guess it - # if we can't guess otherwise - encoding = 'utf8' - # Make sure the encoding is supported by Python - try: - cdk = codecs.lookup(encoding) - except LookupError: - if encoding.startswith('utf-32') \ - or encoding.startswith('ucs4') \ - or encoding.startswith('ucs-4'): - # Python doesn't natively have a UTF-32 codec, but JSON - # requires that it be supported. So we must decode these - # manually. - if encoding.endswith('le'): - unis = utf32le_decode(s) - else: - unis = utf32be_decode(s) - else: - raise JSONDecodeError('this python has no codec for this character encoding',encoding) - else: - # Convert to unicode using a standard codec - unis = s.decode(encoding) - return unis - - -def surrogate_pair_as_unicode( c1, c2 ): - """Takes a pair of unicode surrogates and returns the equivalent unicode character. - - The input pair must be a surrogate pair, with c1 in the range - U+D800 to U+DBFF and c2 in the range U+DC00 to U+DFFF. - - """ - n1, n2 = ord(c1), ord(c2) - if n1 < 0xD800 or n1 > 0xDBFF or n2 < 0xDC00 or n2 > 0xDFFF: - raise JSONDecodeError('illegal Unicode surrogate pair',(c1,c2)) - a = n1 - 0xD800 - b = n2 - 0xDC00 - v = (a << 10) | b - v += 0x10000 - return unichr(v) - - -def unicode_as_surrogate_pair( c ): - """Takes a single unicode character and returns a sequence of surrogate pairs. - - The output of this function is a tuple consisting of one or two unicode - characters, such that if the input character is outside the BMP range - then the output is a two-character surrogate pair representing that character. - - If the input character is inside the BMP then the output tuple will have - just a single character...the same one. - - """ - n = ord(c) - if n < 0x10000: - return (unichr(n),) # in BMP, surrogate pair not required - v = n - 0x10000 - vh = (v >> 10) & 0x3ff # highest 10 bits - vl = v & 0x3ff # lowest 10 bits - w1 = 0xD800 | vh - w2 = 0xDC00 | vl - return (unichr(w1), unichr(w2)) - - -# ---------------------------------------------------------------------- -# Type identification - -def isnumbertype( obj ): - """Is the object of a Python number type (excluding complex)?""" - return isinstance(obj, (int,long,float)) \ - and not isinstance(obj, bool) \ - or obj is nan or obj is inf or obj is neginf - - -def isstringtype( obj ): - """Is the object of a Python string type?""" - if isinstance(obj, basestring): - return True - # Must also check for some other pseudo-string types - import types, UserString - return isinstance(obj, types.StringTypes) \ - or isinstance(obj, UserString.UserString) \ - or isinstance(obj, UserString.MutableString) - - -# ---------------------------------------------------------------------- -# Numeric helpers - -def decode_hex( hexstring ): - """Decodes a hexadecimal string into it's integer value.""" - # We don't use the builtin 'hex' codec in python since it can - # not handle odd numbers of digits, nor raise the same type - # of exceptions we want to. - n = 0 - for c in hexstring: - if '0' <= c <= '9': - d = ord(c) - ord('0') - elif 'a' <= c <= 'f': - d = ord(c) - ord('a') + 10 - elif 'A' <= c <= 'F': - d = ord(c) - ord('A') + 10 - else: - raise JSONDecodeError('not a hexadecimal number',hexstring) - # Could use ((n << 4 ) | d), but python 2.3 issues a FutureWarning. - n = (n * 16) + d - return n - - -def decode_octal( octalstring ): - """Decodes an octal string into it's integer value.""" - n = 0 - for c in octalstring: - if '0' <= c <= '7': - d = ord(c) - ord('0') - else: - raise JSONDecodeError('not an octal number',octalstring) - # Could use ((n << 3 ) | d), but python 2.3 issues a FutureWarning. - n = (n * 8) + d - return n - - -# ---------------------------------------------------------------------- -# Exception classes. - -class JSONError(ValueError): - """Our base class for all JSON-related errors. - - """ - def pretty_description(self): - err = self.args[0] - if len(self.args) > 1: - err += ': ' - for anum, a in enumerate(self.args[1:]): - if anum > 1: - err += ', ' - astr = repr(a) - if len(astr) > 20: - astr = astr[:20] + '...' - err += astr - return err - -class JSONDecodeError(JSONError): - """An exception class raised when a JSON decoding error (syntax error) occurs.""" - - -class JSONEncodeError(JSONError): - """An exception class raised when a python object can not be encoded as a JSON string.""" - - -#---------------------------------------------------------------------- -# The main JSON encoder/decoder class. - -class JSON(object): - """An encoder/decoder for JSON data streams. - - Usually you will call the encode() or decode() methods. The other - methods are for lower-level processing. - - Whether the JSON parser runs in strict mode (which enforces exact - compliance with the JSON spec) or the more forgiving non-string mode - can be affected by setting the 'strict' argument in the object's - initialization; or by assigning True or False to the 'strict' - property of the object. - - You can also adjust a finer-grained control over strictness by - allowing or preventing specific behaviors. You can get a list of - all the available behaviors by accessing the 'behaviors' property. - Likewise the allowed_behaviors and prevented_behaviors list which - behaviors will be allowed and which will not. Call the allow() - or prevent() methods to adjust these. - - """ - _escapes_json = { # character escapes in JSON - '"': '"', - '/': '/', - '\\': '\\', - 'b': '\b', - 'f': '\f', - 'n': '\n', - 'r': '\r', - 't': '\t', - } - - _escapes_js = { # character escapes in Javascript - '"': '"', - '\'': '\'', - '\\': '\\', - 'b': '\b', - 'f': '\f', - 'n': '\n', - 'r': '\r', - 't': '\t', - 'v': '\v', - '0': '\x00' - } - - # Following is a reverse mapping of escape characters, used when we - # output JSON. Only those escapes which are always safe (e.g., in JSON) - # are here. It won't hurt if we leave questionable ones out. - _rev_escapes = {'\n': '\\n', - '\t': '\\t', - '\b': '\\b', - '\r': '\\r', - '\f': '\\f', - '"': '\\"', - '\\': '\\\\'} - - def __init__(self, strict=False, compactly=True, escape_unicode=False): - """Creates a JSON encoder/decoder object. - - If 'strict' is set to True, then only strictly-conforming JSON - output will be produced. Note that this means that some types - of values may not be convertable and will result in a - JSONEncodeError exception. - - If 'compactly' is set to True, then the resulting string will - have all extraneous white space removed; if False then the - string will be "pretty printed" with whitespace and indentation - added to make it more readable. - - If 'escape_unicode' is set to True, then all non-ASCII characters - will be represented as a unicode escape sequence; if False then - the actual real unicode character will be inserted if possible. - - The 'escape_unicode' can also be a function, which when called - with a single argument of a unicode character will return True - if the character should be escaped or False if it should not. - - If you wish to extend the encoding to ba able to handle - additional types, you should subclass this class and override - the encode_default() method. - - """ - import sys - self._set_strictness(strict) - self._encode_compactly = compactly - try: - # see if we were passed a predicate function - b = escape_unicode(u'A') - self._encode_unicode_as_escapes = escape_unicode - except (ValueError, NameError, TypeError): - # Just set to True or False. We could use lambda x:True - # to make it more consistent (always a function), but it - # will be too slow, so we'll make explicit tests later. - self._encode_unicode_as_escapes = bool(escape_unicode) - self._sort_dictionary_keys = True - - # The following is a boolean map of the first 256 characters - # which will quickly tell us which of those characters never - # need to be escaped. - - self._asciiencodable = [32 <= c < 128 and not self._rev_escapes.has_key(chr(c)) - for c in range(0,255)] - - def _set_strictness(self, strict): - """Changes the strictness behavior. - - Pass True to be very strict about JSON syntax, or False to be looser. - """ - self._allow_any_type_at_start = not strict - self._allow_all_numeric_signs = not strict - self._allow_comments = not strict - self._allow_control_char_in_string = not strict - self._allow_hex_numbers = not strict - self._allow_initial_decimal_point = not strict - self._allow_js_string_escapes = not strict - self._allow_non_numbers = not strict - self._allow_nonescape_characters = not strict # "\z" -> "z" - self._allow_nonstring_keys = not strict - self._allow_omitted_array_elements = not strict - self._allow_single_quoted_strings = not strict - self._allow_trailing_comma_in_literal = not strict - self._allow_undefined_values = not strict - self._allow_unicode_format_control_chars = not strict - self._allow_unicode_whitespace = not strict - # Always disable this by default - self._allow_octal_numbers = False - - def allow(self, behavior): - """Allow the specified behavior (turn off a strictness check). - - The list of all possible behaviors is available in the behaviors property. - You can see which behaviors are currently allowed by accessing the - allowed_behaviors property. - - """ - p = '_allow_' + behavior - if hasattr(self, p): - setattr(self, p, True) - else: - raise AttributeError('Behavior is not known',behavior) - - def prevent(self, behavior): - """Prevent the specified behavior (turn on a strictness check). - - The list of all possible behaviors is available in the behaviors property. - You can see which behaviors are currently prevented by accessing the - prevented_behaviors property. - - """ - p = '_allow_' + behavior - if hasattr(self, p): - setattr(self, p, False) - else: - raise AttributeError('Behavior is not known',behavior) - - def _get_behaviors(self): - return sorted([ n[len('_allow_'):] for n in self.__dict__ \ - if n.startswith('_allow_')]) - behaviors = property(_get_behaviors, - doc='List of known behaviors that can be passed to allow() or prevent() methods') - - def _get_allowed_behaviors(self): - return sorted([ n[len('_allow_'):] for n in self.__dict__ \ - if n.startswith('_allow_') and getattr(self,n)]) - allowed_behaviors = property(_get_allowed_behaviors, - doc='List of known behaviors that are currently allowed') - - def _get_prevented_behaviors(self): - return sorted([ n[len('_allow_'):] for n in self.__dict__ \ - if n.startswith('_allow_') and not getattr(self,n)]) - prevented_behaviors = property(_get_prevented_behaviors, - doc='List of known behaviors that are currently prevented') - - def _is_strict(self): - return not self.allowed_behaviors - strict = property(_is_strict, _set_strictness, - doc='True if adherence to RFC 4627 syntax is strict, or False is more generous ECMAScript syntax is permitted') - - - def isws(self, c): - """Determines if the given character is considered as white space. - - Note that Javscript is much more permissive on what it considers - to be whitespace than does JSON. - - Ref. ECMAScript section 7.2 - - """ - if not self._allow_unicode_whitespace: - return c in ' \t\n\r' - else: - if not isinstance(c,unicode): - c = unicode(c) - if c in u' \t\n\r\f\v': - return True - import unicodedata - return unicodedata.category(c) == 'Zs' - - def islineterm(self, c): - """Determines if the given character is considered a line terminator. - - Ref. ECMAScript section 7.3 - - """ - if c == '\r' or c == '\n': - return True - if c == u'\u2028' or c == u'\u2029': # unicodedata.category(c) in ['Zl', 'Zp'] - return True - return False - - def strip_format_control_chars(self, txt): - """Filters out all Unicode format control characters from the string. - - ECMAScript permits any Unicode "format control characters" to - appear at any place in the source code. They are to be - ignored as if they are not there before any other lexical - tokenization occurs. Note that JSON does not allow them. - - Ref. ECMAScript section 7.1. - - """ - import unicodedata - txt2 = filter( lambda c: unicodedata.category(unicode(c)) != 'Cf', - txt ) - return txt2 - - - def decode_null(self, s, i=0): - """Intermediate-level decoder for ECMAScript 'null' keyword. - - Takes a string and a starting index, and returns a Python - None object and the index of the next unparsed character. - - """ - if i < len(s) and s[i:i+4] == 'null': - return None, i+4 - raise JSONDecodeError('literal is not the JSON "null" keyword', s) - - def encode_undefined(self): - """Produces the ECMAScript 'undefined' keyword.""" - return 'undefined' - - def encode_null(self): - """Produces the JSON 'null' keyword.""" - return 'null' - - def decode_boolean(self, s, i=0): - """Intermediate-level decode for JSON boolean literals. - - Takes a string and a starting index, and returns a Python bool - (True or False) and the index of the next unparsed character. - - """ - if s[i:i+4] == 'true': - return True, i+4 - elif s[i:i+5] == 'false': - return False, i+5 - raise JSONDecodeError('literal value is not a JSON boolean keyword',s) - - def encode_boolean(self, b): - """Encodes the Python boolean into a JSON Boolean literal.""" - if bool(b): - return 'true' - return 'false' - - def decode_number(self, s, i=0, imax=None): - """Intermediate-level decoder for JSON numeric literals. - - Takes a string and a starting index, and returns a Python - suitable numeric type and the index of the next unparsed character. - - The returned numeric type can be either of a Python int, - long, or float. In addition some special non-numbers may - also be returned such as nan, inf, and neginf (technically - which are Python floats, but have no numeric value.) - - Ref. ECMAScript section 8.5. - - """ - if imax is None: - imax = len(s) - # Detect initial sign character(s) - if not self._allow_all_numeric_signs: - if s[i] == '+' or (s[i] == '-' and i+1 < imax and \ - s[i+1] in '+-'): - raise JSONDecodeError('numbers in strict JSON may only have a single "-" as a sign prefix',s[i:]) - sign = +1 - j = i # j will point after the sign prefix - while j < imax and s[j] in '+-': - if s[j] == '-': sign = sign * -1 - j += 1 - # Check for ECMAScript symbolic non-numbers - if s[j:j+3] == 'NaN': - if self._allow_non_numbers: - return nan, j+3 - else: - raise JSONDecodeError('NaN literals are not allowed in strict JSON') - elif s[j:j+8] == 'Infinity': - if self._allow_non_numbers: - if sign < 0: - return neginf, j+8 - else: - return inf, j+8 - else: - raise JSONDecodeError('Infinity literals are not allowed in strict JSON') - elif s[j:j+2] in ('0x','0X'): - if self._allow_hex_numbers: - k = j+2 - while k < imax and s[k] in hexdigits: - k += 1 - n = sign * decode_hex( s[j+2:k] ) - return n, k - else: - raise JSONDecodeError('hexadecimal literals are not allowed in strict JSON',s[i:]) - else: - # Decimal (or octal) number, find end of number. - # General syntax is: \d+[\.\d+][e[+-]?\d+] - k = j # will point to end of digit sequence - could_be_octal = ( k+1 < imax and s[k] == '0' ) # first digit is 0 - decpt = None # index into number of the decimal point, if any - ept = None # index into number of the e|E exponent start, if any - esign = '+' # sign of exponent - sigdigits = 0 # number of significant digits (approx, counts end zeros) - while k < imax and (s[k].isdigit() or s[k] in '.+-eE'): - c = s[k] - if c not in octaldigits: - could_be_octal = False - if c == '.': - if decpt is not None or ept is not None: - break - else: - decpt = k-j - elif c in 'eE': - if ept is not None: - break - else: - ept = k-j - elif c in '+-': - if not ept: - break - esign = c - else: #digit - if not ept: - sigdigits += 1 - k += 1 - number = s[j:k] # The entire number as a string - #print 'NUMBER IS: ', repr(number), ', sign', sign, ', esign', esign, \ - # ', sigdigits', sigdigits, \ - # ', decpt', decpt, ', ept', ept - - # Handle octal integers first as an exception. If octal - # is not enabled (the ECMAScipt standard) then just do - # nothing and treat the string as a decimal number. - if could_be_octal and self._allow_octal_numbers: - n = sign * decode_octal( number ) - return n, k - - # A decimal number. Do a quick check on JSON syntax restrictions. - if number[0] == '.' and not self._allow_initial_decimal_point: - raise JSONDecodeError('numbers in strict JSON must have at least one digit before the decimal point',s[i:]) - elif number[0] == '0' and \ - len(number) > 1 and number[1].isdigit(): - if self._allow_octal_numbers: - raise JSONDecodeError('initial zero digit is only allowed for octal integers',s[i:]) - else: - raise JSONDecodeError('initial zero digit must not be followed by other digits (octal numbers are not permitted)',s[i:]) - # Make sure decimal point is followed by a digit - if decpt is not None: - if decpt+1 >= len(number) or not number[decpt+1].isdigit(): - raise JSONDecodeError('decimal point must be followed by at least one digit',s[i:]) - # Determine the exponential part - if ept is not None: - if ept+1 >= len(number): - raise JSONDecodeError('exponent in number is truncated',s[i:]) - try: - exponent = int(number[ept+1:]) - except ValueError: - raise JSONDecodeError('not a valid exponent in number',s[i:]) - ##print 'EXPONENT', exponent - else: - exponent = 0 - # Try to make an int/long first. - if decpt is None and exponent >= 0: - # An integer - if ept: - n = int(number[:ept]) - else: - n = int(number) - n *= sign - if exponent: - n *= 10**exponent - if n == 0 and sign < 0: - # minus zero, must preserve negative sign so make a float - n = -0.0 - else: - try: - if decimal and (abs(exponent) > float_maxexp or sigdigits > float_sigdigits): - try: - n = decimal.Decimal(number) - n = n.normalize() - except decimal.Overflow: - if sign<0: - n = neginf - else: - n = inf - else: - n *= sign - else: - n = float(number) * sign - except ValueError: - raise JSONDecodeError('not a valid JSON numeric literal', s[i:j]) - return n, k - - def encode_number(self, n): - """Encodes a Python numeric type into a JSON numeric literal. - - The special non-numeric values of float('nan'), float('inf') - and float('-inf') are translated into appropriate JSON - literals. - - Note that Python complex types are not handled, as there is no - ECMAScript equivalent type. - - """ - if isinstance(n, complex): - if n.imag: - raise JSONEncodeError('Can not encode a complex number that has a non-zero imaginary part',n) - n = n.real - if isinstance(n, (int,long)): - return str(n) - if decimal and isinstance(n, decimal.Decimal): - return str(n) - global nan, inf, neginf - if n is nan: - return 'NaN' - elif n is inf: - return 'Infinity' - elif n is neginf: - return '-Infinity' - elif isinstance(n, float): - # Check for non-numbers. - # In python nan == inf == -inf, so must use repr() to distinguish - reprn = repr(n).lower() - if ('inf' in reprn and '-' in reprn) or n == neginf: - return '-Infinity' - elif 'inf' in reprn or n is inf: - return 'Infinity' - elif 'nan' in reprn or n is nan: - return 'NaN' - return repr(n) - else: - raise TypeError('encode_number expected an integral, float, or decimal number type',type(n)) - - def decode_string(self, s, i=0, imax=None): - """Intermediate-level decoder for JSON string literals. - - Takes a string and a starting index, and returns a Python - string (or unicode string) and the index of the next unparsed - character. - - """ - if imax is None: - imax = len(s) - if imax < i+2 or s[i] not in '"\'': - raise JSONDecodeError('string literal must be properly quoted',s[i:]) - closer = s[i] - if closer == '\'' and not self._allow_single_quoted_strings: - raise JSONDecodeError('string literals must use double quotation marks in strict JSON',s[i:]) - i += 1 # skip quote - if self._allow_js_string_escapes: - escapes = self._escapes_js - else: - escapes = self._escapes_json - ccallowed = self._allow_control_char_in_string - chunks = [] - _append = chunks.append - done = False - high_surrogate = None - while i < imax: - c = s[i] - # Make sure a high surrogate is immediately followed by a low surrogate - if high_surrogate and (i+1 >= imax or s[i:i+2] != '\\u'): - raise JSONDecodeError('High unicode surrogate must be followed by a low surrogate',s[i:]) - if c == closer: - i += 1 # skip end quote - done = True - break - elif c == '\\': - # Escaped character - i += 1 - if i >= imax: - raise JSONDecodeError('escape in string literal is incomplete',s[i-1:]) - c = s[i] - - if '0' <= c <= '7' and self._allow_octal_numbers: - # Handle octal escape codes first so special \0 doesn't kick in yet. - # Follow Annex B.1.2 of ECMAScript standard. - if '0' <= c <= '3': - maxdigits = 3 - else: - maxdigits = 2 - for k in range(i, i+maxdigits+1): - if k >= imax or s[k] not in octaldigits: - break - n = decode_octal(s[i:k]) - if n < 128: - _append( chr(n) ) - else: - _append( unichr(n) ) - i = k - continue - - if escapes.has_key(c): - _append(escapes[c]) - i += 1 - elif c == 'u' or c == 'x': - i += 1 - if c == 'u': - digits = 4 - else: # c== 'x' - if not self._allow_js_string_escapes: - raise JSONDecodeError(r'string literals may not use the \x hex-escape in strict JSON',s[i-1:]) - digits = 2 - if i+digits >= imax: - raise JSONDecodeError('numeric character escape sequence is truncated',s[i-1:]) - n = decode_hex( s[i:i+digits] ) - if high_surrogate: - # Decode surrogate pair and clear high surrogate - _append( surrogate_pair_as_unicode( high_surrogate, unichr(n) ) ) - high_surrogate = None - elif n < 128: - # ASCII chars always go in as a str - _append( chr(n) ) - elif 0xd800 <= n <= 0xdbff: # high surrogate - if imax < i + digits + 2 or s[i+digits] != '\\' or s[i+digits+1] != 'u': - raise JSONDecodeError('High unicode surrogate must be followed by a low surrogate',s[i-2:]) - high_surrogate = unichr(n) # remember until we get to the low surrogate - elif 0xdc00 <= n <= 0xdfff: # low surrogate - raise JSONDecodeError('Low unicode surrogate must be proceeded by a high surrogate',s[i-2:]) - else: - # Other chars go in as a unicode char - _append( unichr(n) ) - i += digits - else: - # Unknown escape sequence - if self._allow_nonescape_characters: - _append( c ) - i += 1 - else: - raise JSONDecodeError('unsupported escape code in JSON string literal',s[i-1:]) - elif ord(c) <= 0x1f: # A control character - if self.islineterm(c): - raise JSONDecodeError('line terminator characters must be escaped inside string literals',s[i:]) - elif ccallowed: - _append( c ) - i += 1 - else: - raise JSONDecodeError('control characters must be escaped inside JSON string literals',s[i:]) - else: # A normal character; not an escape sequence or end-quote. - # Find a whole sequence of "safe" characters so we can append them - # all at once rather than one a time, for speed. - j = i - i += 1 - while i < imax and s[i] not in unsafe_string_chars and s[i] != closer: - i += 1 - _append(s[j:i]) - if not done: - raise JSONDecodeError('string literal is not terminated with a quotation mark',s) - s = ''.join( chunks ) - return s, i - - def encode_string(self, s): - """Encodes a Python string into a JSON string literal. - - """ - # Must handle instances of UserString specially in order to be - # able to use ord() on it's simulated "characters". - import UserString - if isinstance(s, (UserString.UserString, UserString.MutableString)): - def tochar(c): - return c.data - else: - # Could use "lambda c:c", but that is too slow. So we set to None - # and use an explicit if test inside the loop. - tochar = None - - chunks = [] - chunks.append('"') - revesc = self._rev_escapes - asciiencodable = self._asciiencodable - encunicode = self._encode_unicode_as_escapes - i = 0 - imax = len(s) - while i < imax: - if tochar: - c = tochar(s[i]) - else: - c = s[i] - cord = ord(c) - if cord < 256 and asciiencodable[cord] and isinstance(encunicode, bool): - # Contiguous runs of plain old printable ASCII can be copied - # directly to the JSON output without worry (unless the user - # has supplied a custom is-encodable function). - j = i - i += 1 - while i < imax: - if tochar: - c = tochar(s[i]) - else: - c = s[i] - cord = ord(c) - if cord < 256 and asciiencodable[cord]: - i += 1 - else: - break - chunks.append( unicode(s[j:i]) ) - elif revesc.has_key(c): - # Has a shortcut escape sequence, like "\n" - chunks.append(revesc[c]) - i += 1 - elif cord <= 0x1F: - # Always unicode escape ASCII-control characters - chunks.append(r'\u%04x' % cord) - i += 1 - elif 0xD800 <= cord <= 0xDFFF: - # A raw surrogate character! This should never happen - # and there's no way to include it in the JSON output. - # So all we can do is complain. - cname = 'U+%04X' % cord - raise JSONEncodeError('can not include or escape a Unicode surrogate character',cname) - elif cord <= 0xFFFF: - # Other BMP Unicode character - if isinstance(encunicode, bool): - doesc = encunicode - else: - doesc = encunicode( c ) - if doesc: - chunks.append(r'\u%04x' % cord) - else: - chunks.append( c ) - i += 1 - else: # ord(c) >= 0x10000 - # Non-BMP Unicode - if isinstance(encunicode, bool): - doesc = encunicode - else: - doesc = encunicode( c ) - if doesc: - for surrogate in unicode_as_surrogate_pair(c): - chunks.append(r'\u%04x' % ord(surrogate)) - else: - chunks.append( c ) - i += 1 - chunks.append('"') - return ''.join( chunks ) - - def skip_comment(self, txt, i=0): - """Skips an ECMAScript comment, either // or /* style. - - The contents of the comment are returned as a string, as well - as the index of the character immediately after the comment. - - """ - if i+1 >= len(txt) or txt[i] != '/' or txt[i+1] not in '/*': - return None, i - if not self._allow_comments: - raise JSONDecodeError('comments are not allowed in strict JSON',txt[i:]) - multiline = (txt[i+1] == '*') - istart = i - i += 2 - while i < len(txt): - if multiline: - if txt[i] == '*' and i+1 < len(txt) and txt[i+1] == '/': - j = i+2 - break - elif txt[i] == '/' and i+1 < len(txt) and txt[i+1] == '*': - raise JSONDecodeError('multiline /* */ comments may not nest',txt[istart:i+1]) - else: - if self.islineterm(txt[i]): - j = i # line terminator is not part of comment - break - i += 1 - - if i >= len(txt): - if not multiline: - j = len(txt) # // comment terminated by end of file is okay - else: - raise JSONDecodeError('comment was never terminated',txt[istart:]) - return txt[istart:j], j - - def skipws(self, txt, i=0, imax=None, skip_comments=True): - """Skips whitespace. - """ - if not self._allow_comments and not self._allow_unicode_whitespace: - if imax is None: - imax = len(txt) - while i < imax and txt[i] in ' \r\n\t': - i += 1 - return i - else: - return self.skipws_any(txt, i, imax, skip_comments) - - def skipws_any(self, txt, i=0, imax=None, skip_comments=True): - """Skips all whitespace, including comments and unicode whitespace - - Takes a string and a starting index, and returns the index of the - next non-whitespace character. - - If skip_comments is True and not running in strict JSON mode, then - comments will be skipped over just like whitespace. - - """ - if imax is None: - imax = len(txt) - while i < imax: - if txt[i] == '/': - cmt, i = self.skip_comment(txt, i) - if i < imax and self.isws(txt[i]): - i += 1 - else: - break - return i - - def decode_composite(self, txt, i=0, imax=None): - """Intermediate-level JSON decoder for composite literal types (array and object). - - Takes text and a starting index, and returns either a Python list or - dictionary and the index of the next unparsed character. - - """ - if imax is None: - imax = len(txt) - i = self.skipws(txt, i, imax) - starti = i - if i >= imax or txt[i] not in '{[': - raise JSONDecodeError('composite object must start with "[" or "{"',txt[i:]) - if txt[i] == '[': - isdict = False - closer = ']' - obj = [] - else: - isdict = True - closer = '}' - obj = {} - i += 1 # skip opener - i = self.skipws(txt, i, imax) - - if i < imax and txt[i] == closer: - # empty composite - i += 1 - done = True - else: - saw_value = False # set to false at beginning and after commas - done = False - while i < imax: - i = self.skipws(txt, i, imax) - if i < imax and (txt[i] == ',' or txt[i] == closer): - c = txt[i] - i += 1 - if c == ',': - if not saw_value: - # no preceeding value, an elided (omitted) element - if isdict: - raise JSONDecodeError('can not omit elements of an object (dictionary)') - if self._allow_omitted_array_elements: - if self._allow_undefined_values: - obj.append( undefined ) - else: - obj.append( None ) - else: - raise JSONDecodeError('strict JSON does not permit omitted array (list) elements',txt[i:]) - saw_value = False - continue - else: # c == closer - if not saw_value and not self._allow_trailing_comma_in_literal: - if isdict: - raise JSONDecodeError('strict JSON does not allow a final comma in an object (dictionary) literal',txt[i-2:]) - else: - raise JSONDecodeError('strict JSON does not allow a final comma in an array (list) literal',txt[i-2:]) - done = True - break - - # Decode the item - if isdict and self._allow_nonstring_keys: - r = self.decodeobj(txt, i, identifier_as_string=True) - else: - r = self.decodeobj(txt, i, identifier_as_string=False) - if r: - if saw_value: - # two values without a separating comma - raise JSONDecodeError('values must be separated by a comma', txt[i:r[1]]) - saw_value = True - i = self.skipws(txt, r[1], imax) - if isdict: - key = r[0] # Ref 11.1.5 - if not isstringtype(key): - if isnumbertype(key): - if not self._allow_nonstring_keys: - raise JSONDecodeError('strict JSON only permits string literals as object properties (dictionary keys)',txt[starti:]) - else: - raise JSONDecodeError('object properties (dictionary keys) must be either string literals or numbers',txt[starti:]) - if i >= imax or txt[i] != ':': - raise JSONDecodeError('object property (dictionary key) has no value, expected ":"',txt[starti:]) - i += 1 - i = self.skipws(txt, i, imax) - rval = self.decodeobj(txt, i) - if rval: - i = self.skipws(txt, rval[1], imax) - obj[key] = rval[0] - else: - raise JSONDecodeError('object property (dictionary key) has no value',txt[starti:]) - else: # list - obj.append( r[0] ) - else: # not r - if isdict: - raise JSONDecodeError('expected a value, or "}"',txt[i:]) - elif not self._allow_omitted_array_elements: - raise JSONDecodeError('expected a value or "]"',txt[i:]) - else: - raise JSONDecodeError('expected a value, "," or "]"',txt[i:]) - # end while - if not done: - if isdict: - raise JSONDecodeError('object literal (dictionary) is not terminated',txt[starti:]) - else: - raise JSONDecodeError('array literal (list) is not terminated',txt[starti:]) - return obj, i - - def decode_javascript_identifier(self, name): - """Convert a JavaScript identifier into a Python string object. - - This method can be overriden by a subclass to redefine how JavaScript - identifiers are turned into Python objects. By default this just - converts them into strings. - - """ - return name - - def decodeobj(self, txt, i=0, imax=None, identifier_as_string=False, only_object_or_array=False): - """Intermediate-level JSON decoder. - - Takes a string and a starting index, and returns a two-tuple consting - of a Python object and the index of the next unparsed character. - - If there is no value at all (empty string, etc), the None is - returned instead of a tuple. - - """ - if imax is None: - imax = len(txt) - obj = None - i = self.skipws(txt, i, imax) - if i >= imax: - raise JSONDecodeError('Unexpected end of input') - c = txt[i] - - if c == '[' or c == '{': - obj, i = self.decode_composite(txt, i, imax) - elif only_object_or_array: - raise JSONDecodeError('JSON document must start with an object or array type only', txt[i:i+20]) - elif c == '"' or c == '\'': - obj, i = self.decode_string(txt, i, imax) - elif c.isdigit() or c in '.+-': - obj, i = self.decode_number(txt, i, imax) - elif c.isalpha() or c in'_$': - j = i - while j < imax and (txt[j].isalnum() or txt[j] in '_$'): - j += 1 - kw = txt[i:j] - if kw == 'null': - obj, i = None, j - elif kw == 'true': - obj, i = True, j - elif kw == 'false': - obj, i = False, j - elif kw == 'undefined': - if self._allow_undefined_values: - obj, i = undefined, j - else: - raise JSONDecodeError('strict JSON does not allow undefined elements',txt[i:]) - elif kw == 'NaN' or kw == 'Infinity': - obj, i = self.decode_number(txt, i) - else: - if identifier_as_string: - obj, i = self.decode_javascript_identifier(kw), j - else: - raise JSONDecodeError('unknown keyword or identifier',kw) - else: - raise JSONDecodeError('can not decode value',txt[i:]) - return obj, i - - - - def decode(self, txt): - """Decodes a JSON-endoded string into a Python object.""" - if self._allow_unicode_format_control_chars: - txt = self.strip_format_control_chars(txt) - r = self.decodeobj(txt, 0, only_object_or_array=not self._allow_any_type_at_start) - if not r: - raise JSONDecodeError('can not decode value',txt) - else: - obj, i = r - i = self.skipws(txt, i) - if i < len(txt): - raise JSONDecodeError('unexpected or extra text',txt[i:]) - return obj - - def encode(self, obj, nest_level=0): - """Encodes the Python object into a JSON string representation. - - This method will first attempt to encode an object by seeing - if it has a json_equivalent() method. If so than it will - call that method and then recursively attempt to encode - the object resulting from that call. - - Next it will attempt to determine if the object is a native - type or acts like a squence or dictionary. If so it will - encode that object directly. - - Finally, if no other strategy for encoding the object of that - type exists, it will call the encode_default() method. That - method currently raises an error, but it could be overridden - by subclasses to provide a hook for extending the types which - can be encoded. - - """ - chunks = [] - self.encode_helper(chunks, obj, nest_level) - return ''.join( chunks ) - - def encode_helper(self, chunklist, obj, nest_level): - #print 'encode_helper(chunklist=%r, obj=%r, nest_level=%r)'%(chunklist,obj,nest_level) - if hasattr(obj, 'json_equivalent'): - json = self.encode_equivalent( obj, nest_level=nest_level ) - if json is not None: - chunklist.append( json ) - return - if obj is None: - chunklist.append( self.encode_null() ) - elif obj is undefined: - if self._allow_undefined_values: - chunklist.append( self.encode_undefined() ) - else: - raise JSONEncodeError('strict JSON does not permit "undefined" values') - elif isinstance(obj, bool): - chunklist.append( self.encode_boolean(obj) ) - elif isinstance(obj, (int,long,float,complex)) or \ - (decimal and isinstance(obj, decimal.Decimal)): - chunklist.append( self.encode_number(obj) ) - elif isinstance(obj, basestring) or isstringtype(obj): - chunklist.append( self.encode_string(obj) ) - else: - self.encode_composite(chunklist, obj, nest_level) - - def encode_composite(self, chunklist, obj, nest_level): - """Encodes just dictionaries, lists, or sequences. - - Basically handles any python type for which iter() can create - an iterator object. - - This method is not intended to be called directly. Use the - encode() method instead. - - """ - #print 'encode_complex_helper(chunklist=%r, obj=%r, nest_level=%r)'%(chunklist,obj,nest_level) - try: - # Is it a dictionary or UserDict? Try iterkeys method first. - it = obj.iterkeys() - except AttributeError: - try: - # Is it a sequence? Try to make an iterator for it. - it = iter(obj) - except TypeError: - it = None - if it is not None: - # Does it look like a dictionary? Check for a minimal dict or - # UserDict interface. - isdict = hasattr(obj, '__getitem__') and hasattr(obj, 'keys') - compactly = self._encode_compactly - if isdict: - chunklist.append('{') - if compactly: - dictcolon = ':' - else: - dictcolon = ' : ' - else: - chunklist.append('[') - #print nest_level, 'opening sequence:', repr(chunklist) - if not compactly: - indent0 = ' ' * nest_level - indent = ' ' * (nest_level+1) - chunklist.append(' ') - sequence_chunks = [] # use this to allow sorting afterwards if dict - try: # while not StopIteration - numitems = 0 - while True: - obj2 = it.next() - if obj2 is obj: - raise JSONEncodeError('trying to encode an infinite sequence',obj) - if isdict and not isstringtype(obj2): - # Check JSON restrictions on key types - if isnumbertype(obj2): - if not self._allow_nonstring_keys: - raise JSONEncodeError('object properties (dictionary keys) must be strings in strict JSON',obj2) - else: - raise JSONEncodeError('object properties (dictionary keys) can only be strings or numbers in ECMAScript',obj2) - - # Encode this item in the sequence and put into item_chunks - item_chunks = [] - self.encode_helper( item_chunks, obj2, nest_level=nest_level+1 ) - if isdict: - item_chunks.append(dictcolon) - obj3 = obj[obj2] - self.encode_helper(item_chunks, obj3, nest_level=nest_level+2) - - #print nest_level, numitems, 'item:', repr(obj2) - #print nest_level, numitems, 'sequence_chunks:', repr(sequence_chunks) - #print nest_level, numitems, 'item_chunks:', repr(item_chunks) - #extend_list_with_sep(sequence_chunks, item_chunks) - sequence_chunks.append(item_chunks) - #print nest_level, numitems, 'new sequence_chunks:', repr(sequence_chunks) - numitems += 1 - except StopIteration: - pass - - if isdict and self._sort_dictionary_keys: - sequence_chunks.sort() # Note sorts by JSON repr, not original Python object - if compactly: - sep = ',' - else: - sep = ',\n' + indent - - #print nest_level, 'closing sequence' - #print nest_level, 'chunklist:', repr(chunklist) - #print nest_level, 'sequence_chunks:', repr(sequence_chunks) - extend_and_flatten_list_with_sep( chunklist, sequence_chunks, sep ) - #print nest_level, 'new chunklist:', repr(chunklist) - - if not compactly: - if numitems > 1: - chunklist.append('\n' + indent0) - else: - chunklist.append(' ') - if isdict: - chunklist.append('}') - else: - chunklist.append(']') - else: # Can't create an iterator for the object - json2 = self.encode_default( obj, nest_level=nest_level ) - chunklist.append( json2 ) - - def encode_equivalent( self, obj, nest_level=0 ): - """This method is used to encode user-defined class objects. - - The object being encoded should have a json_equivalent() - method defined which returns another equivalent object which - is easily JSON-encoded. If the object in question has no - json_equivalent() method available then None is returned - instead of a string so that the encoding will attempt the next - strategy. - - If a caller wishes to disable the calling of json_equivalent() - methods, then subclass this class and override this method - to just return None. - - """ - if hasattr(obj, 'json_equivalent') \ - and callable(getattr(obj,'json_equivalent')): - obj2 = obj.json_equivalent() - if obj2 is obj: - # Try to prevent careless infinite recursion - raise JSONEncodeError('object has a json_equivalent() method that returns itself',obj) - json2 = self.encode( obj2, nest_level=nest_level ) - return json2 - else: - return None - - def encode_default( self, obj, nest_level=0 ): - """This method is used to encode objects into JSON which are not straightforward. - - This method is intended to be overridden by subclasses which wish - to extend this encoder to handle additional types. - - """ - raise JSONEncodeError('can not encode object into a JSON representation',obj) - - -# ------------------------------ - -def encode( obj, strict=False, compactly=True, escape_unicode=False, encoding=None ): - """Encodes a Python object into a JSON-encoded string. - - If 'strict' is set to True, then only strictly-conforming JSON - output will be produced. Note that this means that some types - of values may not be convertable and will result in a - JSONEncodeError exception. - - If 'compactly' is set to True, then the resulting string will - have all extraneous white space removed; if False then the - string will be "pretty printed" with whitespace and indentation - added to make it more readable. - - If 'escape_unicode' is set to True, then all non-ASCII characters - will be represented as a unicode escape sequence; if False then - the actual real unicode character will be inserted. - - If no encoding is specified (encoding=None) then the output will - either be a Python string (if entirely ASCII) or a Python unicode - string type. - - However if an encoding name is given then the returned value will - be a python string which is the byte sequence encoding the JSON - value. As the default/recommended encoding for JSON is UTF-8, - you should almost always pass in encoding='utf8'. - - """ - import sys - encoder = None # Custom codec encoding function - bom = None # Byte order mark to prepend to final output - cdk = None # Codec to use - if encoding is not None: - import codecs - try: - cdk = codecs.lookup(encoding) - except LookupError: - cdk = None - - if cdk: - pass - elif not cdk: - # No built-in codec was found, see if it is something we - # can do ourself. - encoding = encoding.lower() - if encoding.startswith('utf-32') or encoding.startswith('utf32') \ - or encoding.startswith('ucs4') \ - or encoding.startswith('ucs-4'): - # Python doesn't natively have a UTF-32 codec, but JSON - # requires that it be supported. So we must decode these - # manually. - if encoding.endswith('le'): - encoder = utf32le_encode - elif encoding.endswith('be'): - encoder = utf32be_encode - else: - encoder = utf32be_encode - bom = codecs.BOM_UTF32_BE - elif encoding.startswith('ucs2') or encoding.startswith('ucs-2'): - # Python has no UCS-2, but we can simulate with - # UTF-16. We just need to force us to not try to - # encode anything past the BMP. - encoding = 'utf-16' - if not escape_unicode and not callable(escape_unicode): - escape_unicode = lambda c: (0xD800 <= ord(c) <= 0xDFFF) or ord(c) >= 0x10000 - else: - raise JSONEncodeError('this python has no codec for this character encoding',encoding) - - if not escape_unicode and not callable(escape_unicode): - if encoding and encoding.startswith('utf'): - # All UTF-x encodings can do the whole Unicode repertoire, so - # do nothing special. - pass - else: - # Even though we don't want to escape all unicode chars, - # the encoding being used may force us to do so anyway. - # We must pass in a function which says which characters - # the encoding can handle and which it can't. - def in_repertoire( c, encoding_func ): - try: - x = encoding_func( c, errors='strict' ) - except UnicodeError: - return False - return True - if encoder: - escape_unicode = lambda c: not in_repertoire(c, encoder) - elif cdk: - escape_unicode = lambda c: not in_repertoire(c, cdk[0]) - else: - pass # Let the JSON object deal with it - - j = JSON( strict=strict, compactly=compactly, escape_unicode=escape_unicode ) - - unitxt = j.encode( obj ) - if encoder: - txt = encoder( unitxt ) - elif encoding is not None: - txt = unitxt.encode( encoding ) - else: - txt = unitxt - if bom: - txt = bom + txt - return txt - - -def decode( txt, strict=False, encoding=None, **kw ): - """Decodes a JSON-encoded string into a Python object. - - If 'strict' is set to True, then those strings that are not - entirely strictly conforming to JSON will result in a - JSONDecodeError exception. - - The input string can be either a python string or a python unicode - string. If it is already a unicode string, then it is assumed - that no character set decoding is required. - - However, if you pass in a non-Unicode text string (i.e., a python - type 'str') then an attempt will be made to auto-detect and decode - the character encoding. This will be successful if the input was - encoded in any of UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE), - and of course plain ASCII works too. - - Note though that if you know the character encoding, then you - should convert to a unicode string yourself, or pass it the name - of the 'encoding' to avoid the guessing made by the auto - detection, as with - - python_object = demjson.decode( input_bytes, encoding='utf8' ) - - Optional keywords arguments must be of the form - allow_xxxx=True/False - or - prevent_xxxx=True/False - where each will allow or prevent the specific behavior, after the - evaluation of the 'strict' argument. For example, if strict=True - then by also passing 'allow_comments=True' then comments will be - allowed. If strict=False then prevent_comments=True will allow - everything except comments. - - """ - # Initialize the JSON object - j = JSON( strict=strict ) - for keyword, value in kw.items(): - if keyword.startswith('allow_'): - behavior = keyword[6:] - allow = bool(value) - elif keyword.startswith('prevent_'): - behavior = keyword[8:] - allow = not bool(value) - else: - raise ValueError('unknown keyword argument', keyword) - if allow: - j.allow(behavior) - else: - j.prevent(behavior) - - # Convert the input string into unicode if needed. - if isinstance(txt,unicode): - unitxt = txt - else: - if encoding is None: - unitxt = auto_unicode_decode( txt ) - else: - cdk = None # codec - decoder = None - import codecs - try: - cdk = codecs.lookup(encoding) - except LookupError: - encoding = encoding.lower() - decoder = None - if encoding.startswith('utf-32') \ - or encoding.startswith('ucs4') \ - or encoding.startswith('ucs-4'): - # Python doesn't natively have a UTF-32 codec, but JSON - # requires that it be supported. So we must decode these - # manually. - if encoding.endswith('le'): - decoder = utf32le_decode - elif encoding.endswith('be'): - decoder = utf32be_decode - else: - if txt.startswith( codecs.BOM_UTF32_BE ): - decoder = utf32be_decode - txt = txt[4:] - elif txt.startswith( codecs.BOM_UTF32_LE ): - decoder = utf32le_decode - txt = txt[4:] - else: - if encoding.startswith('ucs'): - raise JSONDecodeError('UCS-4 encoded string must start with a BOM') - decoder = utf32be_decode # Default BE for UTF, per unicode spec - elif encoding.startswith('ucs2') or encoding.startswith('ucs-2'): - # Python has no UCS-2, but we can simulate with - # UTF-16. We just need to force us to not try to - # encode anything past the BMP. - encoding = 'utf-16' - - if decoder: - unitxt = decoder(txt) - elif encoding: - unitxt = txt.decode(encoding) - else: - raise JSONDecodeError('this python has no codec for this character encoding',encoding) - - # Check that the decoding seems sane. Per RFC 4627 section 3: - # "Since the first two characters of a JSON text will - # always be ASCII characters [RFC0020], ..." - # - # This check is probably not necessary, but it allows us to - # raise a suitably descriptive error rather than an obscure - # syntax error later on. - # - # Note that the RFC requirements of two ASCII characters seems - # to be an incorrect statement as a JSON string literal may - # have as it's first character any unicode character. Thus - # the first two characters will always be ASCII, unless the - # first character is a quotation mark. And in non-strict - # mode we can also have a few other characters too. - if len(unitxt) > 2: - first, second = unitxt[:2] - if first in '"\'': - pass # second can be anything inside string literal - else: - if ((ord(first) < 0x20 or ord(first) > 0x7f) or \ - (ord(second) < 0x20 or ord(second) > 0x7f)) and \ - (not j.isws(first) and not j.isws(second)): - # Found non-printable ascii, must check unicode - # categories to see if the character is legal. - # Only whitespace, line and paragraph separators, - # and format control chars are legal here. - import unicodedata - catfirst = unicodedata.category(unicode(first)) - catsecond = unicodedata.category(unicode(second)) - if catfirst not in ('Zs','Zl','Zp','Cf') or \ - catsecond not in ('Zs','Zl','Zp','Cf'): - raise JSONDecodeError('the decoded string is gibberish, is the encoding correct?',encoding) - # Now ready to do the actual decoding - obj = j.decode( unitxt ) - return obj - -# end file diff --git a/cgi-bin/load_question.py b/cgi-bin/load_question.py index 1dc26abdf..b61f46562 100755 --- a/cgi-bin/load_question.py +++ b/cgi-bin/load_question.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.5 +#!/usr/bin/python2.6 # Online Python Tutor # https://github.com/pgbovine/OnlinePythonTutor/ diff --git a/cgi-bin/pg_logger.py b/cgi-bin/pg_logger.py index 80eab9784..673c3dbf6 100644 --- a/cgi-bin/pg_logger.py +++ b/cgi-bin/pg_logger.py @@ -28,7 +28,7 @@ # Python debugger imported via the bdb module), printing out the values # of all in-scope data structures after each executed instruction. -# Note that I've only tested this logger on Python 2.5, so it will +# Note that I've only tested this logger on Python 2.6, so it will # probably fail in subtle ways on other Python 2.X (and will DEFINITELY # fail on Python 3.X). diff --git a/cgi-bin/web_exec.py b/cgi-bin/web_exec.py index b7c397865..9debc60ec 100755 --- a/cgi-bin/web_exec.py +++ b/cgi-bin/web_exec.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.5 +#!/usr/bin/python2.6 # Online Python Tutor # https://github.com/pgbovine/OnlinePythonTutor/ @@ -31,8 +31,8 @@ # # Returns a complete JSON execution trace to the front-end. # -# This version uses Python 2.5 on the MIT CSAIL servers. -# (note that Python 2.4 doesn't work on CSAIL, but Python 2.5 does) +# This version uses Python 2.6 on the MIT CSAIL servers. +# (note that Python 2.4 doesn't work on CSAIL, but Python 2.6 does) # # If you want to run this script, then you'll need to change the # shebang line at the top of this file to point to your system's Python. @@ -50,9 +50,7 @@ import cgi import pg_logger -# Python 2.5 doesn't have a built-in json module, so I'm using a -# 3rd-party module. I think you can do 'import json' in Python >= 2.6 -import demjson +import json if LOG_QUERIES: import os, time, db_common @@ -60,7 +58,7 @@ def web_finalizer(output_lst): # use compactly=False to produce human-readable JSON, # except at the expense of being a LARGER download - output_json = demjson.encode(output_lst, compactly=True) + output_json = json.dumps(output_lst) # query logging is optional if LOG_QUERIES: diff --git a/cgi-bin/web_run_test.py b/cgi-bin/web_run_test.py index 6c67ebd5a..4d932f37a 100755 --- a/cgi-bin/web_run_test.py +++ b/cgi-bin/web_run_test.py @@ -1,4 +1,4 @@ -#!/usr/bin/python2.5 +#!/usr/bin/python2.6 # Online Python Tutor # https://github.com/pgbovine/OnlinePythonTutor/ @@ -33,9 +33,7 @@ import cgi import pg_logger -# Python 2.5 doesn't have a built-in json module, so I'm using a -# 3rd-party module. I think you can do 'import json' in Python >= 2.6 -import demjson +import json user_trace = None # the FULL user trace (without any IDs, though) expect_trace_final_entry = None @@ -67,7 +65,7 @@ def expect_script_finalizer(output_lst): # Crucial first line to make sure that Apache serves this data # correctly - DON'T FORGET THE EXTRA NEWLINES!!!: print "Content-type: text/plain; charset=iso-8859-1\n\n" - output_json = demjson.encode(ret, compactly=True) + output_json = json.dumps(ret) print output_json else: diff --git a/question.html b/question.html index 16fd8bf78..3a21e8cfd 100644 --- a/question.html +++ b/question.html @@ -202,7 +202,7 @@

This application supports the core Python 2.5 language, with no +href="http://docs.python.org/release/2.6/">Python 2.6 language, with no module imports or file I/O. It's meant to be used as a platform for creating programming tutorials, not for running or debugging production code. diff --git a/tutor.html b/tutor.html index 2027c9de5..33e9b8ec5 100644 --- a/tutor.html +++ b/tutor.html @@ -197,7 +197,7 @@

This application supports the core Python 2.5 language, with no +href="http://docs.python.org/release/2.6/">Python 2.6 language, with no module imports or file I/O. It's meant to be used as a platform for creating programming tutorials, not for running or debugging production code. From 588a148b40a4f3f7039546f8d7ad4ef403cb3490 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 16 Jul 2012 21:30:37 -0700 Subject: [PATCH 005/502] get rid of jquery.textarea.js --- jquery.textarea.js | 260 --------------------------------------------- question.html | 2 - tutor.html | 2 - 3 files changed, 264 deletions(-) delete mode 100644 jquery.textarea.js diff --git a/jquery.textarea.js b/jquery.textarea.js deleted file mode 100644 index cd8acd5e4..000000000 --- a/jquery.textarea.js +++ /dev/null @@ -1,260 +0,0 @@ -// include this file AFTER including jQuery - -/* - * Tabby jQuery plugin version 0.12 - * - * Ted Devito - http://teddevito.com/demos/textarea.html - * - * You should have received a copy of the GNU General Public License - * along with Easy Widgets. If not, see - * - * Plugin development pattern based on: http://www.learningjquery.com/2007/10/a-plugin-development-pattern - * - */ - -// create closure - -(function($) { - - // plugin definition - - $.fn.tabby = function(options) { - //debug(this); - // build main options before element iteration - var opts = $.extend({}, $.fn.tabby.defaults, options); - var pressed = $.fn.tabby.pressed; - - // iterate and reformat each matched element - return this.each(function() { - $this = $(this); - - // build element specific options - var options = $.meta ? $.extend({}, opts, $this.data()) : opts; - - $this.bind('keydown',function (e) { - var kc = $.fn.tabby.catch_kc(e); - if (16 == kc) pressed.shft = true; - /* - because both CTRL+TAB and ALT+TAB default to an event (changing tab/window) that - will prevent js from capturing the keyup event, we'll set a timer on releasing them. - */ - if (17 == kc) {pressed.ctrl = true; setTimeout("$.fn.tabby.pressed.ctrl = false;",1000);} - if (18 == kc) {pressed.alt = true; setTimeout("$.fn.tabby.pressed.alt = false;",1000);} - - if (9 == kc && !pressed.ctrl && !pressed.alt) { - e.preventDefault; // does not work in O9.63 ?? - pressed.last = kc; setTimeout("$.fn.tabby.pressed.last = null;",0); - process_keypress ($(e.target).get(0), pressed.shft, options); - return false; - } - - }).bind('keyup',function (e) { - if (16 == $.fn.tabby.catch_kc(e)) pressed.shft = false; - }).bind('blur',function (e) { // workaround for Opera -- http://www.webdeveloper.com/forum/showthread.php?p=806588 - if (9 == pressed.last) $(e.target).one('focus',function (e) {pressed.last = null;}).get(0).focus(); - }); - - }); - }; - - // define and expose any extra methods - $.fn.tabby.catch_kc = function(e) { return e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which; }; - $.fn.tabby.pressed = {shft : false, ctrl : false, alt : false, last: null}; - - // private function for debugging - function debug($obj) { - if (window.console && window.console.log) - window.console.log('textarea count: ' + $obj.size()); - }; - - function process_keypress (o,shft,options) { - var scrollTo = o.scrollTop; - //var tabString = String.fromCharCode(9); - - // gecko; o.setSelectionRange is only available when the text box has focus - if (o.setSelectionRange) gecko_tab (o, shft, options); - - // ie; document.selection is always available - else if (document.selection) ie_tab (o, shft, options); - - o.scrollTop = scrollTo; - } - - // plugin defaults - //$.fn.tabby.defaults = {tabString : String.fromCharCode(9)}; - // modified by pgbovine: - $.fn.tabby.defaults = {tabString : ' '}; - - function gecko_tab (o, shft, options) { - var ss = o.selectionStart; - var es = o.selectionEnd; - - // when there's no selection and we're just working with the caret, we'll add/remove the tabs at the caret, providing more control - if(ss == es) { - // SHIFT+TAB - if (shft) { - // check to the left of the caret first - //if ("\t" == o.value.substring(ss-options.tabString.length, ss)) { - // modified by pgbovine: - if (" " == o.value.substring(ss-options.tabString.length, ss)) { - o.value = o.value.substring(0, ss-options.tabString.length) + o.value.substring(ss); // put it back together omitting one character to the left - o.focus(); - o.setSelectionRange(ss - options.tabString.length, ss - options.tabString.length); - } - // then check to the right of the caret - else if ("\t" == o.value.substring(ss, ss + options.tabString.length)) { - o.value = o.value.substring(0, ss) + o.value.substring(ss + options.tabString.length); // put it back together omitting one character to the right - o.focus(); - o.setSelectionRange(ss,ss); - } - } - // TAB - else { - o.value = o.value.substring(0, ss) + options.tabString + o.value.substring(ss); - o.focus(); - o.setSelectionRange(ss + options.tabString.length, ss + options.tabString.length); - } - } - // selections will always add/remove tabs from the start of the line - else { - // split the textarea up into lines and figure out which lines are included in the selection - var lines = o.value.split("\n"); - var indices = new Array(); - var sl = 0; // start of the line - var el = 0; // end of the line - var sel = false; - for (var i in lines) { - el = sl + lines[i].length; - indices.push({start: sl, end: el, selected: (sl <= ss && el > ss) || (el >= es && sl < es) || (sl > ss && el < es)}); - sl = el + 1;// for "\n" - } - - // walk through the array of lines (indices) and add tabs where appropriate - var modifier = 0; - for (var i in indices) { - if (indices[i].selected) { - var pos = indices[i].start + modifier; // adjust for tabs already inserted/removed - // SHIFT+TAB - if (shft && options.tabString == o.value.substring(pos,pos+options.tabString.length)) { // only SHIFT+TAB if there's a tab at the start of the line - o.value = o.value.substring(0,pos) + o.value.substring(pos + options.tabString.length); // omit the tabstring to the right - modifier -= options.tabString.length; - } - // TAB - else if (!shft) { - o.value = o.value.substring(0,pos) + options.tabString + o.value.substring(pos); // insert the tabstring - modifier += options.tabString.length; - } - } - } - o.focus(); - var ns = ss + ((modifier > 0) ? options.tabString.length : (modifier < 0) ? -options.tabString.length : 0); - var ne = es + modifier; - o.setSelectionRange(ns,ne); - } - } - - function ie_tab (o, shft, options) { - var range = document.selection.createRange(); - - if (o == range.parentElement()) { - // when there's no selection and we're just working with the caret, we'll add/remove the tabs at the caret, providing more control - if ('' == range.text) { - // SHIFT+TAB - if (shft) { - var bookmark = range.getBookmark(); - //first try to the left by moving opening up our empty range to the left - range.moveStart('character', -options.tabString.length); - if (options.tabString == range.text) { - range.text = ''; - } else { - // if that didn't work then reset the range and try opening it to the right - range.moveToBookmark(bookmark); - range.moveEnd('character', options.tabString.length); - if (options.tabString == range.text) - range.text = ''; - } - // move the pointer to the start of them empty range and select it - range.collapse(true); - range.select(); - } - - else { - // very simple here. just insert the tab into the range and put the pointer at the end - range.text = options.tabString; - range.collapse(false); - range.select(); - } - } - // selections will always add/remove tabs from the start of the line - else { - - var selection_text = range.text; - var selection_len = selection_text.length; - var selection_arr = selection_text.split("\r\n"); - - var before_range = document.body.createTextRange(); - before_range.moveToElementText(o); - before_range.setEndPoint("EndToStart", range); - var before_text = before_range.text; - var before_arr = before_text.split("\r\n"); - var before_len = before_text.length; // - before_arr.length + 1; - - var after_range = document.body.createTextRange(); - after_range.moveToElementText(o); - after_range.setEndPoint("StartToEnd", range); - var after_text = after_range.text; // we can accurately calculate distance to the end because we're not worried about MSIE trimming a \r\n - - var end_range = document.body.createTextRange(); - end_range.moveToElementText(o); - end_range.setEndPoint("StartToEnd", before_range); - var end_text = end_range.text; // we can accurately calculate distance to the end because we're not worried about MSIE trimming a \r\n - - var check_html = $(o).html(); - $("#r3").text(before_len + " + " + selection_len + " + " + after_text.length + " = " + check_html.length); - if((before_len + end_text.length) < check_html.length) { - before_arr.push(""); - before_len += 2; // for the \r\n that was trimmed - if (shft && options.tabString == selection_arr[0].substring(0,options.tabString.length)) - selection_arr[0] = selection_arr[0].substring(options.tabString.length); - else if (!shft) selection_arr[0] = options.tabString + selection_arr[0]; - } else { - if (shft && options.tabString == before_arr[before_arr.length-1].substring(0,options.tabString.length)) - before_arr[before_arr.length-1] = before_arr[before_arr.length-1].substring(options.tabString.length); - else if (!shft) before_arr[before_arr.length-1] = options.tabString + before_arr[before_arr.length-1]; - } - - for (var i = 1; i < selection_arr.length; i++) { - if (shft && options.tabString == selection_arr[i].substring(0,options.tabString.length)) - selection_arr[i] = selection_arr[i].substring(options.tabString.length); - else if (!shft) selection_arr[i] = options.tabString + selection_arr[i]; - } - - if (1 == before_arr.length && 0 == before_len) { - if (shft && options.tabString == selection_arr[0].substring(0,options.tabString.length)) - selection_arr[0] = selection_arr[0].substring(options.tabString.length); - else if (!shft) selection_arr[0] = options.tabString + selection_arr[0]; - } - - if ((before_len + selection_len + after_text.length) < check_html.length) { - selection_arr.push(""); - selection_len += 2; // for the \r\n that was trimmed - } - - before_range.text = before_arr.join("\r\n"); - range.text = selection_arr.join("\r\n"); - - var new_range = document.body.createTextRange(); - new_range.moveToElementText(o); - - if (0 < before_len) new_range.setEndPoint("StartToEnd", before_range); - else new_range.setEndPoint("StartToStart", before_range); - new_range.setEndPoint("EndToEnd", range); - - new_range.select(); - - } - } - } - -// end of closure -})(jQuery); diff --git a/question.html b/question.html index 3a21e8cfd..59ac818b9 100644 --- a/question.html +++ b/question.html @@ -47,8 +47,6 @@ - - diff --git a/tutor.html b/tutor.html index 33e9b8ec5..2fe743869 100644 --- a/tutor.html +++ b/tutor.html @@ -52,8 +52,6 @@ - - From 7219a428a96c5b77a94efb88b7faa243e96ab286 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 16 Jul 2012 21:35:23 -0700 Subject: [PATCH 006/502] minor --- edu-python-tutor.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/edu-python-tutor.js b/edu-python-tutor.js index 66cf4e84e..7793f7818 100644 --- a/edu-python-tutor.js +++ b/edu-python-tutor.js @@ -47,7 +47,8 @@ function enterVisualizeMode(traceData) { $(document).ready(function() { eduPythonCommonInit(); // must call this first! - $("#pyInput").tabby(); // recognize TAB and SHIFT-TAB + // this doesn't work since we need jquery.textarea.js ... + //$("#pyInput").tabby(); // recognize TAB and SHIFT-TAB // be friendly to the browser's forward and back buttons From 43b6cc269a8290760583957816795cafe57360e7 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 16 Jul 2012 21:38:47 -0700 Subject: [PATCH 007/502] eliminated tabby calls --- edu-python-questions.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/edu-python-questions.js b/edu-python-questions.js index 545caab1f..7c1933a21 100644 --- a/edu-python-questions.js +++ b/edu-python-questions.js @@ -59,8 +59,9 @@ function resetTestResults() { $(document).ready(function() { eduPythonCommonInit(); // must call this first! - $("#actualCodeInput").tabby(); // recognize TAB and SHIFT-TAB - $("#testCodeInput").tabby(); // recognize TAB and SHIFT-TAB + // this doesn't work since we need jquery.textarea.js ... + //$("#actualCodeInput").tabby(); // recognize TAB and SHIFT-TAB + //$("#testCodeInput").tabby(); // recognize TAB and SHIFT-TAB // be friendly to the browser's forward and back buttons From 3a26ed29b853c99e5a29a0f46d46919c92868fc2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 16 Jul 2012 21:41:12 -0700 Subject: [PATCH 008/502] more getting rid of demjson --- cgi-bin/load_question.py | 4 ++-- cgi-bin/run_tests.py | 3 +-- cgi-bin/web_run_test.py | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/cgi-bin/load_question.py b/cgi-bin/load_question.py index b61f46562..38a42f827 100755 --- a/cgi-bin/load_question.py +++ b/cgi-bin/load_question.py @@ -31,7 +31,7 @@ from parse_questions import parseQuestionsFile -import cgi, os, demjson +import cgi, os form = cgi.FieldStorage() question_file = form['question_file'].value @@ -43,4 +43,4 @@ # Crucial first line to make sure that Apache serves this data # correctly - DON'T FORGET THE EXTRA NEWLINES!!!: print "Content-type: text/plain; charset=iso-8859-1\n\n" -print demjson.encode(parseQuestionsFile(fn)) +print json.dumps(parseQuestionsFile(fn)) diff --git a/cgi-bin/run_tests.py b/cgi-bin/run_tests.py index dc8f084d1..221bea85e 100644 --- a/cgi-bin/run_tests.py +++ b/cgi-bin/run_tests.py @@ -30,7 +30,6 @@ import os, sys, re, shutil, filecmp, optparse, difflib import pg_logger -import demjson # all tests are found in this directory: @@ -42,7 +41,7 @@ def execute(test_script): def my_finalizer(output_lst): outfile = open(test_script[:-3] + '.out', 'w') - output_json = demjson.encode(output_lst, compactly=False) + output_json = json.dumps(output_lst) print >> outfile, output_json pg_logger.exec_script_str(open(test_script).read(), my_finalizer, True) diff --git a/cgi-bin/web_run_test.py b/cgi-bin/web_run_test.py index 4d932f37a..abe4592a6 100755 --- a/cgi-bin/web_run_test.py +++ b/cgi-bin/web_run_test.py @@ -127,7 +127,7 @@ def really_finalize(): # Crucial first line to make sure that Apache serves this data # correctly - DON'T FORGET THE EXTRA NEWLINES!!!: print "Content-type: text/plain; charset=iso-8859-1\n\n" - output_json = demjson.encode(ret, compactly=True) + output_json = json.dumps(ret) print output_json From 83110c770f175956b152310408432b23392df15c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 16 Jul 2012 21:45:48 -0700 Subject: [PATCH 009/502] bah --- cgi-bin/load_question.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cgi-bin/load_question.py b/cgi-bin/load_question.py index 38a42f827..14d6522f8 100755 --- a/cgi-bin/load_question.py +++ b/cgi-bin/load_question.py @@ -31,7 +31,7 @@ from parse_questions import parseQuestionsFile -import cgi, os +import cgi, os, json form = cgi.FieldStorage() question_file = form['question_file'].value From 1b7086736220832c998410d0fb20bc6845389a07 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 16 Jul 2012 21:49:46 -0700 Subject: [PATCH 010/502] updated comments --- question.html | 2 +- tutor.html | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/question.html b/question.html index 59ac818b9..a60214513 100644 --- a/question.html +++ b/question.html @@ -211,7 +211,7 @@ repository and send bug reports, feedback, and suggestions to philip@pgbovine.net

-Copyright © 2010-2011 Philip Guo. All rights reserved. +Copyright © 2010-2012 Philip Guo. All rights reserved. diff --git a/tutor.html b/tutor.html index 2fe743869..6a39233d0 100644 --- a/tutor.html +++ b/tutor.html @@ -218,4 +218,3 @@ - From 76780996103149625d4ece3b4356c61f0f5136bf Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 20 Jul 2012 21:59:18 -0700 Subject: [PATCH 011/502] added some porting notes --- Python3-porting.txt | 88 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 Python3-porting.txt diff --git a/Python3-porting.txt b/Python3-porting.txt new file mode 100644 index 000000000..49f383a27 --- /dev/null +++ b/Python3-porting.txt @@ -0,0 +1,88 @@ +Notes from Peter Wentworth about porting to Python 3 +''' +Hi Philip - a bug in the code I sent you [NB, see: python3_viz.zip]! I +really kludged how I tested for classes vs instances in the file +p3_encoder that I sent you. At line 77 of that file, I used str(dat) +to convert the object to a string, and then did some hackish substring +searching. But if the user provides a __str__ method in the class, it +gets called instead, leading to trouble. + +My quick hack was to change the str(dat) call to repr(dat) (which won't +dispatch to user-written methods), but it doesn't solve the key issue +that I have not taken proper care to cleanly categorize +types/objects/classes in Python 3. + +Peter + +-----Original Message----- +From: George Wells +Sent: 21 September 2011 03:47 PM +To: Peter Wentworth +Subject: Python visualiser + +Hi Peter + +I just tried a simple example of a class in the visualiser and it is +generating an error for some reason (the code runs fine in the +interpreter). It was working fine until I added the second method +(__str__). + +The code is: + +-----8<----- +class Point: + def __init__ (self, x=0, y=0): + self.x=x + self.y=y + def __str__ (self): + return '({0}, {1})'.format(self.x, self.y) + +pt=Point(3,4) +print(pt) +-----8<----- + +Cheers, +George. +''' + +''' +Hi Philip + +And my last bug report was even sloppy. I use str(dat) at three +different places in that file, so it needs to be refactored a little +before changing the str() to repr() +''' + +Regarding how to port to Python 3 ... +''' +HI Philip + +I don't have anything to recommend. My experience is that there are +very few (end-user) things that are quite widely talked about in various +forums. Key ones for me is that print is now a function; range is +inherently lazy (like P2 xrange used to be), strings are no longer +ascii – they are all Unicode, input takes on the semantics of P2 +rawinput, and some methods to iterate over dictionaries are different. + +In the context of the visualizer, changing Python 2 to Python 3 wasn't +particularly complicated, except for the class/instance hurdle. P3 has +a more unified class-based type system, immediately evident if you ask +type(123) -- it now returns . Classes are themselves +instances of some MetaClass, with a thing called 'type' at the top of +the hierarchy. ('type' is an instance of 'type') So there isn't +really an easy end-user way to ask "is this a class or an instance?" – +it is both at the same time! There is some library that can expose +detailed internal attributes of things, but I chose not to use that. +Rather, if you ask for repr(obj) it turns it into some external string +that always has the word 'instance' in it for instances! So I got repr +to do the internal inspection and I made the decision with some string +matching. + +One of the more interesting new features in Python 3 is a function +annotation mechanism. The compiler ignores annotations. The idea +seems to be "lets allow annotations and see what creative things the +third-party tools do with them". See +http://www.python.org/dev/peps/pep-3107/ where they use annotations for +type signatures etc. +''' + From 252b10416a5725819fb3380644ca44e596bf4da2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 20 Jul 2012 22:29:02 -0700 Subject: [PATCH 012/502] bam --- Python3-porting.txt | 3 + cgi-bin/p4_encoder.py | 192 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 195 insertions(+) create mode 100755 cgi-bin/p4_encoder.py diff --git a/Python3-porting.txt b/Python3-porting.txt index 49f383a27..f03f55535 100644 --- a/Python3-porting.txt +++ b/Python3-porting.txt @@ -1,3 +1,6 @@ +See cgi-bin/p4_encoder.py for some proposed changes + + Notes from Peter Wentworth about porting to Python 3 ''' Hi Philip - a bug in the code I sent you [NB, see: python3_viz.zip]! I diff --git a/cgi-bin/p4_encoder.py b/cgi-bin/p4_encoder.py new file mode 100755 index 000000000..4c28ac3de --- /dev/null +++ b/cgi-bin/p4_encoder.py @@ -0,0 +1,192 @@ +#!/usr/bin/python3 -u + +# Python 3 version of encoder by David Pritchard, built upon work by Peter Wentworth +# (diff with pg_encoder.py, which is for Python 2) + + +# given an arbitrary piece of Python data, encode it in such a manner +# that it can be later encoded into JSON. +# http://json.org/ +# +# Format: +# * None, int, float, str, bool - unchanged (long is removed in Python 3) +# (json.dumps encodes these fine verbatim) +# * list - ['LIST', unique_id, elt1, elt2, elt3, ..., eltN] +# * tuple - ['TUPLE', unique_id, elt1, elt2, elt3, ..., eltN] +# * set - ['SET', unique_id, elt1, elt2, elt3, ..., eltN] +# * dict - ['DICT', unique_id, [key1, value1], [key2, value2], ..., [keyN, valueN]] +# * instance - ['INSTANCE', class name, unique_id, [attr1, value1], [attr2, value2], ..., [attrN, valueN]] +# * class - ['CLASS', class name, unique_id, [list of superclass names], [attr1, value1], [attr2, value2], ..., [attrN, valueN]] +# * circular reference - ['CIRCULAR_REF', unique_id] +# * other - [, unique_id, string representation of object] +# +# +# the unique_id is derived from id(), which allows us to explicitly +# capture aliasing of compound values + +# Key: real ID from id() +# Value: a small integer for greater readability, set by cur_small_id +real_to_small_IDs = {} +cur_small_id = 1 + +import re, types +#typeRE = re.compile("") # not used in Python 3 +classRE = re.compile("") +functionRE = re.compile("") # new case for Python 3 + +# When we find a and x is in this list, don't confuse the beginner by listing the inner details +native_types = ['int', 'float', 'str', 'tuple', 'list', 'set', 'dict', 'bool', 'NoneType', 'bytes', 'type', 'object'] + +def encode(dat, ignore_id=False): + + def append_attributes(ret, new_compound_obj_ids, dict): + """ Put attributes onto ret. """ + # traverse the __dict__ to grab attributes + # (filter out useless-seeming ones): + + user_attrs = sorted([e for e in dict.keys() + if e not in {'__doc__', '__module__', '__return__', '__locals__', + '__weakref__', '__dict__'} + ]) + for attr in user_attrs: + foo = [encode_helper(attr, new_compound_obj_ids), + encode_helper(dict[attr], new_compound_obj_ids)] + ret.append(foo) + + def encode_helper(dat, compound_obj_ids): + # primitive type + if dat is None or type(dat) in (int, float, str, bool): + return dat + # compound type + else: + my_id = id(dat) + + global cur_small_id + if my_id not in real_to_small_IDs: + if ignore_id: + real_to_small_IDs[my_id] = 99999 + else: + real_to_small_IDs[my_id] = cur_small_id + cur_small_id += 1 + + if my_id in compound_obj_ids: + return ['CIRCULAR_REF', real_to_small_IDs[my_id]] + + new_compound_obj_ids = compound_obj_ids.union([my_id]) + + typ = type(dat) + obj_as_string = object.__repr__(dat) + + my_small_id = real_to_small_IDs[my_id] + + if typ == list: + ret = ['LIST', my_small_id] + for e in dat: ret.append(encode_helper(e, new_compound_obj_ids)) + elif typ == tuple: + ret = ['TUPLE', my_small_id] + for e in dat: ret.append(encode_helper(e, new_compound_obj_ids)) + elif typ == set: + ret = ['SET', my_small_id] + for e in dat: ret.append(encode_helper(e, new_compound_obj_ids)) + elif typ == dict: + ret = ['DICT', my_small_id] + append_attributes(ret, new_compound_obj_ids, dat) + + elif typ == type: # its a class. What a mess they made of it! + superclass_names = [e.__name__ for e in dat.__bases__] + ret = ['CLASS', dat.__name__, my_small_id, superclass_names] + if dat.__name__ not in native_types: + if hasattr(dat, '__dict__'): + append_attributes(ret, new_compound_obj_ids, dat.__dict__) + + elif repr(typ)[:6] == "= 0: # is it an instance? + ret = ['INSTANCE', dat.__class__.__name__, my_small_id] + if hasattr(dat, '__dict__'): + append_attributes(ret, new_compound_obj_ids, dat.__dict__) + + else: + typeStr = repr(typ) + m = classRE.match(typeStr) + assert m, typ + ret = [m.group(1), my_small_id , obj_as_string] + + return ret + + return encode_helper(dat, set()) + + +if __name__ == '__main__': + + def test(actual, expected=0): + """ Compare the actual to the expected value, and print a suitable message. """ + import sys + linenum = sys._getframe(1).f_lineno # get the caller's line number. + if (expected == actual): + msg = "Test on line %s passed." % (linenum) + else: + msg = "Test on line %s failed. Expected '%s', but got '%s'." % (linenum, expected, actual) + print(msg) + + class P(): + p_attr1 = 123 + def p_method(self, x): + return 2*x + + class Q(P): + pass + + p1 = P() + q1 = Q() + + addr = 1 + + test(encode("hello"),"hello") + test(encode(123),123) + test(encode(123.45),123.45) + test(encode(132432134423143132432134423143),132432134423143132432134423143) + test(encode(False),False) + test(encode(None),None) + + + test(encode((1,2)), ['TUPLE', addr, 1, 2]) + + addr += 1 + test(encode([1,2]), ['LIST', addr, 1, 2]) + + addr += 1 + test(encode({1:'mon'}), ['DICT', addr, [1, 'mon']]) + + addr += 1 + test(encode(test), ['function', addr, 'test']) + + addr += 1 + test(encode(P), ['CLASS', 'P', addr, ['object'], ['p_attr1', 123], ['p_method', ['function', addr+1, 'p_method']]]) + + addr += 2 + test(encode(Q), ['CLASS', 'Q', addr, ['P']]) + + addr += 1 + test(encode(p1), ['INSTANCE', 'P', addr]) + + addr += 1 + test(encode(q1), ['INSTANCE', 'Q', addr]) + + addr += 1 + test(encode(min), ['builtin_function_or_method', addr, ''] ) + + addr += 1 + test(encode(range(1,3)), ['range', addr, 'range(1, 3)']) + + addr += 1 + test(encode({1,2}), ['SET', addr, 1, 2]) + + addr += 1 + p = [1,2,3] + p.append(p) # make a circular reference + + test(encode(p), ['LIST', addr, 1, 2, 3, ['CIRCULAR_REF', addr]]) + +# Need some new tests for z = type(123) + + + print(encode({"stdout": "", "func_name": "", "globals": {"sum": 0, "friends": ["LIST", 1, "Joe", "Bill"], "length": 3, "f": "Joe"}, "stack_locals": [], "line": 7, "event": "step_line"})) From cd12aff59f1d399910775c0db148ec494f2eb106 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 23 Jul 2012 21:23:46 -0700 Subject: [PATCH 013/502] added john's comments --- Python3-porting.txt | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Python3-porting.txt b/Python3-porting.txt index f03f55535..dca80e0fa 100644 --- a/Python3-porting.txt +++ b/Python3-porting.txt @@ -1,5 +1,15 @@ See cgi-bin/p4_encoder.py for some proposed changes +John DeNero's comments on 2012-07-23 +''' +Distinguishing whether +some x is a class or not in Python 3 should be performed via: + +isinstance(x, type) + +I don't think any sort of hack or repr comparison is required. +''' + Notes from Peter Wentworth about porting to Python 3 ''' From bdeda19540e3c318ddbbf070392628f382e12794 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 3 Aug 2012 22:29:16 -0700 Subject: [PATCH 014/502] checked in rudimentary "3.0" version of OPT, hosted on Google App Engine --- PyTutorGAE/app.yaml | 23 + PyTutorGAE/css/codemirror.css | 169 + PyTutorGAE/css/edu-python.css | 693 ++++ .../smoothness/jquery-ui-1.8.21.custom.css | 310 ++ .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin 0 -> 260 bytes .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin 0 -> 251 bytes .../images/ui-bg_flat_10_000000_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin 0 -> 104 bytes .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin 0 -> 125 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../ui-bg_gloss-wave_35_f6a828_500x100.png | Bin 0 -> 3762 bytes .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin 0 -> 90 bytes .../ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin 0 -> 129 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_228ef1_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ef8c08_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffd27a_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_ffffff_256x240.png | Bin 0 -> 4369 bytes .../ui-lightness/jquery-ui-1.8.21.custom.css | 310 ++ PyTutorGAE/example-code | 1 + PyTutorGAE/js/codemirror/codemirror.js | 3231 +++++++++++++++++ PyTutorGAE/js/codemirror/python.js | 338 ++ PyTutorGAE/js/d3.v2.min.js | 4 + PyTutorGAE/js/edu-python-tutor.js | 343 ++ PyTutorGAE/js/edu-python.js | 2534 +++++++++++++ PyTutorGAE/js/jquery-1.3.2.min.js | 19 + PyTutorGAE/js/jquery-ui-1.8.21.custom.min.js | 21 + PyTutorGAE/js/jquery.ba-bbq.min.js | 18 + .../js/jquery.jsPlumb-1.3.10-all-min.js | 1 + PyTutorGAE/pg_encoder.py | 174 + PyTutorGAE/pg_logger.py | 516 +++ PyTutorGAE/pythontutor.py | 67 + PyTutorGAE/tutor.html | 234 ++ example-code/aliasing.txt | 4 +- example-code/aliasing/aliasing1.txt | 2 + example-code/aliasing/aliasing2.txt | 2 + example-code/aliasing/aliasing3.txt | 7 + example-code/aliasing/aliasing4.txt | 2 + example-code/aliasing/aliasing5.txt | 3 + example-code/aliasing/aliasing6.txt | 7 + example-code/aliasing/aliasing7.txt | 5 + example-code/closures/closure1.txt | 7 + example-code/closures/closure2.txt | 15 + example-code/closures/closure3.txt | 10 + example-code/closures/closure4.txt | 8 + example-code/closures/closure5.txt | 10 + example-code/linked-lists/ll1.txt | 10 + example-code/linked-lists/ll2.txt | 15 + 48 files changed, 9111 insertions(+), 2 deletions(-) create mode 100644 PyTutorGAE/app.yaml create mode 100644 PyTutorGAE/css/codemirror.css create mode 100644 PyTutorGAE/css/edu-python.css create mode 100644 PyTutorGAE/css/smoothness/jquery-ui-1.8.21.custom.css create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-icons_222222_256x240.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-icons_228ef1_256x240.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-icons_ef8c08_256x240.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-icons_ffd27a_256x240.png create mode 100644 PyTutorGAE/css/ui-lightness/images/ui-icons_ffffff_256x240.png create mode 100644 PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css create mode 120000 PyTutorGAE/example-code create mode 100644 PyTutorGAE/js/codemirror/codemirror.js create mode 100644 PyTutorGAE/js/codemirror/python.js create mode 100644 PyTutorGAE/js/d3.v2.min.js create mode 100644 PyTutorGAE/js/edu-python-tutor.js create mode 100644 PyTutorGAE/js/edu-python.js create mode 100644 PyTutorGAE/js/jquery-1.3.2.min.js create mode 100644 PyTutorGAE/js/jquery-ui-1.8.21.custom.min.js create mode 100644 PyTutorGAE/js/jquery.ba-bbq.min.js create mode 100644 PyTutorGAE/js/jquery.jsPlumb-1.3.10-all-min.js create mode 100644 PyTutorGAE/pg_encoder.py create mode 100644 PyTutorGAE/pg_logger.py create mode 100644 PyTutorGAE/pythontutor.py create mode 100644 PyTutorGAE/tutor.html create mode 100644 example-code/aliasing/aliasing1.txt create mode 100644 example-code/aliasing/aliasing2.txt create mode 100644 example-code/aliasing/aliasing3.txt create mode 100644 example-code/aliasing/aliasing4.txt create mode 100644 example-code/aliasing/aliasing5.txt create mode 100644 example-code/aliasing/aliasing6.txt create mode 100644 example-code/aliasing/aliasing7.txt create mode 100644 example-code/closures/closure1.txt create mode 100644 example-code/closures/closure2.txt create mode 100644 example-code/closures/closure3.txt create mode 100644 example-code/closures/closure4.txt create mode 100644 example-code/closures/closure5.txt create mode 100644 example-code/linked-lists/ll1.txt create mode 100644 example-code/linked-lists/ll2.txt diff --git a/PyTutorGAE/app.yaml b/PyTutorGAE/app.yaml new file mode 100644 index 000000000..82d6eeb57 --- /dev/null +++ b/PyTutorGAE/app.yaml @@ -0,0 +1,23 @@ +application: google.com:pythontutor +version: 1 +runtime: python27 +api_version: 1 +threadsafe: false + +libraries: +- name: jinja2 + version: latest + +handlers: +- url: /js + static_dir: js + +- url: /css + static_dir: css + +- url: /example-code + static_dir: example-code + +- url: /.* + script: pythontutor.app + diff --git a/PyTutorGAE/css/codemirror.css b/PyTutorGAE/css/codemirror.css new file mode 100644 index 000000000..fb5b6d544 --- /dev/null +++ b/PyTutorGAE/css/codemirror.css @@ -0,0 +1,169 @@ +.CodeMirror { + line-height: 1em; + font-family: monospace; + + /* Necessary so the scrollbar can be absolutely positioned within the wrapper on Lion. */ + position: relative; + /* This prevents unwanted scrollbars from showing up on the body and wrapper in IE. */ + overflow: hidden; +} + +.CodeMirror-scroll { + overflow-x: auto; + overflow-y: hidden; + height: 300px; + /* This is needed to prevent an IE[67] bug where the scrolled content + is visible outside of the scrolling box. */ + position: relative; + outline: none; +} + +/* Vertical scrollbar */ +.CodeMirror-scrollbar { + float: right; + overflow-x: hidden; + overflow-y: scroll; + + /* This corrects for the 1px gap introduced to the left of the scrollbar + by the rule for .CodeMirror-scrollbar-inner. */ + margin-left: -1px; +} +.CodeMirror-scrollbar-inner { + /* This needs to have a nonzero width in order for the scrollbar to appear + in Firefox and IE9. */ + width: 1px; +} +.CodeMirror-scrollbar.cm-sb-overlap { + /* Ensure that the scrollbar appears in Lion, and that it overlaps the content + rather than sitting to the right of it. */ + position: absolute; + z-index: 1; + float: none; + right: 0; + min-width: 12px; +} +.CodeMirror-scrollbar.cm-sb-nonoverlap { + min-width: 12px; +} +.CodeMirror-scrollbar.cm-sb-ie7 { + min-width: 18px; +} + +.CodeMirror-gutter { + position: absolute; left: 0; top: 0; + z-index: 10; + background-color: #f7f7f7; + border-right: 1px solid #eee; + min-width: 2em; + height: 100%; +} +.CodeMirror-gutter-text { + color: #aaa; + text-align: right; + padding: .4em .2em .4em .4em; + white-space: pre !important; + cursor: default; +} +.CodeMirror-lines { + padding: .4em; + white-space: pre; + cursor: text; +} +.CodeMirror-lines * { + /* Necessary for throw-scrolling to decelerate properly on Safari. */ + pointer-events: none; +} + +.CodeMirror pre { + -moz-border-radius: 0; + -webkit-border-radius: 0; + -o-border-radius: 0; + border-radius: 0; + border-width: 0; margin: 0; padding: 0; background: transparent; + font-family: inherit; + font-size: inherit; + padding: 0; margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; +} + +.CodeMirror-wrap pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} +.CodeMirror-wrap .CodeMirror-scroll { + overflow-x: hidden; +} + +.CodeMirror textarea { + outline: none !important; +} + +.CodeMirror pre.CodeMirror-cursor { + z-index: 10; + position: absolute; + visibility: hidden; + border-left: 1px solid black; + border-right: none; + width: 0; +} +.cm-keymap-fat-cursor pre.CodeMirror-cursor { + width: auto; + border: 0; + background: transparent; + background: rgba(0, 200, 0, .4); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#6600c800, endColorstr=#4c00c800); +} +/* Kludge to turn off filter in ie9+, which also accepts rgba */ +.cm-keymap-fat-cursor pre.CodeMirror-cursor:not(#nonsense_id) { + filter: progid:DXImageTransform.Microsoft.gradient(enabled=false); +} +.CodeMirror pre.CodeMirror-cursor.CodeMirror-overwrite {} +.CodeMirror-focused pre.CodeMirror-cursor { + visibility: visible; +} + +div.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused div.CodeMirror-selected { background: #d7d4f0; } + +.CodeMirror-searching { + background: #ffa; + background: rgba(255, 255, 0, .4); +} + +/* Default theme */ + +.cm-s-default span.cm-keyword {color: #708;} +.cm-s-default span.cm-atom {color: #219;} +.cm-s-default span.cm-number {color: #164;} +.cm-s-default span.cm-def {color: #00f;} +.cm-s-default span.cm-variable {color: black;} +.cm-s-default span.cm-variable-2 {color: #05a;} +.cm-s-default span.cm-variable-3 {color: #085;} +.cm-s-default span.cm-property {color: black;} +.cm-s-default span.cm-operator {color: black;} +.cm-s-default span.cm-comment {color: #a50;} +.cm-s-default span.cm-string {color: #a11;} +.cm-s-default span.cm-string-2 {color: #f50;} +.cm-s-default span.cm-meta {color: #555;} +.cm-s-default span.cm-error {color: #f00;} +.cm-s-default span.cm-qualifier {color: #555;} +.cm-s-default span.cm-builtin {color: #30a;} +.cm-s-default span.cm-bracket {color: #cc7;} +.cm-s-default span.cm-tag {color: #170;} +.cm-s-default span.cm-attribute {color: #00c;} +.cm-s-default span.cm-header {color: blue;} +.cm-s-default span.cm-quote {color: #090;} +.cm-s-default span.cm-hr {color: #999;} +.cm-s-default span.cm-link {color: #00c;} + +span.cm-header, span.cm-strong {font-weight: bold;} +span.cm-em {font-style: italic;} +span.cm-emstrong {font-style: italic; font-weight: bold;} +span.cm-link {text-decoration: underline;} + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} diff --git a/PyTutorGAE/css/edu-python.css b/PyTutorGAE/css/edu-python.css new file mode 100644 index 000000000..7cb665972 --- /dev/null +++ b/PyTutorGAE/css/edu-python.css @@ -0,0 +1,693 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +/* +Color scheme ideas: + +Current scheme: pastel blue and yellow with a hint of red: + http://colorschemedesigner.com/#3N32mmmuew0w0 + +Primary Color: + 3D58A2 41507A 142B69 6F89D1 899CD1 +Secondary Color A: + EBF048 B1B456 989C17 F4F776 F5F798 +Secondary Color B: + F15149 B55B56 9D1E18 F87D76 F89D99 + + +Alternates: + +pastel green, yellow, and purple: + http://colorschemedesigner.com/#2P32PbX--w0w0 + + Primary Color: + A0FFA0 8ABF8A 34A634 B8FFB8 CBFFCB + Secondary Color A: + FFEFA0 BFB68A A69234 FFF3B8 FFF6CB + Secondary Color B: + BFABFF 9B90BF 5237A6 CFC0FF DCD1FF + + +pastel blue and yellow: + http://colorschemedesigner.com/#0W21TjruJw0w0 + +Primary Color: + F5C260 B89B64 9F741F FAD388 FADEA6 +Complementary Color: + 4A67A4 49597B 18326A 7C97D1 93A7D1 + + +*/ + +h1 { + font-weight: normal; + font-size: 20pt; + font-family: georgia, serif; + line-height: 1em; /* enforce single spacing so that Georgia works */ + + margin-top: 0px; + margin-bottom: 8px; +} + +h2 { + font-size: 12pt; + font-weight: normal; + font-family: georgia, serif; + line-height: 1.1em; /* enforce single spacing so that Georgia works */ + + margin-top: 2px; + margin-bottom: 20px; +} + + +body { + background-color: white; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 10pt; +} + +a { + color: #3D58A2; +} + +a:visited { + color: #3D58A2; +} + +a:hover { + color: #3D58A2; +} + +span { + padding: 0px; +} + +#pyInputPane { + margin-top: 20px; + margin-bottom: 20px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + +#codeInputPane { + margin-top: 5px; + font-size: 12pt; +} + +td#stack_td, +td#heap_td { + vertical-align:top; + font-size: 12pt; +} + +table#pyOutputPane { + padding: 15px; +} + +#dataViz { + margin-left: 30px; +} + +table.frameDataViz { + border-spacing: 0px; + font-size: 12pt; + margin-top: 5px; + margin-left: 15px; + background-color: #dddddd; + padding: 5px; +} + +table.frameDataViz td.varname { + text-align: right; + padding: 5px; + padding-right: 8px; + border-right: 1px dashed #888888; +} + +table.frameDataViz td.val { + padding-left: 8px; + padding-right: 5px; + + padding-top: 8px; + padding-bottom: 8px; +} + +div#pyCodeOutputDiv { + max-width: 550px; + max-height: 620px; + overflow: auto; + /*margin-bottom: 4px;*/ +} + +table#pyCodeOutput { + font-family: Andale mono, monospace; + font-size:12pt; + line-height:1.1em; + border-spacing: 0px; + border-top: 1px solid #999999; + padding-top: 3px; + border-bottom: 1px solid #999999; + margin-top: 6px; +} + +/* don't wrap lines within code output ... FORCE scrollbars to appear */ +table#pyCodeOutput td { + white-space: nowrap; +} + +table#pyCodeOutput .lineNo { + background-color:#FFFFFF; + color:#AAAAAA; + margin:0; + padding:0.2em; + padding-right:0.5em; + text-align:right; + width:2.1em; +} + +table#pyCodeOutput .cod { + /*font-weight: bold;*/ + margin-left: 3px; + padding-left: 7px; + text-align: left; /* necessary or else doesn't work properly in IE */ +} + +div#editCodeLinkDiv { + text-align: center; + margin-top: 12px; + margin-bottom: 4px; +} + +#editCodeLinkOnError { + color: #142B69; +} + + +#errorOutput { + background-color: #F87D76; + font-size: 12pt; + padding: 2px; + line-height: 1.5em; + margin-bottom: 4px; +} + +button.bigBtn { + font-size: 12pt; + padding: 5px; +} + +button.medBtn { + font-size: 12pt; + padding: 3px; +} + +button.smallBtn { + font-size: 10pt; + padding: 3px; +} + + + +/* VCR control buttons for stepping through execution */ + +#vcrControls { + margin-top: 10px; + margin-bottom: 15px; +} + +#vcrControls button { + margin-left: 5px; + margin-right: 5px; +} + +#pyStdout { + border: 1px solid #999999; + font-size: 12pt; + padding: 4px; + font-family: Andale mono, monospace; +} + + +.vizFrame { + margin-bottom: 20px; + padding-left: 8px; + border-left: 2px solid #cccccc; +} + + +/* Python data value rendering */ + +.nullObj { + color: #555555; + font-size: 9pt; +} + +.numberObj { + font-size: 10pt; +} + +.boolObj { + font-size: 10pt; +} + +.stringObj { + /* don't add a color since strings need to be rendered against various backgrounds */ + font-family: Andale mono, monospace; + font-size: 10pt; +} + +.keyObj { + font-size: 10pt; +} + +.customObj { + font-family: Andale mono, monospace; + /*font-style: italic;*/ + font-size: 10pt; +} + +.funcObj { + font-family: Andale mono, monospace; + /*font-style: italic;*/ + font-size: 10pt; +} + +.retval, +.returnWarning { + font-size: 9pt; +} + +.returnWarning { + padding-top: 10px; + color: #9d1e18; +} + + +table.listTbl { + border: 0px solid black; + background-color: #F5F798; + border-spacing: 0px; +} + + +table.listTbl td.listHeader, +table.tupleTbl td.tupleHeader { + padding-left: 5px; + padding-top: 3px; + font-size: 8pt; + color: #666666; + text-align: left; + border-left: 1px solid #555555; +} + +table.tupleTbl { + background-color: #F5F798; + border-spacing: 0px; + color: black; + + border-bottom: 1px solid #555555; /* must match td.tupleHeader border */ + border-top: 1px solid #555555; /* must match td.tupleHeader border */ + border-right: 1px solid #555555; /* must match td.tupleHeader border */ +} + + +table.listTbl td.listElt { + border-bottom: 1px solid #555555; /* must match td.listHeader border */ + border-left: 1px solid #555555; /* must match td.listHeader border */ +} + +table.tupleTbl td.tupleElt { + border-left: 1px solid #555555; /* must match td.tupleHeader border */ +} + +table.listTbl td.listElt, +table.tupleTbl td.tupleElt { + padding-top: 0px; + padding-bottom: 8px; + padding-left: 10px; + padding-right: 10px; + vertical-align: bottom; +} + +table.setTbl { + border: 1px solid #555555; + background-color: #F5F798; + border-spacing: 0px; + text-align: center; +} + +table.setTbl td.setElt { + padding: 8px; +} + + +table.dictTbl { + border: 1px solid #555555; + border-collapse: collapse; + border-spacing: 1px; +} + +table.dictTbl tr.dictEntry { + border: 1px #111111 solid; +} + +table.dictTbl td.dictKey, +table.instTbl td.instKey { + background-color: #ffffff; +} + +table.dictTbl, +table.dictTbl td.dictVal, +table.instTbl, +table.instTbl td.instVal { + background-color: #F5F798; +} + + +table.dictTbl td.dictKey, +table.classTbl td.classKey, +table.instTbl td.instKey { + padding-top: 8px; + padding-bottom: 8px; + padding-left: 8px; + padding-right: 8px; + + text-align: right; + vertical-align: center; +} + +table.classTbl td.classKey { + color: #dddddd; +} + +table.classTbl { + background-color: #dddddd; + border-collapse: collapse; + border-spacing: 1px; +} + +table.classTbl tr.classEntry { + border: 1px #777777 solid; +} + +table.classTbl td.classKey { + background-color: #222222; +} + +table.classTbl td.classVal { + background-color: #ffffff; +} + + +table.instTbl { + border-collapse: collapse; + border-spacing: 1px; +} + +table.instTbl tr.instEntry { + border: 1px #555555 solid; +} + + +table.dictTbl td.dictVal, +table.classTbl td.classVal, +table.instTbl td.instVal { + padding-top: 10px; + padding-bottom: 10px; + padding-right: 10px; + padding-left: 8px; + vertical-align: center; +} + + + + +.typeLabel { + font-size: 8pt; + color: #222222; + margin-bottom: 1px; +} + +td.dictKey .typeLabel { + color: #eeeeee; +} + +.aliasLabel { + font-size: 10pt; + color: #222222; +} + +#footer { + color: #666666; + font-size: 9pt; + border-top: 1px solid #bbbbbb; + padding-top: 5px; + margin-top: 5px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + + +/* new stuff added for Online Python Tutor "2.0" release */ + +div#stack { + float: left; + padding-left: 10px; + padding-right: 30px; + border-right: 1px dashed #bbbbbb; +} + +div.stackFrame, div.zombieStackFrame { + background-color: #ffffff; + margin-bottom: 15px; + padding: 2px; + padding-left: 6px; + padding-right: 6px; + padding-bottom: 4px; + font-size: 11pt; + border-left: 2px solid #666666; +} + +div.zombieStackFrame { + border-left: 1px dotted #aaaaaa; /* make zombie borders thinner */ + color: #aaaaaa; +} + +div.highlightedStackFrame { + background-color: #dddddd; + border-left: 2px solid #F15149; +} + +div.stackFrameHeader { + font-family: Andale mono, monospace; + font-size: 10pt; + margin-top: 4px; + margin-bottom: 3px; +} + +td.stackFrameVar { + text-align: right; + padding-right: 8px; + padding-top: 3px; + padding-bottom: 3px; +} + +td.stackFrameValue { + text-align: left; + border-bottom: 1px solid #aaaaaa; + border-left: 1px solid #aaaaaa; + + padding-top: 3px; + padding-left: 3px; + padding-bottom: 3px; +} + +.stackFrameVarTable tr { + +} + +.stackFrameVarTable { + text-align: right; + padding-top: 3px; + + /* right-align the table */ + margin-left: auto; + margin-right: 0px; +} + +div#heap { + float: left; + padding-left: 30px; +} + +td.toplevelHeapObject { + padding-left: 0px; + padding-right: 20px; +} + +table.heapRow { + margin-bottom: 10px; +} + +div.heapObject { + padding-left: 2px; /* leave a TINY amount of room for connector endpoints */ +} + +div#stackHeader { + margin-bottom: 15px; + text-align: right; +} + +div#heapHeader { + /*margin-top: 2px; + margin-bottom: 13px;*/ + margin-bottom: 15px; +} + +div#stackHeader, +div#heapHeader { + color: #333333; + font-size: 10pt; +} + + +/* styles for Online Python Tutor questions site */ + +#questionsHeaderPane { + text-align: left; + margin-bottom: 15px; + width: 650px; + border-bottom: 1px solid #bbbbbb; +} + +.questionsHeaderStmt { + margin-bottom: 5px; +} + +.questionsHeaderTitle { + margin-bottom: 5px; + font-weight: bold; + font-size: 12pt; +} + +#submittedCodeRO { + font-size: 10pt; + font-family: Andale mono, monospace; + padding: 4px; + margin-top: 5px; +} + +table#gradeMatrix { + margin-top: 12px; +} + +table#gradeMatrix thead { + font-weight: bold; + border: solid; +} + +table#gradeMatrix thead td.statusCell { + padding-left: 18px; /* to line up with smiley faces */ +} + +table#gradeMatrix td.testInputCell, +table#gradeMatrix td.testOutputCell { + padding-right: 25px; + padding-bottom: 10px; + vertical-align: middle; +} + +table#gradeMatrix tbody td.statusCell, +table#gradeMatrix tbody td.expectedCell { + padding-left: 12px; + padding-bottom: 10px; + vertical-align: middle; +} + +td.testInputVarnameCell, +td.testOutputVarnameCell { + padding-right: 2px; + text-align: right; +} + +td.testInputValCell, +td.testOutputValCell { + padding-right: 5px; +} + +pre#submittedCodePRE { + font-size: 10pt; + font-family: Andale mono, monospace; + background-color: #dddddd; + padding: 5px; +} + +div#submittedSolutionDisplay { + width: 650px; /* to line up with questionsHeaderPane */ + text-align: left; + font-size: 12pt; + margin-bottom: 20px; +} + +#gradeSummary { + margin-top: 12px; +} + +#pyGradingPane { + margin-bottom: 20px; +} + + +#executionSlider { + /*width: 900px;*/ + width: 500px; + margin-top: 10px; + margin-bottom: 5px; +} + +#executionSliderCaption { + font-size: 8pt; + color: #666666; + margin-top: 15px; +} + +#executionSliderFooter { + margin-top: -7px; /* make it butt up against #executionSlider */ +} + +#sliderOverlay { + fill: #F15149; +} + diff --git a/PyTutorGAE/css/smoothness/jquery-ui-1.8.21.custom.css b/PyTutorGAE/css/smoothness/jquery-ui-1.8.21.custom.css new file mode 100644 index 000000000..737a94d4f --- /dev/null +++ b/PyTutorGAE/css/smoothness/jquery-ui-1.8.21.custom.css @@ -0,0 +1,310 @@ +/*! + * jQuery UI CSS Framework 1.8.21 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } +.ui-helper-clearfix:after { clear: both; } +.ui-helper-clearfix { zoom: 1; } +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/*! + * jQuery UI CSS Framework 1.8.21 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } +.ui-widget-content a { color: #222222; } +.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } +.ui-widget-header a { color: #222222; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } +.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*! + * jQuery UI Slider 1.8.21 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; } \ No newline at end of file diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..954e22dbd99e8c6dd7091335599abf2d10bf8003 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^8X(NU1|)m_?Z^dEr#)R9Ln2z=UU%d=WFXS=@V?HT z#xG*`>Yvsgk=}99w^d^D^d*@m74oMo<%#FcopJf?u00-~YVKV2wzrI*_R6;UORMea zBFVSEnN~eiVA6V&z`E)YLz5Aok^D)In}Yn=OzDpgR5Wv0XfT8pOkmV{sKAJ-PO9#T zZK}IXj&Q-V!U)!LcB_3K0&C*{ literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png new file mode 100644 index 0000000000000000000000000000000000000000..64ece5707d91a6edf9fad4bfcce0c4dbcafcf58d GIT binary patch literal 251 zcmVbvPcjKS|RKP(6sDcCAB(_QB%0978a<$Ah$!b|E zwn;|HO0i8cQj@~)s!ajF0S002ovPDHLkV1oEp BYH0uf literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/PyTutorGAE/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..abdc01082bf3534eafecc5819d28c9574d44ea89 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQY-ImG zFPf9b{J;c_6SHRK%WcbN_hZpM=(Ry;4Rxv2@@2Y=$K57eF$X$=!PC{xWt~$(69B)$ BI)4BF literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/PyTutorGAE/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..9b383f4d2eab09c0f2a739d6b232c32934bc620b GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour1U*q978O6-yYw{%b*}|_(02F z@qbE9)0CJMo;*v*PWv`Vh2h6EmG8IS-Cm{3U~` zFlmZ}YMcJY=eo?o%*@I?2`NblNeMudl#t?{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/PyTutorGAE/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png new file mode 100644 index 0000000000000000000000000000000000000000..39d5824d6af5456f1e89fc7847ea3599ea5fd815 GIT binary patch literal 3762 zcmb_eYgiKKwx-=Q?Pdi0+w!yaC|_1uvA>yaxz|iX3eBv#HR0ASmSVIKMS&kf`CSAV4g0DJLgPkRO79xj%J<(hH6`bTGj zrr^$JeiHJI?;s&<5pRw-^kj}=E;X0OX+pgz+f5GVt0NQv_gbu0>-8J+F$O>HpW?Lx z+YFO`CV&6VV9fsEwG#js0_-|v*!ujZ*M=jfo457?0Do-z<^}+8bI+qk+W~+$zz%Z& z;L7&@&ns`l8Ofh*WdU0pO%RP^?Xa_h7I}7K#}4Xt`s%-(m-enaPWX$O&- zX~a1aOzn?!r?5wJVBNPJ_o8-(9Fz<_c1LYGxUl(E+Wdx?wkNHH2T%eWq9Kz00h#RB zYKI~=a<9_QqC^n<>hyWlS66waWgyAP#t&TfTWP=Sxa)ukRY%j7WH}(@r=B^W_;b&M zRzPYsb*j^Kou%%`K6VP+dKtR@x~qEHq4rXMxoX-gcSf&->lMY%TMXF!Gw_A)(tp6} z2A%kN3twbr%KyUrrmw24V3d%wzK<-q(M;MTr41}un`P!!xejADEv_CJ{CTif907B& zEP`pDJIZHVgnmxh$EZnBOUxz~Ap+ZzKbFmg39_n-)$wY!Q@i~5aGmHbN7&*gkq9zWgV|2(Zhxl zoDqJp&MxW(qX#C@oF8L)*r$RdSjVFSc$%z?*9%YoZ6sOZ!vtxXtBM<*r82vyC}_Eiz1PJ2L$bttko`=+fH{Ne@G#lMDxkKt_y)O(J5&Ak)w-I znm!vzYX3$kLDG$hOp-KJg~7}M;73BFWA{!a61fe?NJkjR_}Xw+*`O0=AGg7&dUA`A?9`whW zM{fkFf`G`P^9j*|-q9KLvS<191z9a^mK3Lss}W8O=sZ}N$V4Fh*SWF5NbZQ>p{0>$ z0pe}d$*s!y*R&NSXbjmld6{4Y;O89MuDTK0Hn0C?QdL9z1qGegXs! z7$MIGkPkwdHF2os-Z-e85B?5An>yc|m<}>!Iirg%H-%F11XY{{>@kgL>a#6fM9JzBE&an&F>eWh|b0^kJ zNBM5*nCa~(xwn~rG~>GSG9mz3h z9F~64y}giIrz^lfl|_5HpUsG}?Wpr*&f?bS=|9biqivN)-a~u>uK<{Lfcng{663QL zLXzO@*N5)q4C=j6E8nC+P%lEwI#~0wkt;M4Y8!+DYzN2rBuYao1*HRIa^NC9nFeep z+ns5$X9Bh48S-`ss!k&!J#Ddd=j1O-9}?`v(B|>R7wD97BV;nK~quUHx^mj^G6K2GZ1*uSN?iLm!7vHB7_1^TGbKhmnK+K`GYA zocp2=on8LxJH^`7^1ch0ft(MTU$vJB!R@gQ^R`qoX>(=iY#u++3K>oqSpG={?#YVw zp3m99FXk^~<6#X9X1oKYXEH%8t2btG65(u0zF-J)^>8dj0Evc+9_Bd^Y)k9AfW~FV z%iDV(ClS6)TC7eVzh{ml;p4cx8)$TV&qhRWp+dqiw>i32?1;5d>HLrNj=^OdJ<}L) zWxqw8aFI<~_TkMDQHS?`z+KQ?+{ASoy%}RBu6i9?BXbh%OEx1OuZ}?n(VjrT(!B1; zQ!#WA0NBx=^6rJrFVsDCuT4)OTGzZ3$Z4Yqz z&c9+7%g!%zxtv#p2fhHbo98KBwfE&Y(&2#=}qEEU`ECEjlCp=X^_tIoMx>%kBT5k)^c=zyV5w3 zc>DLKY6%=y0igWi9B@4hB}bR6K|+jYBt+}i6Ld|b`*s62c6Ge?zGYvdW)=p90~$Ad zxGB>c<3Dy~hPJ#vNXierOl41xBn_0L<5NhK6JO-LvtS&Z{xjGKfIC6*9%*?tv*?+! zv;Q{?mHN2b|3DEJO}R9w11ZT5QVC(H0u|0n9cVK_@2r%C<)OnZ(3aS0Ux^6G$ja*< z9R~o~9XjhPL)w@vYi6r;H$tR>wW`0-Z&Qed`X0LZY9-~mfso!@dt?5Q;@|K6$mAB& z$J41&y)<{N;QATPeU}BC{lM_@-LlQ2hjX;}6~qdglT zGm%qJm*F^in=w*?j;@C_PCMnXK5Fd^wXV**pZOdS1KbSJsC~s#R;tmXIMb` zHB>sxQg&E5Yf@}d#~Z9D4R{}ZpLm7S=bY0x#k<=H?=R+=W$=Bm2aU*n z)qgD*0#4>GGlHhQ`bx#k=Njc;+9D@{F5`xI^tMkBf{XIzwB=b9KbuuLF7jMTR~Mwt zN#!)9J4&^V@JRe9Y!b2!;$rCLPWZfG`C;Qz`u~TJdCzv->e`=R8uHX_2{Fp&pWJ*h z#A60&bY(j(^P@t_`_pktBV7{tFVoeNWlNA|zgNr&DMjJ_!k2%2s2~F@la$M6k%hWi z7}}hoDuoaN7?lchVk@4DunpEIS$72&uuF&F;&4uhC$L)6IzHHUryR9emzpxwsRXmj zfc}pI#oRCB7Y1;t=*58Gsv7x3PGuW^spn6V&dWf#?*TQ0(|*rr=EeE1o~y1wyQi%)e*oX6iX@$m0F1RtKUT0vgg!8^fWhYLqS zF@EOpFld7>f^kprb~YwMq=^<e|gw?QFyf8ck|ZC^>)3c`b$^C>jCB4Fne_1e$Cqt=4Ud#K~~8Nfa91W zwk17&D?X?4FRzR+5qCiIqPf0};K4$tW$}l~A?u_E=JSe;*f_DO>r{z=U4_<)dY)M! z7O#mizC+GN&#;)k)vkBUS@fZesb{v?YuFlCPRjsT5bxB4@+sqdq}xvvBhTngZ(N1LUCS-ei=5sgE-Tbc z7HK+A_O23MP@sUoc?I?*ZB|F)&%us|2O$#G7V$6z zq>G%6!cu7OEf+_#^A=23Hd6Db9-yK*NQ#S+kjJI7 zhLiLz{>zKKtHH>H;B-cALzj`>@+-~?X2aP7ypf9WMf8q0m)wS!Nkf+&R&&zEjFOUx zlq^>v#VAq}=)?dKRMe+010g9O;qAiaTA4dV+==mw%i3Re)DwZ$Wd5CK1m4Ivy&&Ef zO8W!SpcgA>zfTGAE!{IPJMhdZ`T4{K#7ndDT8K2&*jf=J8O>H*iDJ}ZK}z|$C3U62 z$nZhk4v$QIYzMaV+0`B8S!=9RSYzi*QG#tp>ZY|lY_`}A-zI7)(tV$B9G-tC#zt8m zre~pD7oIFkmIAM=s zw+Iili%nSC?yks)t~q4lTlZW(#5^yUV@+^KvIuQzZDO^*TBz!j#nX%*uiW|{x9q0w literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/PyTutorGAE/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..f1273672d253263b7564e9e21d69d7d9d0b337d9 GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^j6j^i!3HGVb)pi0l%l7LV~E7mxPQ=F85a&M@g_{ d|GeK{$Y5lo%PMu^>wln`44$rjF6*2UngE4^EGqy2 literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/images/ui-icons_222222_256x240.png b/PyTutorGAE/css/ui-lightness/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..b273ff111d219c9b9a8b96d57683d0075fb7871a GIT binary patch literal 4369 zcmd^?`8O2)_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~GmPmYTG^FX}c% zlGE{DS1Q;~I7-6ze&TN@+F-xsI6sd%SwK#*O5K|pDRZqEy< zJg0Nd8F@!OxqElm`~U#piM22@u@8B<moyKE%ct`B(jysxK+1m?G)UyIFs1t0}L zemGR&?jGaM1YQblj?v&@0iXS#fi-VbR9zLEnHLP?xQ|=%Ihrc7^yPWR!tW$yH!zrw z#I2}_!JnT^(qk)VgJr`NGdPtT^dmQIZc%=6nTAyJDXk+^3}wUOilJuwq>s=T_!9V) zr1)DT6VQ2~rgd@!Jlrte3}}m~j}juCS`J4(d-5+e-3@EzzTJNCE2z)w(kJ90z*QE) zBtnV@4mM>jTrZZ*$01SnGov0&=A-JrX5Ge%Pce1Vj}=5YQqBD^W@n4KmFxxpFK`uH zP;(xKV+6VJ2|g+?_Lct7`uElL<&jzGS8Gfva2+=8A@#V+xsAj9|Dkg)vL5yhX@~B= zN2KZSAUD%QH`x>H+@Ou(D1~Pyv#0nc&$!1kI?IO01yw3jD0@80qvc?T*Nr8?-%rC8 z@5$|WY?Hqp`ixmEkzeJTz_`_wsSRi1%Zivd`#+T{Aib6-rf$}M8sz6v zb6ERbr-SniO2wbOv!M4)nb}6UVzoVZEh5kQWh_5x4rYy3c!871NeaM(_p=4(kbS6U#x<*k8Wg^KHs2ttCz<+pBxQ$Z zQMv;kVm5_fF_vH`Mzrq$Y&6u?j6~ftIV0Yg)Nw7JysIN_ z-_n*K_v1c&D}-1{NbBwS2h#m1y0a5RiEcYil+58$8IDh49bPnzE7R8In6P%V{2IZU z7#clr=V4yyrRe@oXNqbqo^^LvlLE?%8XaI&N(Np90-psU}7kqmbWk zZ;YBwJNnNs$~d!mx9oMGyT( znaBoj0d}gpQ^aRr?6nW)$4god*`@Uh2e+YpS@0(Mw{|z|6ko3NbTvDiCu3YO+)egL z>uW(^ahKFj>iJ-JF!^KhKQyPTznJa;xyHYwxJgr16&Wid_9)-%*mEwo{B_|M9t@S1 zf@T@q?b2Qgl!~_(Roe;fdK)y|XG0;ls;ZbT)w-aOVttk#daQcY7$cpY496H*`m@+L zeP#$&yRbBjFWv}B)|5-1v=(66M_;V1SWv6MHnO}}1=vby&9l+gaP?|pXwp0AFDe#L z&MRJ^*qX6wgxhA_`*o=LGZ>G_NTX%AKHPz4bO^R72ZYK}ale3lffDgM8H!Wrw{B7A z{?c_|dh2J*y8b04c37OmqUw;#;G<* z@nz@dV`;7&^$)e!B}cd5tl0{g(Q>5_7H^@bEJi7;fQ4B$NGZerH#Ae1#8WDTH`iB&) zC6Et3BYY#mcJxh&)b2C^{aLq~psFN)Q1SucCaBaBUr%5PYX{~-q{KGEh)*;n;?75k z=hq%i^I}rd;z-#YyI`8-OfMpWz5kgJE3I!3ean6=UZi!BxG7i(YBk? z02HM7wS0)Wni{dWbQMRtd-A)_Az!t>F;IwWf~!*)-Az4}yryNkz&9)w>ElA80Oc`6 zHo#9H!Y3*Qx9n@Jn)!w6G^hb;e_n8zpIyXCN`JFkPc)^Q?2MsLNFhMgrcZI-<#1ne zjH;KFf?4eAT9mQZ}ZfHLGA#d%s;SZK4p0FwZT2S^{ zQ2BG1xJsbK6?yrHTjJi|5C0u=!|r!?*4FL%y%3q#(d+e>b_2I9!*iI!30}42Ia0bq zUf`Z?LGSEvtz8s``Tg5o_CP(FbR0X$FlE0yCnB7suDPmI2=yOg^*2#cY9o`X z;NY-3VBHZjnVcGS){GZ98{e+lq~O$u6pEcgd0CrnIsWffN1MbCZDH<7c^hv+Z0Ucf0{w zSzi^qKuUHD9Dgp0EAGg@@$zr32dQx>N=ws`MESEsmzgT2&L;?MSTo&ky&!-JR3g~1 zPGTt515X)wr+Bx(G9lWd;@Y3^Vl}50Wb&6-Tiy;HPS0drF`rC}qYq22K4)G#AoD0X zYw$E+Bz@Zr^50MAwu@$?%f9$r4WHH?*2|67&FXFhXBrVFGmg)6?h3^-1?t;UzH0*I zNVf9wQLNLnG2@q>6CGm>&y|lC`iCFfYd}9i%+xkl^5oBJ?<;aneCfcHqJh7Yl5uLS z9Fx-(kMdcNyZejXh22N{mCw_rX1O!cOE&3>e(ZH81PR95wQC37En4O{w;{3q9n1t&;p)D%&Z%Nw$gSPa!nz8Slh7=ko2am)XARwOWw zpsz0~K!s{(dM$NB=(A=kkp>T(*yU6<_dwIx>cH4+LWl282hXa6-EUq>R3t?G2623< z*RwTN%-fgBmD{fu*ejNn)1@KG?Sg*8z3hYtkQJQjB6 zQ|x>wA=o$=O)+nLmgTXW3_6diA;b4EY{*i*R%6dO2EMg z@6g?M3rpbnfB@hOdUeb96=~I?OIA3@BWAGmTwiQ{x5Cqq<8c10L!P zd@Qk^BseTX%$Q7^s}5n%HB|)gKx}H$d8Sb$bBnq9-AglT2dGR2(+I;_fL|R4p$odJ zllfb0NqI)7=^z~qAm1V{(PkpxXsQ#4*NH9yYZ`Vf@)?#ueGgtCmGGY|9U#v|hRdg- zQ%0#cGIfXCd{Y)JB~qykO;KPvHu|5Ck&(Hn%DF~cct@}j+87xhs2ew;fLm5#2+mb| z8{9e*YI(u|gt|{x1G+U=DA3y)9s2w7@cvQ($ZJIA)x$e~5_3LKFV~ASci8W}jF&VeJoPDUy(BB>ExJpck;%;!`0AAo zAcHgcnT8%OX&UW_n|%{2B|<6Wp2MMGvd5`T2KKv;ltt_~H+w00x6+SlAD`{K4!9zx z*1?EpQ%Lwiik){3n{-+YNrT;fH_niD_Ng9|58@m8RsKFVF!6pk@qxa{BH-&8tsim0 zdAQ(GyC^9ane7_KW*#^vMIoeQdpJqmPp%%px3GIftbwESu#+vPyI*YTuJ6+4`z{s? zpkv~0x4c_PFH`-tqafw5)>4AuQ78SkZ!$8}INLK;Egr;2tS18hEO5=t;QDmZ-qu?I zG+=DN`nR72Xto{{bJp||`k}-2G;5#xg8E~xgz22)^_Z;=K|4@(E&5J)SY2of=olcw z5)@L)_Ntcm!*5nEy0M9v0`S33;pO4TN;>4(Z+19p_0>u#e-vE zXCU(6gAvu~I7Cw(xd%0e59MNLw^U37ZDbsBrj%eDCexw8a3G`nTcXVNL6{B7Hj@i& zbVB{;ApEtHk76q08DJ48dSxd$C(;$K6=FpU<~l9pVoT9arW^Vu{%Bcn4`eIpkOVC| z$)AKYG_`ypM{0@BUb3^9lqi_c?ONH|4UJMJWDowMVjacycX7}9g={O7swOB+{;+?; zjBo!9?+nd)ie#x5IbFW-zBOo0c4q@9wGVt5;pNt`=-~Zgcw#*`m($6ibxtZ`H=e=} zF#GZ~5$%AUn};8U#tRem0J(JTR}d4vR(dgK2ML~lZsPhayJ2h1%sD4FVst| zKF)+@`iNzLRjg4=K8@**0=5cE>%?FDc({I^+g9USk<8$&^qD~@%W0i4b|yMG*p4`N zh}I!ltTRI8Ex$+@V{02Br%xq#O?UlhO{r8WsaZnZCZq0MK9%AXU%MDLT;3=0A9(BV z9VxxxJd7jo$hw3q;3o?yBLmA=azBUrd9>-<_ANs0n3?-Ic*6&ytb@H~?0E(*d>T5n z-HiH2jsDf6uWhID%#n>SzOqrFCPDfUcu5QPd?<(=w6pv1BE#nsxS{n!UnC9qAha1< z;3cpZ9A-e$+Y)%b;w@!!YRA9p%Kf9IHGGg^{+p`mh;q8i7}&e@V3EQaMsItEMS&=X plT@$;k0WcB_jb;cn%_Idz4HO$QU*abf4}+wi?e96N>fbq{{i|W0@(ln literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/images/ui-icons_228ef1_256x240.png b/PyTutorGAE/css/ui-lightness/images/ui-icons_228ef1_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..a641a371afa0fbb08ba599dc7ddf14b9bfc3c84f GIT binary patch literal 4369 zcmd^?`8O2)_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~Gmw z<@?HsG!Qg3zaV+-xQ3ldtad!U<6iGz_enGH*2akP_r)o1D&8p^5M)_c8IIj6Wy*7HJo&CBLuo~nj>(63pZzO(Vv^ZuB3 zMYigjkwA;FEy|G}1jpiMj6|NTm7Uyiw=@FDE*nX<>jR!W@9XIyf%$Fd*J5*D0Z0Lm z9}ZQxyT|x5ftNy?V>EbJz-K>bV9gs9RaXUP<^=;e?&Fqxj;6{ieR-a-@HycA1KMKhql8GOmcxwZ?_-(3hMK^^a*(gaFvBH ziIC!fgH4$W*NbKIaY&T?%&13``KbD@S-0`xQ%v3TV+B!;RC7O!+1a9QCA$H@3tR;k z)SSoR7(s4)f{zM}eWgFN{(ZH5d1O}l)f$ruT!)Q&NImXyZsTzOf9TwctcSfr+M)aJ z5otO+$jvm-P4)ykH)x|cO5xeb>?!`qGw$(>&axqLL6yoB${vsMXgL_-bz@2J_tS92 zdvZG-+vKl@K4Vr(EL{WQt@Z+Ea-hxX0}nTSZxnpi^#Kn8Ox8FgIS|hc}KJQ4tm*HO16ui{(O9} z1YN)GjiQt6fGq`Cj+^`zUf?8hk^(T{{cOQGWFP98am}is28A!5%{R#ENv8fCN!j69 zlMEK(2z?|BY=Je$XD9mB-Kkem*(d-j^9j$2#6r$Dz?s)-TCDCGCs z8>6Pvj{Y+YIeFA@qY22V$)awy@q!9A4rgk5b9TcC;s9Ig^G|6nDP+5=Fzg&?(L=vc zCbGd>fSu~@6!94td+o#d@sid!EIX$rx7*cawe6 z`dScJ+$HssdOjE)O#Ybs56vm-FQ$7yuJJD^Zqk%hMaIgAJ<2yb_MFQte_i;62ScT$ zpjifYyR_E=rQ+>H)pmlr-Udzg*-!|ssw(D7wJvC+Sf8bb9;;q8#z?0p!!bsd{wy|5 zpBaMHE-Ve>i#LLjHRaMLtp%9&(HCng7Sw96jVv!#0k%?F^K7&=T)mnYn)D9(i;4x5 z^NJTJwq~pv;kH@#ejTd*48~(J(r6j34|m`h9fEDj0im)~+%I5XphWymhT;_Zty|Q& zzjPg#-ufAHZ1M*Gccw?Kf|8Pnhtb0`!{N`Bqsa37J+>wC$!e z00k+2Egzz;rbcWoUB%Jvp8W1}$XD%e3>4y;;OZ1ccT-O#uW6Ys@C}Pa`nZrNKzR(2 z4e%3)@QI4SE&E!lW`5y14QhbepBG%_XBV-O(%5tj)@9#|;sC-MNev!zGDHk}JdpGC`iJF#8=8-P$Xoku_=Dw%Cv3{U7L>gf zRQ?<$t`cZ*MP5GQmbmx#!+*!zu>0MewRO9GFGS{b^m_fJ-N0?j@EqoFf>$khj+E|@ z7r3We&^tR^YZrxKe*d22agXqCO0l44&kqCv{u)T|(lv`~PK@DvE z{QI_TlCH5z*gR!>LO)k67{^R+vWx24U2^2ODXpwT;6y+6+$5m)_*w4WY&#do9dCeE z)>p+Ykdhq($DhmMiaYXey!@N%L26uz($aJ!QT{B^Wu}U$^9e#5)=c+XF9@Ill?ZmM zlNgHiz*9!vDc&uxOo;ZVxb`Q!Sk0*gnfxWzmbZh4(=%CD%qP?0=);n$&zaW_$UKV9 z8axdcN#AyZ{P)wj?V{P}vM)YY!>6@}^>U+iv$`9>nMTCPjN>z%yF&3yf%>+T@0vh4 zlC8Xa6zeo?%=o3}M8{aebLHcO{^1Ar8qiM=Gquf?Jo)q5`-+?sUpg?QXyEUpWSm+n z$K-UyqkIwHLquru~o(OF)hhz$Y*|X>ZIbswnxRvr~ z2=rdOGVuD|xRlpAZE<0!X1F(%Anpl^@V^D3vbM}qxe|NI;TTiZy7(IM;R69RkA>a& z6gwYE2sREzQ_LHmWqB+ogMk(fMaSFeoDq-!HkFB_nXt5+2ncFuk9BQL1I&oB1zZi) zYW{6_&-Ip1l*OVRA##1ILQS;5R{-K^0wGTiJbVSi@LA^$D$;@J>^G{6@&+%4{b3(s zC~LEHiTv(0b#zxt?YJ0r_~pUZM~mQ(??(n#>&tD%+@nq=Abj5*8R!~Ul1`G~=qFJ4 zfl|m8ZDCYgtr`4LcOpgiJYX9qRY5;DcWti~PmS$VB$E-Zt^f4)vLDOe_3XTq5^ylW zJ9PKm!V-8sAOJXnUfuFNIf0R9tK-pNs2hO04zr620}5B(Ok>yB)Of-3sP59qfQNbm zA4{w!2@cB;GbR(~szVrbO%(w=5S!X`o@o@x++wbN_tMPT0Vc)*I;Fgsbf^*g0 z2Di?HTApwKq3+YwfNsqd3iP%{hyK1iyuVZc@*0tO_3+N0#GFsz>8MjeJ2UJ%L!%hi zGYYAthH`E+ywA*u{(eJ=ia3h*%k?779rk-K<0VZAPkl;TFUbmei|$fqWO8!_zIvqt z$ly$VrlH46nnpX~X5Yk0iBJl;=WuA4>~X4-f&K0yWf42h&0b30t@NYX$7egQ1Fp!a zbui-D6cWCWV&|R1CY@G8(qOmWjWeX3eX7UggZPGimA}soOuQdXe4uZ#2>5zN>qlI0 z9xk}lE=tNpX1m6*nFr2EQ3xs79!^sCldDJYE$m(qYv3q7>}1R7?iZW7>$~*%zKaC| z=$N?ME$>#+%T&MZC`dW1wUl6Z)JgyCn~V%K&i0H|iwE%$>xsZW3tTfZxIUePci@p;cRu|d=ItIwF z1clVHy{hH?@SD|(Zfqi^0DQ1hczHN7xq85h)rzQqLHMX2^IkuK7FB!kI40s$|CY7~ zNX^{_UjN8}L%Med;|+=4RNTMozn8KT;2tb77bUPCmioh+rZBfIiM6f_P34cQ__o1G zWqQp3VL~~pE5?qODf%iiQQ3f42YF@09tQ*$4v_EKUx;t1KCPCBtgqg z@+Tn;O)a0uky_%jm+WjNB?=~VyH>V#L!*=l*@OS6SVyt_UEH&NA=?V2stHPyKkVNy z&jg<#cjros){#ji)dK z%)We0L_478=HZ8-@xnwsKrWs8)x`MB;(Y`Cmu2c-&SH(vN-F(*e`l?c%+l$|y_AJJ zhcDGnwLvN+bu;_sX|1AiePhx@u&%P$hf*xE+O=~D?_(_KGWQ!158YL-y9$*6mmPo;Rp*Dl5lm-mVM2i`h- zM@nxv590_tvMwPD_{l=b$iOm|+|S{D9&P%zeT$GgX6Akl-tfUF>tL@Ld!B&{pN39t zH>3Vhqkr}2Yul+jb7UiouWVGPNsxX7Ueba+9|~dz?d*QM$ng0DZfO0`7fAy?2yMm| zcnRzUhZ&IcwgjH9cuU!w+VStYa{p*)4IgBf|E8)sqMYtB2KH_}SfsFq(c9i(Q6S3U oBo%DI*Kv;w;*%(i9W@e{{5C=l}o! literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/images/ui-icons_ef8c08_256x240.png b/PyTutorGAE/css/ui-lightness/images/ui-icons_ef8c08_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..85e63e9f604ce042d59eb06a8428eeb7cb7896c9 GIT binary patch literal 4369 zcmd^?`8O2)_s3^phOrG}UnfiUEn8(9QW1?MNkxXVDEpFin2{xWrLx5kBC;k~GmC-Ajq!3AfU8Dx90^_ zp3}MKjJzYC+`T(&egFXQ#9Ek{*oVAaa!zrZtmlRFnwQPRJXH<%pkK2*eP`pT=lwD7 zifq+4BY_rUTa+U|2#&?i7>PVvD?7R4ZfOLPT{e9G~G!Ls3s8JtQE`jMM9wl2V9&Q+K2DHW0M+uQmEr%nYJ^7cK?uIpU-)=wn71ZZ-=@ar0;3^AY z5+TI{2b(e%t{2PZ^HKF*vu@+Xr&BAc@2BC4 z_vCgww#i=)ea5Vo$glEEVBBg_VPBj!)OO>)f@}#dg6ULOeC>LBHz<;*5Y;YfE0lNx zg{N+4@lO~ozxpF69qV@VOGnc248Iuag4C1T)P^(hWkpP!{h!JekX}m^Q#b2B4f1oT zIjsGz)4}-$rQ*-tSuc%qG>%<4xM#E& zN)7lRK~^2VdiloY4>;#}A!yHOAXEmEi^+eA#05pawGXs>!z)gSoDuI#>bRCq-qjJe zZ)r=A`*EMX6+)~er1kdv1L^)0-PsAEM7JF$O6G8>496$24lkOSR^RTfUuIz%iSfn5b-t!##cs7sQI);gdAvqmn_v|%I9k;fCPl0Z)R1+hNQONJN zH%3jT9sOq*a`LF*MiY=zlSSQZ;{_FL9M07A=In+O!~wR}=bzGEQpk2!Vc0p)qKAH? zOk{(%06W#)DdICQ_S%Q@<0Y+!?9%#$gWJ%)EO->^YZP{<`oB4~9xh zL9-0*c4@B#O2ylYs_g`Ky$zb~v!M`NRaMNFYF*Gsu|7)=JyyMHjFC=HhGUE@{aI|B zJ~ITXU052%7jFb5Ys#fhS_?4kqc7H0EU49B8(Chg0&JzU=Gka#xOz1)H0d4m7ZnRA z=M^tdY|U6T!fmte{W?_r8H~qdq|q{5AMU_2It1I4143n~xL?4&K#BOB48l9_Rdm!(c^C?JU;tF0 zEh@o1y6Qa_>}#AwX{VY+`C^kNkxhgb1P5cB0%xupAXyg9NO=SnXrJUE?rQg{Lcsn+ zAZKctGLfbK_B#^&Nev|0^fB&?DN=ak8|0!np524LD25=s84BP8Vl(3=jflNp{X>e@ z637Ri5xx;&JNl+XYImA|{;XR~P*svYDEWYJ6I5!6uO~2twFC1ZQevB7#3z~(apxn& z^J@>Mc`>PJair{yT`iuan-V+i%|Ho-pA<1?V-k^R2Q<5;Co%XxmL` z018t4T0TTwO^w)Gx{9OSJ^9_|kgwX`7%0Rw!PO~@?xvnfUehvN;2Rc;^l>3kfbtk3 z8{j7p;S&{uTlTe9&HTc38q@%_KQFk<&n{vmrN7y&Cz{etcE->rq!6HL)2F!aa=0%! zM%Bwo!7TQ5t;@a_#Q}sjk{UebWQZ8{cp&HN^$*JfH#8spkhk{R@CVBiPuP@yEhu{} zsQfuhTqV%rioATpEphMfhyRYbVfVW`YwLFXUWm-===J(byMf!5;W^CV1g~2194Xx) zFK|z{pm%n-)-DRe{Qhk(d!QaoI*y%Wn6h7<6A{i*Sob&B^y|Spg!&J$`kN>zwUJ3x zaB$ciu*0FJKg}T ztgnh)ASF8njz5>h6?f#{c=*Yr4W_34$GmVIo8OLWjcZK4a0`+Yv-!*}9 zBwKm;DAsA(nDI-`iH@;`=gP+m{lgFLHK3m$W@?)&dGhDA_Z2xOzI0$p(ZJtH$vCxE zj>+kYNBJzs-TlSx!tSH}%I9fQv)mc!C7X0bKlZv4f&}C3+O-4k7AmVO|KYZ9ydP%(N1^uisV8y;~p`x4qFXD?!_OyN9=w(Od6W; zGrT?G;l2v@Ob5k^8w<9w%Jbjb^|H}PYKo}I~bobd!XrTbzp2Zp~H8lgJ)I3?l&(bDiWf8gE&6b z>)9GB=Iu-6%I((+>=jGP>CzD8c0oWITFZGgM!Q7|JrUYq4#^Y(vuDu-a>OWDa4Y4} z5a_*lW#IL_aVf8L+Ty}c&2VojLEIA-;eQK6Wo?xAuK>i;1VWx3c=!s2;j_*iRHOsb*>6-CgcYP+Ho=L@XLd*j~2ln-;WHg)|cCixksH$K={5rGSD@yB%LI|(NCc8 z1Er8H+QO)~S~K{g?nH|2dB8SKs)BxQ?%G}}o*LV!NG2m*TmR|pWj~g`>)ClJCE#F$ zcj)fBg(dKOKmc$Cy}IRlasngIR>z~kP&WW~9cC951{AKmnZ~ZMsqup6QQf7J0T1;C zK9*Qd5*(HxW=tl|RfjO>nkoW#AU3t>JkuzWxy4-l?xmTv15_r1X@p@dz^{&j&;{Mq z$^0$0q&y?kbdZh)kZ+NfXfqLTG}Q^j>qHlUH4VEK`3y^-z6Y<6O88Hf4v^;}!{t-a zDWg;znYu%6zA1~A5~w?fxO~i8-Ib(^02{c4pXjhDI^2 zXB1LP4dvWuc%PXQ{r!d#6>${rm+M8EJM8yf#!H$Kp8AxwUXm5`7Tu-J$mHeCG>vw|&Ay415}_1w&*9K8+2d3v1N+@a$|820o4u60Tj@u&kI!~q2V9X; z>tMvQDI|O$#m+m2O**ZHq`_{#8)ry6`&5s~2k{O4Du16Fn0P;&_(0!e5%Bel){nU0 zJX~<8U6hoI%yx}qGY_1Tq7YKDJ)ETOCs&W)TiCrK*1%DE*vXdD-7hwE*LUgjeHRM` z&@pkhTi>m#Kc+QIK+2Ybn9-sFVKNHyIgfob4H_77yYh))Rq$7Pw|+aD6&yZ|ki9 z8Zb6s{oBt1G+PgfIcxd}{m@~1nzhe;LH)5;!gS8@ddyabpdBc?7JVl?tS+<#bPSMT z2@0uYdsWN(;Ww)n-PlA-0r+62@bYkEa`k{0s})fJgYZ#5=DmIdEvok7aZJRi{w-|} zkea&6X}ZA3b7&vbDb7)v8CuI(+zzSf3z&P2eOrPNP?D~ zf zn0@)0h;~5F&BG5vOFU!=woW&ZSl~nrs{?1w>nWfW_dnpTd z4qvLDYJ*ft>Sp%M(^_xCZpNBnc66JX}A|ZL9IENM`U>`ph7d<+RQiI}@E8Y)70s zMC*_&))}GlmR}@{v9*nm)29-=rn`Q$rc^4G)GVQHlTr6BpGxtHuU(8AF7Ffh54?5w zj+EYT9>x)PWL-iQ@RNmT?R+|c@=FOmj)5Za6_ z@DkVy4l^L>Z3#SI@s_eVwd3D)<^Ivq8a~J{|4mhOL^<7M4D8){ut;GIqqn`oqCk|x pNh;Wa$C0(mdpqYz&F>xK-uVD=DT5%Jzh8ZT#aXmjr70%*{{RacS`YvL literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/PyTutorGAE/css/ui-lightness/images/ui-icons_ffd27a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..e117effa3dca24e7978cfc5f8b967f661e81044f GIT binary patch literal 4369 zcmd^?`8O2)_s3@pGmLE*`#M>&Z`mr_kcwz5Nh&g=McJ3E!;CE1E0ryV5Ro;>nvtvt zk&I==Xd;cVGZ@>q_xtnx{1u%7-D)N|5YqOB>i;(bZ#o62{J2Y9&^D3~R^$o+X? zwbxAEIb)xwCwK3TSR4QVym6N1rVgPmmt0caryBUceHP_&u}{?^Jn7f0PT$#h>UDqI zr!q(F&1jJ2_!jxdAB<)7H$foI*2zuncvu;;$SoU7br=AiJ@4=BC4vNO>DS`&UIB=K z;2)0F*t^FBvVfPuT4FVMSwUw%Xksjyl+;#*DDy%=ocFOyzDLvLR(`zCSOuJ=?FWYn z5ZD!UaoF>-$@=Vt?a&;UQYM$Oqe0ZB?Je?8ZnMxDe&uzzs*zlHd)V58nfJPc8S^({_4bj5HQ_B&EXHWj6wx@B;!mr04b_Mx)UFL)W7`V!c zpMp#C!a!!sh3h491y}^qfimXVY%!+sYu0_DWoJMqpN(FR9LM#jdZ{vJzEck`P^9(1N=4J za9%u4$2J8TAkUaJk_FX%iHuv#svL_mMmp{SR}ifc#ZcXv%CFsT?*>N^6r(%D?1YnU zAaT?UZGlOna6UXXs0m)3YDp}d%hb@)@Y!lK_A&D6{OPlNnj zYY*$b>vnRzL8=CDbQSi!DL3D!P^xhNtwrYByo?h-&OvQZYJ6ka{Re# zSc0ry_d(K$_Q2M{Y^O~DOK(szDOnMi_*h_Rx%eSRxA%n|FuC&=F=)B z_Qsgmj8g!GA+LZOX)gOW}vbo9|l8QW3iYw9qCD{o~xt^HIU>;dV5MJgc0#uHTA z80%Ee_r;G`GUjssm z*AhtwpW%Ly;X4Lq1Zq#ZpuwzrZE$sR087dN{w7PA6|Mo#6wwJP085K+h7+D>NyeX# zk|?MJ^Es)JtP-2eNr0EQe*ZM`&}OU zCD*uSSviE&p}uX|@1g_%|3*ra*MbBV#~cshdcFQ(dGLnTqaO-3{u==x1;Pp2im!#` zuZ2`ThfAmiSzb|4h`c4?^ZoGOF*oXYcV}(ge!v@^bse?daA`Ma+bSZLIg;pIN17vM zIOYfK=@s_Pj?~#lqnY2o?d1$MpoqsYQw%eX%X6Y4*^27{hMWGqILEMnVYUEMW#x7f zu^I*nzXQ@6HJ8n;26 zo^1+Ewi$fN$Unum1(FTb8I#cYgcGklwIExt#Mb(D=x~OTeZ^ubJ)S-ywfdZS?SRCq zDm=eU+CCWO@8S_m!W{alT)zj zZJbjxm5&No5xe_~Jw-i7`&G}=r)POGGfFq+c@kQbB#)ay`coj&C3- z(#&xV@Q3@VJd{qdH4g@4ZJi&mx9e@Io7@~(o5vTrkW>QEO1T-gmlTRHH+3)gcUC0P zk07rvDnf*7Y5J}8!>F_7D^Z3IoH^uGH}_a(ax{Q(IrvV$olf3WN&DY?uYZfvXI(;Vv&EAoQtfH;+4VI_a>yh*J+Cj!?h!QX?O`QXk@@G7AjloJe51Cw*rPXQ>#y?B^^ExRQFui zolmv*C5K|-p){rZiCNai^0H`1(Qr(Hz3v%7NnmriXu2tD>xsbN#*R3*wsZhRj6Lvb zn0Cu=qkC?*e4{NF_3=^bTb1f!g?@ryFH6Zw2tz%A zzz&o{w`dDv66!6Wk9w1-dglS#Sm{doxw&h5Z8&ONmlBBte{J)puaDzc!LC==rPRQK zQNH23?-rIo^MQdt3Tk!B@8l#}fxVtrlc8Y<>ORaVE($DKc{77qV^`+`%_DotrUD=8 z4}L7QnZi3RgUy*tteY-=$SqA2@IZWe(}mI`nzhAT{qC)my#rJsfoS*)xCXj!Tk6=3)cr@Jw#OcNqgS3pg7x|4!A$|w15X!huR*vB3q9Ya4 zF{xuzEQz{9YPl(gk`}Gffut%jotgqp$jZvzRO4EsExf~93vY~04AxH=lR>R3v3Qs2 zy$v4SN%ee@Kz#kDtARaQD`d!R%}#@T1=v8DAow*r>+0d1KS{ZtA~KMtgm)+$JHumW zw=;@qWk&MuG@LKx#K3@&WMw?r=jD2_)(*$LmkCm4_@};QZI|SPe8hIC6xqBy!LQyK z01_xmfNA9UlBU@Kzu7;zQYxHE>OCADA$gwaVqm`eN?XQF@NkrocB}lU4hcCf>wqir z>Ya=PcE!Xm#JG8v@G0lj&~)hScM}X57vGw3g<$^SUls53f|Bk>5FQwqE&{%u(f$!1 zl8+53vyYZ`mEEp&YT<=(krhKrw?~pS{N)?q{0qBR#2Y!w4!hWMdj`a(@A@r$zVB+u z06Hb@_9(cQ_AxbXI|-2w>#QUhp7k<+`z9+(jkh~v-Renr#C9U+&jL4vg6-E$f7@UU z(1fxB8{U2vq}h3rE!Z+n7=(>D&}@9~3mJ^R5}|WVG@!RSh3r{!>QHwg!t29YS&jiR ztyn_q*k9H0efZ7hO*b(WR|G!TDY`rol~Ob4&1OwdM8kbGj`^$~L5gdWYceWwL=PB{~NX=cu3p-{S;hqaE?bSHv$g+SA6bxy+VU3YVTPDj6CN zKLb_(9gM2Y#KW8ONxjH9To^Y)r?ql2cq8+WE438uIF$hjfdLs6-;!jv55jGcc3Ipg z;}aT32NAEGeU;J}&j5=+u`4?%xlwL7?NDn%2={4WS39yn3f;&r=|}5=M-Y2yrxeSw zv%*PmV{_{#Qk1sD>?M2KDapb~z3!E*-LPmCe9q86D%MGSe;4~~K-jKQxq6b^902_{ z%>4G>@Xqk8muR*|vGe5{@7sds2i|i;g}oMkd!o^0=HG+vcPrcN54A zLGv$PlTePRxp~-OSb_*aACO1qc{MpfS-fv(@UmRv%UO)cSt;ee@9(S)f>|~bwU@eZ z=kTS*sdjLclwMZG#?%U3)bq-uj?@@vj~6tq)ZS||Jxz`+di-M5SXM=h3EL`?pB>W9A;`V2vM)vk&%KFy|TAh#AQA zb_?J==3f@%LL{`vU$3Z@A2a9C3aC-YY43dR> pI7J0n@;b3~`)ubvsr|iU(l;L{A#E6J`}eC4usn-0uQEf&{2ws1m(ltoqJ#RmwV2==ic*rz7lOw=eaq=H~;_ux21)-Jpcgw zdj+hrf&W^f<%Qk9Zpqf#;q3n5{{POY;f!wmTR1An9(4&I0z1LNX50QSTV2M%4|y9c z#{ZQIVJKu~aY5?ZaZP*GIGqGs=e@q6o|EPhZB3CC?@LnORK8O@z{{<0KtSn5?#~OW zy=L;x8T&*%xqElS;s5~Pjk7d2bqIaA)xZbovnZd7eX17WNxx=w`p(8vulwUZ zl{so}MuRNJx5!8S5G;$o2?BApPHt+)!^#*Ww`?rcVE}mcyuY`X2o|uVUyI9o1t11O zemGWR?;aD#0$vJhiPhv~0iXS#iLq!>Qd$` zU{}<|Vb9Md>$4TMbL7C3GP#r;4Wc$}Z;^j;n}yc!E3d;`wry$!JkmJP0%(tIh!!TET8=+{rhUi^60G0t2HJSxXv-*DgC(HrJd8`|Dp3NvL5yg>xAvU zho|fEA~w^-HrW&H-JwkqNX2I-bEXBR&Uhp+y2^)1h1IIlNCzC!v-Mz@&z&VPz+cl1 z=f&f6Y*U~C`ixm4Sy1hl$hg(4%Dy;bq~k7d1<@K&%%NLT`L+A)-QXyKVswX?op90( zB#yeFEih@c{OXU8Oq~1CFI_38GXmns3(`;W(i+bslovCx4u7gvK>DrGOug*?G|1nz z_OR}|ZYS3pq-p?rS7G0qa`TM}r5XqDT4cV>%Qyk#9ES}`jc+Ww|DcbZrF6UG>CeXp zOVIV}K1e#z9@tu#?X)Ri=?zXMB`X3G-_I7FL-Zq`nbfWtX_EO1*!+U6pJW-_k&+vk zMd}THh}{(Ch_wPk(PI4vVB_KT76kGxVytLxpWg}&bHw`a3G#QzxV@ICNax&@hk3<_ zBh`Tq66G{-tCw$V{(y0v7l!tp20~@gdFXjzFbF#bJE7i>T4ux zQdrF3org^wFcnw$#bQMv@SfN3$Fuo7HnB_`2ZGB{ZqGr>%xP;2_!Q{=N-ZhU1c~^5 zdt=OO#wmcpkXJyCG?{{&n=R{Sn=Ytg;<09CH)l7TA&wkt{Q;>RrA2Ia6-QixEPLrU z%0)N$3Nh0?U825&v($Sz}0G_(!v&xSSAzje4{rup+^W@^}ByqOb95$E0sbwK*%#GP}!6`%*Z@L;&C z3^dE&>5%bWAXmP*X1 z_m}Pivs*u7@9i>qA!58fDCwj^M<1P(u^m;urVdlM@>aIf+E3-d9ZW>fc4cS7w5O3sCmKKn z+94A?VyfSBb9{}rEbCIYtXORJBCv__fnZ>?a}edaA%bP$jI?J^q0UKO!mduA8U!3b z0CJ_Js}NWQZoebapVUHP%pPOUm?1<)zd%`hzUM-Y6g1z|@@3G_kio?S0bcbjQuxJd>vU$Uyz(4*peEDSVc-G;O;% z9Y97%Tq}TRsH+oN%2u(oyC=W<9`e@&m;i;jC%L;sP(9RBDQnth3;ZMEQNFH3GEf0c zU<3RF!hNG-vCDooYFS^nPlFnv4(ElI1=vNcr42TF^uq67f{MoN>{f&>xA91r4pz5Zc&@P^i-9||`98v$Si!U@}ouZ88W zg;YL=OQ;4}UQtkpyd~lD{qWy0H|lwJXKmenz#E=*9kt$YX*X!wDk7ITlIUGWnj>a7 z<_GQR752@J)Y(U)ncu(dIit7P}oBq8x$FP85)&Nsw<#rOW z8U_x(1J)Zgm(8tZXU%+(yYcO+Z7#ZszPwa2`ygiMPayX9KondtFMRK!7x`9uWN;(f zfWW?8yOdj;GA3We0YAW92gWipn(d>zcbA+vZ_21BxF?-pfcW` zbqY??6ie(6M)p@6@WQ?Tl7 zoKrKEj|x~2yZehhMLkFRRnOC>XL&L+N;m0B{_OQ9gzzTYb!!Jct=bk?_hIpY9rOwY zMnr69R(?8EN52qR+k!~qnCYc-KmV&*d$&NY?t5cjR)V+ncMor=puTRoo?{5dH;@!* z<~RrV!+ljAN+;Qx2LraY&JWnz^|sYbZjP+Y;|pC#DuHUH+>F~x3PqTkx)=OAE0X9( z(AO6gp~AH^{nq+n)LHYDD8mQN?DDFcd!U&d4PaajzSD1~lXq3p{x=^vItrq3gD^4O z=hYS`?&C-0&KuAV>Jv}T?ba0IafL$~+bZ}p$9lwyyx=-uPN`Hpvv<)Ia>OWHa4+N4 z6zscrW$^XA32EJw^7hYtkRJr{Q8 zQ|*1pp_q6Mno|D6EX!kgSv0h0I3~ef_l%$DTFjL`0y16n%^dGNQn;2V82mqoIi9i{15vu zLq&(BTl9CInUjZlTIa>^!!HlMK3W8Sd_Ow0+E8IT?h$=55$^Z)$WYIuig=O;Lp_1Q z4wOT;XbWQ!>Mh`pdXuSo=KBba;wT!wK`Hf1Ueh04*%D7Kfj*#b~BNfvz zsbf?uiMm5-xhaQ|7Om2OrYbU>ngUM9%F5nU<65IFyu(`yZ;Vb1)=wCd!L2K?c$ezE z4IbS|^?Z>)eEp}ZfjwF)Waw?pPJ?{~*g%;efxO~Nx7dQGLWZ)cPQ*T!((W- zGm2?tM)K}7oG<0Xz<`ltWjxvE<$AH!4*R{A2~uYGr@m!vm*j+e#CE9^*}Oc#uihB| z5;#kMY2^8mrr80%*+02bDx6B{Jsch(d7kQGV7~iGTgFZBu$Pf`tNf`B2{|t7fGhIq zos0xF#l$bfxOtcGDd*MDbdKBaCKxgCEbr8JTNd_1bjWC{Ubgk z9~)9;A1&=FyIt$l!VBXfD~6VCk0fjO%QwLJ7k00RH*%I8cCqF542VzP^;`OU-_?=< zbV}OoQE)HqV`|)X5+WbgSxGWH>t+7-O;(l~Z+FJJ)sygu^+eF01#Suj+pnAcw!s>p z$-xF}c>7t9X6H$^V9hvT5H{jKv+=zzWHA0pgw8e5fZpm9vIphVq3%S4*N3%&jsY^Q zK%sSPuj=?d{ATs0o0y6#0w3%YT^@-_sTuTUwI(Q{;l3KjeAbVk#Wmi%PDxm`zoqQ~ z((<-}*FSP%5gt7uI3t1&75ne{@1^bpdW1;MMGNkSr~UAuDbB4+VQi|x(gdO^zin_) zncfs2hj8xdiiy)@vVkfkItLKvsGtJhrTb0T~tFl4Q3J!flauS==b& z6Bm!g%dDvlCf(St$kVofvH90|9yl-gmvRvcKS&Ye9DdoTK@2m}iSvC{3m%4E0 z@TJD7c1V?!URM7+t?f3)%{X(6JXg~A9TvGQyX6n(^Yt0NX;>vDPcr~mICPooLWA_` z<1A>FuXr|C)dtDr*PQt%Xs5WePWUB&gBj$zZ#BIY%?jDdpbSA-PV0`dGf^oa_Jp}Z zlrGV7oe`#B^+nPIQ`ZDJeJas=ru#=*YL#+n?Go}f33>1GsZ{TTy2bdBihj}mz*mp! zOzn%{WgLM=*CpiuKUs*GnHa{B$2siJqfNi|Z;|rH%stM*8b26kAMCYY&NHwPGtlYn z7UVx_^sgR$Z8x27foS63FCPt|gtcG_ zy#@C|!VQV~TY}G5e57qp?F4jRxqq~@h6^?-cvD>ySwVLl2m7=gERtEn>Fw_@ND%pO oiVC*mbz<%I+0K1Z`+LWvZ$3~$+A!Gm?^hpSc@||}WrmLVKLvuzv;Y7A literal 0 HcmV?d00001 diff --git a/PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css b/PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css new file mode 100644 index 000000000..f7b3d09ef --- /dev/null +++ b/PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css @@ -0,0 +1,310 @@ +/*! + * jQuery UI CSS Framework 1.8.21 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { display: none; } +.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); } +.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } +.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } +.ui-helper-clearfix:after { clear: both; } +.ui-helper-clearfix { zoom: 1; } +.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { cursor: default !important; } + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } + + +/*! + * jQuery UI CSS Framework 1.8.21 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Theming/API + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px + */ + + +/* Component containers +----------------------------------*/ +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } +.ui-widget .ui-widget { font-size: 1em; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +.ui-widget-content { border: 1px solid #dddddd; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } + +/* Interaction states +----------------------------------*/ +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } +.ui-widget :active { outline: none; } + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } +.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } +.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } +.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } +.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-off { background-position: -96px -144px; } +.ui-icon-radio-on { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; -khtml-border-top-left-radius: 4px; border-top-left-radius: 4px; } +.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; -khtml-border-top-right-radius: 4px; border-top-right-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; -khtml-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; } +.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } + +/* Overlays */ +.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*! + * jQuery UI Slider 1.8.21 + * + * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Slider#theming + */ +.ui-slider { position: relative; text-align: left; } +.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } +.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } + +.ui-slider-horizontal { height: .8em; } +.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } +.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } +.ui-slider-horizontal .ui-slider-range-min { left: 0; } +.ui-slider-horizontal .ui-slider-range-max { right: 0; } + +.ui-slider-vertical { width: .8em; height: 100px; } +.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } +.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } +.ui-slider-vertical .ui-slider-range-min { bottom: 0; } +.ui-slider-vertical .ui-slider-range-max { top: 0; } \ No newline at end of file diff --git a/PyTutorGAE/example-code b/PyTutorGAE/example-code new file mode 120000 index 000000000..153b6e23a --- /dev/null +++ b/PyTutorGAE/example-code @@ -0,0 +1 @@ +../example-code \ No newline at end of file diff --git a/PyTutorGAE/js/codemirror/codemirror.js b/PyTutorGAE/js/codemirror/codemirror.js new file mode 100644 index 000000000..532dd8974 --- /dev/null +++ b/PyTutorGAE/js/codemirror/codemirror.js @@ -0,0 +1,3231 @@ +// CodeMirror version 2.32 +// +// All functions that need access to the editor's state live inside +// the CodeMirror function. Below that, at the bottom of the file, +// some utilities are defined. + +// CodeMirror is the only global var we claim +var CodeMirror = (function() { + // This is the function that produces an editor instance. Its + // closure is used to store the editor state. + function CodeMirror(place, givenOptions) { + // Determine effective options based on given values and defaults. + var options = {}, defaults = CodeMirror.defaults; + for (var opt in defaults) + if (defaults.hasOwnProperty(opt)) + options[opt] = (givenOptions && givenOptions.hasOwnProperty(opt) ? givenOptions : defaults)[opt]; + + // The element in which the editor lives. + var wrapper = document.createElement("div"); + wrapper.className = "CodeMirror" + (options.lineWrapping ? " CodeMirror-wrap" : ""); + // This mess creates the base DOM structure for the editor. + wrapper.innerHTML = + '

' + // Wraps and hides input textarea + '
' + + '
' + // The vertical scrollbar. Horizontal scrolling is handled by the scroller itself. + '
' + // The empty scrollbar content, used solely for managing the scrollbar thumb. + '
' + // This must be before the scroll area because it's float-right. + '
' + + '
' + // Set to the height of the text, causes scrolling + '
' + // Moved around its parent to cover visible view + '
' + + // Provides positioning relative to (visible) text origin + '
' + + // Used to measure text size + '
' + + '
 
' + // Absolutely positioned blinky cursor + '' + // Used to force a width + '
' + // DIVs containing the selection and the actual code + '
'; + if (place.appendChild) place.appendChild(wrapper); else place(wrapper); + // I've never seen more elegant code in my life. + var inputDiv = wrapper.firstChild, input = inputDiv.firstChild, + scroller = wrapper.lastChild, code = scroller.firstChild, + mover = code.firstChild, gutter = mover.firstChild, gutterText = gutter.firstChild, + lineSpace = gutter.nextSibling.firstChild, measure = lineSpace.firstChild, + cursor = measure.nextSibling, widthForcer = cursor.nextSibling, + selectionDiv = widthForcer.nextSibling, lineDiv = selectionDiv.nextSibling, + scrollbar = inputDiv.nextSibling, scrollbarInner = scrollbar.firstChild; + themeChanged(); keyMapChanged(); + // Needed to hide big blue blinking cursor on Mobile Safari + if (ios) input.style.width = "0px"; + if (!webkit) scroller.draggable = true; + lineSpace.style.outline = "none"; + if (options.tabindex != null) input.tabIndex = options.tabindex; + if (options.autofocus) focusInput(); + if (!options.gutter && !options.lineNumbers) gutter.style.display = "none"; + // Needed to handle Tab key in KHTML + if (khtml) inputDiv.style.height = "1px", inputDiv.style.position = "absolute"; + + // Check for OS X >= 10.7. If so, we need to force a width on the scrollbar, and + // make it overlap the content. (But we only do this if the scrollbar doesn't already + // have a natural width. If the mouse is plugged in or the user sets the system pref + // to always show scrollbars, the scrollbar shouldn't overlap.) + if (mac_geLion) { + scrollbar.className += (overlapScrollbars() ? " cm-sb-overlap" : " cm-sb-nonoverlap"); + } else if (ie_lt8) { + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + scrollbar.className += " cm-sb-ie7"; + } + + // Check for problem with IE innerHTML not working when we have a + // P (or similar) parent node. + try { stringWidth("x"); } + catch (e) { + if (e.message.match(/runtime/i)) + e = new Error("A CodeMirror inside a P-style element does not work in Internet Explorer. (innerHTML bug)"); + throw e; + } + + // Delayed object wrap timeouts, making sure only one is active. blinker holds an interval. + var poll = new Delayed(), highlight = new Delayed(), blinker; + + // mode holds a mode API object. doc is the tree of Line objects, + // work an array of lines that should be parsed, and history the + // undo history (instance of History constructor). + var mode, doc = new BranchChunk([new LeafChunk([new Line("")])]), work, focused; + loadMode(); + // The selection. These are always maintained to point at valid + // positions. Inverted is used to remember that the user is + // selecting bottom-to-top. + var sel = {from: {line: 0, ch: 0}, to: {line: 0, ch: 0}, inverted: false}; + // Selection-related flags. shiftSelecting obviously tracks + // whether the user is holding shift. + var shiftSelecting, lastClick, lastDoubleClick, lastScrollTop = 0, lastScrollLeft = 0, draggingText, + overwrite = false, suppressEdits = false; + // Variables used by startOperation/endOperation to track what + // happened during the operation. + var updateInput, userSelChange, changes, textChanged, selectionChanged, leaveInputAlone, + gutterDirty, callbacks; + // Current visible range (may be bigger than the view window). + var displayOffset = 0, showingFrom = 0, showingTo = 0, lastSizeC = 0; + // bracketHighlighted is used to remember that a bracket has been + // marked. + var bracketHighlighted; + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + var maxLine = "", updateMaxLine = false, maxLineChanged = true; + var tabCache = {}; + + // Initialize the content. + operation(function(){setValue(options.value || ""); updateInput = false;})(); + var history = new History(); + + // Register our event handlers. + connect(scroller, "mousedown", operation(onMouseDown)); + connect(scroller, "dblclick", operation(onDoubleClick)); + connect(lineSpace, "selectstart", e_preventDefault); + // Gecko browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for Gecko. + if (!gecko) connect(scroller, "contextmenu", onContextMenu); + connect(scroller, "scroll", onScroll); + connect(scrollbar, "scroll", onScroll); + connect(scrollbar, "mousedown", function() {if (focused) setTimeout(focusInput, 0);}); + connect(scroller, "mousewheel", onMouseWheel); + connect(scroller, "DOMMouseScroll", onMouseWheel); + connect(window, "resize", function() {updateDisplay(true);}); + connect(input, "keyup", operation(onKeyUp)); + connect(input, "input", fastPoll); + connect(input, "keydown", operation(onKeyDown)); + connect(input, "keypress", operation(onKeyPress)); + connect(input, "focus", onFocus); + connect(input, "blur", onBlur); + + if (options.dragDrop) { + connect(scroller, "dragstart", onDragStart); + function drag_(e) { + if (options.onDragEvent && options.onDragEvent(instance, addStop(e))) return; + e_stop(e); + } + connect(scroller, "dragenter", drag_); + connect(scroller, "dragover", drag_); + connect(scroller, "drop", operation(onDrop)); + } + connect(scroller, "paste", function(){focusInput(); fastPoll();}); + connect(input, "paste", fastPoll); + connect(input, "cut", operation(function(){ + if (!options.readOnly) replaceSelection(""); + })); + + // Needed to handle Tab key in KHTML + if (khtml) connect(code, "mouseup", function() { + if (document.activeElement == input) input.blur(); + focusInput(); + }); + + // IE throws unspecified error in certain cases, when + // trying to access activeElement before onload + var hasFocus; try { hasFocus = (document.activeElement == input); } catch(e) { } + if (hasFocus || options.autofocus) setTimeout(onFocus, 20); + else onBlur(); + + function isLine(l) {return l >= 0 && l < doc.size;} + // The instance object that we'll return. Mostly calls out to + // local functions in the CodeMirror function. Some do some extra + // range checking and/or clipping. operation is used to wrap the + // call so that changes it makes are tracked, and the display is + // updated afterwards. + var instance = wrapper.CodeMirror = { + getValue: getValue, + setValue: operation(setValue), + getSelection: getSelection, + replaceSelection: operation(replaceSelection), + focus: function(){window.focus(); focusInput(); onFocus(); fastPoll();}, + setOption: function(option, value) { + var oldVal = options[option]; + options[option] = value; + if (option == "mode" || option == "indentUnit") loadMode(); + else if (option == "readOnly" && value == "nocursor") {onBlur(); input.blur();} + else if (option == "readOnly" && !value) {resetInput(true);} + else if (option == "theme") themeChanged(); + else if (option == "lineWrapping" && oldVal != value) operation(wrappingChanged)(); + else if (option == "tabSize") updateDisplay(true); + else if (option == "keyMap") keyMapChanged(); + if (option == "lineNumbers" || option == "gutter" || option == "firstLineNumber" || option == "theme") { + gutterChanged(); + updateDisplay(true); + } + }, + getOption: function(option) {return options[option];}, + undo: operation(undo), + redo: operation(redo), + indentLine: operation(function(n, dir) { + if (typeof dir != "string") { + if (dir == null) dir = options.smartIndent ? "smart" : "prev"; + else dir = dir ? "add" : "subtract"; + } + if (isLine(n)) indentLine(n, dir); + }), + indentSelection: operation(indentSelected), + historySize: function() {return {undo: history.done.length, redo: history.undone.length};}, + clearHistory: function() {history = new History();}, + setHistory: function(histData) { + history = new History(); + history.done = histData.done; + history.undone = histData.undone; + }, + getHistory: function() { + history.time = 0; + return {done: history.done.concat([]), undone: history.undone.concat([])}; + }, + matchBrackets: operation(function(){matchBrackets(true);}), + getTokenAt: operation(function(pos) { + pos = clipPos(pos); + return getLine(pos.line).getTokenAt(mode, getStateBefore(pos.line), pos.ch); + }), + getStateAfter: function(line) { + line = clipLine(line == null ? doc.size - 1: line); + return getStateBefore(line + 1); + }, + cursorCoords: function(start, mode) { + if (start == null) start = sel.inverted; + return this.charCoords(start ? sel.from : sel.to, mode); + }, + charCoords: function(pos, mode) { + pos = clipPos(pos); + if (mode == "local") return localCoords(pos, false); + if (mode == "div") return localCoords(pos, true); + return pageCoords(pos); + }, + coordsChar: function(coords) { + var off = eltOffset(lineSpace); + return coordsChar(coords.x - off.left, coords.y - off.top); + }, + markText: operation(markText), + setBookmark: setBookmark, + findMarksAt: findMarksAt, + setMarker: operation(addGutterMarker), + clearMarker: operation(removeGutterMarker), + setLineClass: operation(setLineClass), + hideLine: operation(function(h) {return setLineHidden(h, true);}), + showLine: operation(function(h) {return setLineHidden(h, false);}), + onDeleteLine: function(line, f) { + if (typeof line == "number") { + if (!isLine(line)) return null; + line = getLine(line); + } + (line.handlers || (line.handlers = [])).push(f); + return line; + }, + lineInfo: lineInfo, + addWidget: function(pos, node, scroll, vert, horiz) { + pos = localCoords(clipPos(pos)); + var top = pos.yBot, left = pos.x; + node.style.position = "absolute"; + code.appendChild(node); + if (vert == "over") top = pos.y; + else if (vert == "near") { + var vspace = Math.max(scroller.offsetHeight, doc.height * textHeight()), + hspace = Math.max(code.clientWidth, lineSpace.clientWidth) - paddingLeft(); + if (pos.yBot + node.offsetHeight > vspace && pos.y > node.offsetHeight) + top = pos.y - node.offsetHeight; + if (left + node.offsetWidth > hspace) + left = hspace - node.offsetWidth; + } + node.style.top = (top + paddingTop()) + "px"; + node.style.left = node.style.right = ""; + if (horiz == "right") { + left = code.clientWidth - node.offsetWidth; + node.style.right = "0px"; + } else { + if (horiz == "left") left = 0; + else if (horiz == "middle") left = (code.clientWidth - node.offsetWidth) / 2; + node.style.left = (left + paddingLeft()) + "px"; + } + if (scroll) + scrollIntoView(left, top, left + node.offsetWidth, top + node.offsetHeight); + }, + + lineCount: function() {return doc.size;}, + clipPos: clipPos, + getCursor: function(start) { + if (start == null) start = sel.inverted; + return copyPos(start ? sel.from : sel.to); + }, + somethingSelected: function() {return !posEq(sel.from, sel.to);}, + setCursor: operation(function(line, ch, user) { + if (ch == null && typeof line.line == "number") setCursor(line.line, line.ch, user); + else setCursor(line, ch, user); + }), + setSelection: operation(function(from, to, user) { + (user ? setSelectionUser : setSelection)(clipPos(from), clipPos(to || from)); + }), + getLine: function(line) {if (isLine(line)) return getLine(line).text;}, + getLineHandle: function(line) {if (isLine(line)) return getLine(line);}, + setLine: operation(function(line, text) { + if (isLine(line)) replaceRange(text, {line: line, ch: 0}, {line: line, ch: getLine(line).text.length}); + }), + removeLine: operation(function(line) { + if (isLine(line)) replaceRange("", {line: line, ch: 0}, clipPos({line: line+1, ch: 0})); + }), + replaceRange: operation(replaceRange), + getRange: function(from, to, lineSep) {return getRange(clipPos(from), clipPos(to), lineSep);}, + + triggerOnKeyDown: operation(onKeyDown), + execCommand: function(cmd) {return commands[cmd](instance);}, + // Stuff used by commands, probably not much use to outside code. + moveH: operation(moveH), + deleteH: operation(deleteH), + moveV: operation(moveV), + toggleOverwrite: function() { + if(overwrite){ + overwrite = false; + cursor.className = cursor.className.replace(" CodeMirror-overwrite", ""); + } else { + overwrite = true; + cursor.className += " CodeMirror-overwrite"; + } + }, + + posFromIndex: function(off) { + var lineNo = 0, ch; + doc.iter(0, doc.size, function(line) { + var sz = line.text.length + 1; + if (sz > off) { ch = off; return true; } + off -= sz; + ++lineNo; + }); + return clipPos({line: lineNo, ch: ch}); + }, + indexFromPos: function (coords) { + if (coords.line < 0 || coords.ch < 0) return 0; + var index = coords.ch; + doc.iter(0, coords.line, function (line) { + index += line.text.length + 1; + }); + return index; + }, + scrollTo: function(x, y) { + if (x != null) scroller.scrollLeft = x; + if (y != null) scrollbar.scrollTop = y; + updateDisplay([]); + }, + getScrollInfo: function() { + return {x: scroller.scrollLeft, y: scrollbar.scrollTop, + height: scrollbar.scrollHeight, width: scroller.scrollWidth}; + }, + setSize: function(width, height) { + function interpret(val) { + val = String(val); + return /^\d+$/.test(val) ? val + "px" : val; + } + if (width != null) wrapper.style.width = interpret(width); + if (height != null) scroller.style.height = interpret(height); + }, + + operation: function(f){return operation(f)();}, + compoundChange: function(f){return compoundChange(f);}, + refresh: function(){ + updateDisplay(true, null, lastScrollTop); + if (scrollbar.scrollHeight > lastScrollTop) + scrollbar.scrollTop = lastScrollTop; + }, + getInputField: function(){return input;}, + getWrapperElement: function(){return wrapper;}, + getScrollerElement: function(){return scroller;}, + getGutterElement: function(){return gutter;} + }; + + function getLine(n) { return getLineAt(doc, n); } + function updateLineHeight(line, height) { + gutterDirty = true; + var diff = height - line.height; + for (var n = line; n; n = n.parent) n.height += diff; + } + + function setValue(code) { + var top = {line: 0, ch: 0}; + updateLines(top, {line: doc.size - 1, ch: getLine(doc.size-1).text.length}, + splitLines(code), top, top); + updateInput = true; + } + function getValue(lineSep) { + var text = []; + doc.iter(0, doc.size, function(line) { text.push(line.text); }); + return text.join(lineSep || "\n"); + } + + function onScroll(e) { + if (scroller.scrollTop) { + scrollbar.scrollTop += scroller.scrollTop; + scroller.scrollTop = 0; + } + if (lastScrollTop != scrollbar.scrollTop || lastScrollLeft != scroller.scrollLeft) { + lastScrollTop = scrollbar.scrollTop; + lastScrollLeft = scroller.scrollLeft; + updateDisplay([]); + if (options.fixedGutter) gutter.style.left = scroller.scrollLeft + "px"; + if (options.onScroll) options.onScroll(instance); + } + } + + function onMouseDown(e) { + setShift(e_prop(e, "shiftKey")); + // Check whether this is a click in a widget + for (var n = e_target(e); n != wrapper; n = n.parentNode) + if (n.parentNode == code && n != mover) return; + + // See if this is a click in the gutter + for (var n = e_target(e); n != wrapper; n = n.parentNode) + if (n.parentNode == gutterText) { + if (options.onGutterClick) + options.onGutterClick(instance, indexOf(gutterText.childNodes, n) + showingFrom, e); + return e_preventDefault(e); + } + + var start = posFromMouse(e); + + switch (e_button(e)) { + case 3: + if (gecko) onContextMenu(e); + return; + case 2: + if (start) setCursor(start.line, start.ch, true); + setTimeout(focusInput, 20); + e_preventDefault(e); + return; + } + // For button 1, if it was clicked inside the editor + // (posFromMouse returning non-null), we have to adjust the + // selection. + if (!start) {if (e_target(e) == scroller) e_preventDefault(e); return;} + + if (!focused) onFocus(); + + var now = +new Date, type = "single"; + if (lastDoubleClick && lastDoubleClick.time > now - 400 && posEq(lastDoubleClick.pos, start)) { + type = "triple"; + e_preventDefault(e); + setTimeout(focusInput, 20); + selectLine(start.line); + } else if (lastClick && lastClick.time > now - 400 && posEq(lastClick.pos, start)) { + type = "double"; + lastDoubleClick = {time: now, pos: start}; + e_preventDefault(e); + var word = findWordAt(start); + setSelectionUser(word.from, word.to); + } else { lastClick = {time: now, pos: start}; } + + var last = start, going; + if (options.dragDrop && dragAndDrop && !options.readOnly && !posEq(sel.from, sel.to) && + !posLess(start, sel.from) && !posLess(sel.to, start) && type == "single") { + // Let the drag handler handle this. + if (webkit) scroller.draggable = true; + function dragEnd(e2) { + if (webkit) scroller.draggable = false; + draggingText = false; + up(); drop(); + if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { + e_preventDefault(e2); + setCursor(start.line, start.ch, true); + focusInput(); + } + } + var up = connect(document, "mouseup", operation(dragEnd), true); + var drop = connect(scroller, "drop", operation(dragEnd), true); + draggingText = true; + // IE's approach to draggable + if (scroller.dragDrop) scroller.dragDrop(); + return; + } + e_preventDefault(e); + if (type == "single") setCursor(start.line, start.ch, true); + + var startstart = sel.from, startend = sel.to; + + function doSelect(cur) { + if (type == "single") { + setSelectionUser(start, cur); + } else if (type == "double") { + var word = findWordAt(cur); + if (posLess(cur, startstart)) setSelectionUser(word.from, startend); + else setSelectionUser(startstart, word.to); + } else if (type == "triple") { + if (posLess(cur, startstart)) setSelectionUser(startend, clipPos({line: cur.line, ch: 0})); + else setSelectionUser(startstart, clipPos({line: cur.line + 1, ch: 0})); + } + } + + function extend(e) { + var cur = posFromMouse(e, true); + if (cur && !posEq(cur, last)) { + if (!focused) onFocus(); + last = cur; + doSelect(cur); + updateInput = false; + var visible = visibleLines(); + if (cur.line >= visible.to || cur.line < visible.from) + going = setTimeout(operation(function(){extend(e);}), 150); + } + } + + function done(e) { + clearTimeout(going); + var cur = posFromMouse(e); + if (cur) doSelect(cur); + e_preventDefault(e); + focusInput(); + updateInput = true; + move(); up(); + } + var move = connect(document, "mousemove", operation(function(e) { + clearTimeout(going); + e_preventDefault(e); + if (!ie && !e_button(e)) done(e); + else extend(e); + }), true); + var up = connect(document, "mouseup", operation(done), true); + } + function onDoubleClick(e) { + for (var n = e_target(e); n != wrapper; n = n.parentNode) + if (n.parentNode == gutterText) return e_preventDefault(e); + e_preventDefault(e); + } + function onDrop(e) { + if (options.onDragEvent && options.onDragEvent(instance, addStop(e))) return; + e.preventDefault(); + var pos = posFromMouse(e, true), files = e.dataTransfer.files; + if (!pos || options.readOnly) return; + if (files && files.length && window.FileReader && window.File) { + function loadFile(file, i) { + var reader = new FileReader; + reader.onload = function() { + text[i] = reader.result; + if (++read == n) { + pos = clipPos(pos); + operation(function() { + var end = replaceRange(text.join(""), pos, pos); + setSelectionUser(pos, end); + })(); + } + }; + reader.readAsText(file); + } + var n = files.length, text = Array(n), read = 0; + for (var i = 0; i < n; ++i) loadFile(files[i], i); + } else { + // Don't do a replace if the drop happened inside of the selected text. + if (draggingText && !(posLess(pos, sel.from) || posLess(sel.to, pos))) return; + try { + var text = e.dataTransfer.getData("Text"); + if (text) { + compoundChange(function() { + var curFrom = sel.from, curTo = sel.to; + setSelectionUser(pos, pos); + if (draggingText) replaceRange("", curFrom, curTo); + replaceSelection(text); + focusInput(); + }); + } + } + catch(e){} + } + } + function onDragStart(e) { + var txt = getSelection(); + e.dataTransfer.setData("Text", txt); + + // Use dummy image instead of default browsers image. + if (gecko || chrome || opera) { + var img = document.createElement('img'); + img.scr = 'data:image/gif;base64,R0lGODdhAgACAIAAAAAAAP///ywAAAAAAgACAAACAoRRADs='; //1x1 image + e.dataTransfer.setDragImage(img, 0, 0); + } + } + + function doHandleBinding(bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound]; + if (!bound) return false; + } + var prevShift = shiftSelecting; + try { + if (options.readOnly) suppressEdits = true; + if (dropShift) shiftSelecting = null; + bound(instance); + } catch(e) { + if (e != Pass) throw e; + return false; + } finally { + shiftSelecting = prevShift; + suppressEdits = false; + } + return true; + } + function handleKeyBinding(e) { + // Handle auto keymap transitions + var startMap = getKeyMap(options.keyMap), next = startMap.auto; + clearTimeout(maybeTransition); + if (next && !isModifierKey(e)) maybeTransition = setTimeout(function() { + if (getKeyMap(options.keyMap) == startMap) { + options.keyMap = (next.call ? next.call(null, instance) : next); + } + }, 50); + + var name = keyNames[e_prop(e, "keyCode")], handled = false; + if (name == null || e.altGraphKey) return false; + if (e_prop(e, "altKey")) name = "Alt-" + name; + if (e_prop(e, "ctrlKey")) name = "Ctrl-" + name; + if (e_prop(e, "metaKey")) name = "Cmd-" + name; + + var stopped = false; + function stop() { stopped = true; } + + if (e_prop(e, "shiftKey")) { + handled = lookupKey("Shift-" + name, options.extraKeys, options.keyMap, + function(b) {return doHandleBinding(b, true);}, stop) + || lookupKey(name, options.extraKeys, options.keyMap, function(b) { + if (typeof b == "string" && /^go[A-Z]/.test(b)) return doHandleBinding(b); + }, stop); + } else { + handled = lookupKey(name, options.extraKeys, options.keyMap, doHandleBinding, stop); + } + if (stopped) handled = false; + if (handled) { + e_preventDefault(e); + restartBlink(); + if (ie) { e.oldKeyCode = e.keyCode; e.keyCode = 0; } + } + return handled; + } + function handleCharBinding(e, ch) { + var handled = lookupKey("'" + ch + "'", options.extraKeys, + options.keyMap, function(b) { return doHandleBinding(b, true); }); + if (handled) { + e_preventDefault(e); + restartBlink(); + } + return handled; + } + + var lastStoppedKey = null, maybeTransition; + function onKeyDown(e) { + if (!focused) onFocus(); + if (ie && e.keyCode == 27) { e.returnValue = false; } + if (pollingFast) { if (readInput()) pollingFast = false; } + if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return; + var code = e_prop(e, "keyCode"); + // IE does strange things with escape. + setShift(code == 16 || e_prop(e, "shiftKey")); + // First give onKeyEvent option a chance to handle this. + var handled = handleKeyBinding(e); + if (opera) { + lastStoppedKey = handled ? code : null; + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && e_prop(e, mac ? "metaKey" : "ctrlKey")) + replaceSelection(""); + } + } + function onKeyPress(e) { + if (pollingFast) readInput(); + if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return; + var keyCode = e_prop(e, "keyCode"), charCode = e_prop(e, "charCode"); + if (opera && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} + if (((opera && (!e.which || e.which < 10)) || khtml) && handleKeyBinding(e)) return; + var ch = String.fromCharCode(charCode == null ? keyCode : charCode); + if (options.electricChars && mode.electricChars && options.smartIndent && !options.readOnly) { + if (mode.electricChars.indexOf(ch) > -1) + setTimeout(operation(function() {indentLine(sel.to.line, "smart");}), 75); + } + if (handleCharBinding(e, ch)) return; + fastPoll(); + } + function onKeyUp(e) { + if (options.onKeyEvent && options.onKeyEvent(instance, addStop(e))) return; + if (e_prop(e, "keyCode") == 16) shiftSelecting = null; + } + + function onFocus() { + if (options.readOnly == "nocursor") return; + if (!focused) { + if (options.onFocus) options.onFocus(instance); + focused = true; + if (scroller.className.search(/\bCodeMirror-focused\b/) == -1) + scroller.className += " CodeMirror-focused"; + if (!leaveInputAlone) resetInput(true); + } + slowPoll(); + restartBlink(); + } + function onBlur() { + if (focused) { + if (options.onBlur) options.onBlur(instance); + focused = false; + if (bracketHighlighted) + operation(function(){ + if (bracketHighlighted) { bracketHighlighted(); bracketHighlighted = null; } + })(); + scroller.className = scroller.className.replace(" CodeMirror-focused", ""); + } + clearInterval(blinker); + setTimeout(function() {if (!focused) shiftSelecting = null;}, 150); + } + + function chopDelta(delta) { + // Make sure we always scroll a little bit for any nonzero delta. + if (delta > 0.0 && delta < 1.0) return 1; + else if (delta > -1.0 && delta < 0.0) return -1; + else return Math.round(delta); + } + + function onMouseWheel(e) { + var deltaX = 0, deltaY = 0; + if (e.type == "DOMMouseScroll") { // Firefox + var delta = -e.detail * 8.0; + if (e.axis == e.HORIZONTAL_AXIS) deltaX = delta; + else if (e.axis == e.VERTICAL_AXIS) deltaY = delta; + } else if (e.wheelDeltaX !== undefined && e.wheelDeltaY !== undefined) { // WebKit + deltaX = e.wheelDeltaX / 3.0; + deltaY = e.wheelDeltaY / 3.0; + } else if (e.wheelDelta !== undefined) { // IE or Opera + deltaY = e.wheelDelta / 3.0; + } + + var scrolled = false; + deltaX = chopDelta(deltaX); + deltaY = chopDelta(deltaY); + if ((deltaX > 0 && scroller.scrollLeft > 0) || + (deltaX < 0 && scroller.scrollLeft + scroller.clientWidth < scroller.scrollWidth)) { + scroller.scrollLeft -= deltaX; + scrolled = true; + } + if ((deltaY > 0 && scrollbar.scrollTop > 0) || + (deltaY < 0 && scrollbar.scrollTop + scrollbar.clientHeight < scrollbar.scrollHeight)) { + scrollbar.scrollTop -= deltaY; + scrolled = true; + } + if (scrolled) e_stop(e); + } + + // Replace the range from from to to by the strings in newText. + // Afterwards, set the selection to selFrom, selTo. + function updateLines(from, to, newText, selFrom, selTo) { + if (suppressEdits) return; + if (history) { + var old = []; + doc.iter(from.line, to.line + 1, function(line) { old.push(line.text); }); + history.addChange(from.line, newText.length, old); + while (history.done.length > options.undoDepth) history.done.shift(); + } + updateLinesNoUndo(from, to, newText, selFrom, selTo); + } + function unredoHelper(from, to) { + if (!from.length) return; + var set = from.pop(), out = []; + for (var i = set.length - 1; i >= 0; i -= 1) { + var change = set[i]; + var replaced = [], end = change.start + change.added; + doc.iter(change.start, end, function(line) { replaced.push(line.text); }); + out.push({start: change.start, added: change.old.length, old: replaced}); + var pos = {line: change.start + change.old.length - 1, + ch: editEnd(replaced[replaced.length-1], change.old[change.old.length-1])}; + updateLinesNoUndo({line: change.start, ch: 0}, {line: end - 1, ch: getLine(end-1).text.length}, change.old, pos, pos); + } + updateInput = true; + to.push(out); + } + function undo() {unredoHelper(history.done, history.undone);} + function redo() {unredoHelper(history.undone, history.done);} + + function updateLinesNoUndo(from, to, newText, selFrom, selTo) { + if (suppressEdits) return; + var recomputeMaxLength = false, maxLineLength = maxLine.length; + if (!options.lineWrapping) + doc.iter(from.line, to.line + 1, function(line) { + if (!line.hidden && line.text.length == maxLineLength) {recomputeMaxLength = true; return true;} + }); + if (from.line != to.line || newText.length > 1) gutterDirty = true; + + var nlines = to.line - from.line, firstLine = getLine(from.line), lastLine = getLine(to.line); + // First adjust the line structure, taking some care to leave highlighting intact. + if (from.ch == 0 && to.ch == 0 && newText[newText.length - 1] == "") { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + var added = [], prevLine = null; + if (from.line) { + prevLine = getLine(from.line - 1); + prevLine.fixMarkEnds(lastLine); + } else lastLine.fixMarkStarts(); + for (var i = 0, e = newText.length - 1; i < e; ++i) + added.push(Line.inheritMarks(newText[i], prevLine)); + if (nlines) doc.remove(from.line, nlines, callbacks); + if (added.length) doc.insert(from.line, added); + } else if (firstLine == lastLine) { + if (newText.length == 1) + firstLine.replace(from.ch, to.ch, newText[0]); + else { + lastLine = firstLine.split(to.ch, newText[newText.length-1]); + firstLine.replace(from.ch, null, newText[0]); + firstLine.fixMarkEnds(lastLine); + var added = []; + for (var i = 1, e = newText.length - 1; i < e; ++i) + added.push(Line.inheritMarks(newText[i], firstLine)); + added.push(lastLine); + doc.insert(from.line + 1, added); + } + } else if (newText.length == 1) { + firstLine.replace(from.ch, null, newText[0]); + lastLine.replace(null, to.ch, ""); + firstLine.append(lastLine); + doc.remove(from.line + 1, nlines, callbacks); + } else { + var added = []; + firstLine.replace(from.ch, null, newText[0]); + lastLine.replace(null, to.ch, newText[newText.length-1]); + firstLine.fixMarkEnds(lastLine); + for (var i = 1, e = newText.length - 1; i < e; ++i) + added.push(Line.inheritMarks(newText[i], firstLine)); + if (nlines > 1) doc.remove(from.line + 1, nlines - 1, callbacks); + doc.insert(from.line + 1, added); + } + if (options.lineWrapping) { + var perLine = Math.max(5, scroller.clientWidth / charWidth() - 3); + doc.iter(from.line, from.line + newText.length, function(line) { + if (line.hidden) return; + var guess = Math.ceil(line.text.length / perLine) || 1; + if (guess != line.height) updateLineHeight(line, guess); + }); + } else { + doc.iter(from.line, from.line + newText.length, function(line) { + var l = line.text; + if (!line.hidden && l.length > maxLineLength) { + maxLine = l; maxLineLength = l.length; maxLineChanged = true; + recomputeMaxLength = false; + } + }); + if (recomputeMaxLength) updateMaxLine = true; + } + + // Add these lines to the work array, so that they will be + // highlighted. Adjust work lines if lines were added/removed. + var newWork = [], lendiff = newText.length - nlines - 1; + for (var i = 0, l = work.length; i < l; ++i) { + var task = work[i]; + if (task < from.line) newWork.push(task); + else if (task > to.line) newWork.push(task + lendiff); + } + var hlEnd = from.line + Math.min(newText.length, 500); + highlightLines(from.line, hlEnd); + newWork.push(hlEnd); + work = newWork; + startWorker(100); + // Remember that these lines changed, for updating the display + changes.push({from: from.line, to: to.line + 1, diff: lendiff}); + var changeObj = {from: from, to: to, text: newText}; + if (textChanged) { + for (var cur = textChanged; cur.next; cur = cur.next) {} + cur.next = changeObj; + } else textChanged = changeObj; + + // Update the selection + function updateLine(n) {return n <= Math.min(to.line, to.line + lendiff) ? n : n + lendiff;} + setSelection(clipPos(selFrom), clipPos(selTo), + updateLine(sel.from.line), updateLine(sel.to.line)); + } + + function needsScrollbar() { + var realHeight = doc.height * textHeight() + 2 * paddingTop(); + return realHeight - 1 > scroller.offsetHeight ? realHeight : false; + } + + function updateVerticalScroll(scrollTop) { + var scrollHeight = needsScrollbar(); + scrollbar.style.display = scrollHeight ? "block" : "none"; + if (scrollHeight) { + scrollbarInner.style.height = scrollHeight + "px"; + scrollbar.style.height = scroller.offsetHeight + "px"; + if (scrollTop != null) scrollbar.scrollTop = scrollTop; + } + // Position the mover div to align with the current virtual scroll position + mover.style.top = (displayOffset * textHeight() - scrollbar.scrollTop) + "px"; + } + + // On Mac OS X Lion and up, detect whether the mouse is plugged in by measuring + // the width of a div with a scrollbar in it. If the width is <= 1, then + // the mouse isn't plugged in and scrollbars should overlap the content. + function overlapScrollbars() { + var tmpSb = document.createElement('div'), + tmpSbInner = document.createElement('div'); + tmpSb.className = "CodeMirror-scrollbar"; + tmpSb.style.cssText = "position: absolute; left: -9999px; height: 100px;"; + tmpSbInner.className = "CodeMirror-scrollbar-inner"; + tmpSbInner.style.height = "200px"; + tmpSb.appendChild(tmpSbInner); + + document.body.appendChild(tmpSb); + var result = (tmpSb.offsetWidth <= 1); + document.body.removeChild(tmpSb); + return result; + } + + function computeMaxLength() { + var maxLineLength = 0; + maxLine = ""; maxLineChanged = true; + doc.iter(0, doc.size, function(line) { + var l = line.text; + if (!line.hidden && l.length > maxLineLength) { + maxLineLength = l.length; maxLine = l; + } + }); + updateMaxLine = false; + } + + function replaceRange(code, from, to) { + from = clipPos(from); + if (!to) to = from; else to = clipPos(to); + code = splitLines(code); + function adjustPos(pos) { + if (posLess(pos, from)) return pos; + if (!posLess(to, pos)) return end; + var line = pos.line + code.length - (to.line - from.line) - 1; + var ch = pos.ch; + if (pos.line == to.line) + ch += code[code.length-1].length - (to.ch - (to.line == from.line ? from.ch : 0)); + return {line: line, ch: ch}; + } + var end; + replaceRange1(code, from, to, function(end1) { + end = end1; + return {from: adjustPos(sel.from), to: adjustPos(sel.to)}; + }); + return end; + } + function replaceSelection(code, collapse) { + replaceRange1(splitLines(code), sel.from, sel.to, function(end) { + if (collapse == "end") return {from: end, to: end}; + else if (collapse == "start") return {from: sel.from, to: sel.from}; + else return {from: sel.from, to: end}; + }); + } + function replaceRange1(code, from, to, computeSel) { + var endch = code.length == 1 ? code[0].length + from.ch : code[code.length-1].length; + var newSel = computeSel({line: from.line + code.length - 1, ch: endch}); + updateLines(from, to, code, newSel.from, newSel.to); + } + + function getRange(from, to, lineSep) { + var l1 = from.line, l2 = to.line; + if (l1 == l2) return getLine(l1).text.slice(from.ch, to.ch); + var code = [getLine(l1).text.slice(from.ch)]; + doc.iter(l1 + 1, l2, function(line) { code.push(line.text); }); + code.push(getLine(l2).text.slice(0, to.ch)); + return code.join(lineSep || "\n"); + } + function getSelection(lineSep) { + return getRange(sel.from, sel.to, lineSep); + } + + var pollingFast = false; // Ensures slowPoll doesn't cancel fastPoll + function slowPoll() { + if (pollingFast) return; + poll.set(options.pollInterval, function() { + startOperation(); + readInput(); + if (focused) slowPoll(); + endOperation(); + }); + } + function fastPoll() { + var missed = false; + pollingFast = true; + function p() { + startOperation(); + var changed = readInput(); + if (!changed && !missed) {missed = true; poll.set(60, p);} + else {pollingFast = false; slowPoll();} + endOperation(); + } + poll.set(20, p); + } + + // Previnput is a hack to work with IME. If we reset the textarea + // on every change, that breaks IME. So we look for changes + // compared to the previous content instead. (Modern browsers have + // events that indicate IME taking place, but these are not widely + // supported or compatible enough yet to rely on.) + var prevInput = ""; + function readInput() { + if (leaveInputAlone || !focused || hasSelection(input) || options.readOnly) return false; + var text = input.value; + if (text == prevInput) return false; + shiftSelecting = null; + var same = 0, l = Math.min(prevInput.length, text.length); + while (same < l && prevInput[same] == text[same]) ++same; + if (same < prevInput.length) + sel.from = {line: sel.from.line, ch: sel.from.ch - (prevInput.length - same)}; + else if (overwrite && posEq(sel.from, sel.to)) + sel.to = {line: sel.to.line, ch: Math.min(getLine(sel.to.line).text.length, sel.to.ch + (text.length - same))}; + replaceSelection(text.slice(same), "end"); + if (text.length > 1000) { input.value = prevInput = ""; } + else prevInput = text; + return true; + } + function resetInput(user) { + if (!posEq(sel.from, sel.to)) { + prevInput = ""; + input.value = getSelection(); + selectInput(input); + } else if (user) prevInput = input.value = ""; + } + + function focusInput() { + if (options.readOnly != "nocursor") input.focus(); + } + + function scrollEditorIntoView() { + var rect = cursor.getBoundingClientRect(); + // IE returns bogus coordinates when the instance sits inside of an iframe and the cursor is hidden + if (ie && rect.top == rect.bottom) return; + var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight); + if (rect.top < 0 || rect.bottom > winH) scrollCursorIntoView(); + } + function scrollCursorIntoView() { + var coords = calculateCursorCoords(); + return scrollIntoView(coords.x, coords.y, coords.x, coords.yBot); + } + function calculateCursorCoords() { + var cursor = localCoords(sel.inverted ? sel.from : sel.to); + var x = options.lineWrapping ? Math.min(cursor.x, lineSpace.offsetWidth) : cursor.x; + return {x: x, y: cursor.y, yBot: cursor.yBot}; + } + function scrollIntoView(x1, y1, x2, y2) { + var scrollPos = calculateScrollPos(x1, y1, x2, y2), scrolled = false; + if (scrollPos.scrollLeft != null) {scroller.scrollLeft = scrollPos.scrollLeft; scrolled = true;} + if (scrollPos.scrollTop != null) {scrollbar.scrollTop = scrollPos.scrollTop; scrolled = true;} + if (scrolled && options.onScroll) options.onScroll(instance); + } + function calculateScrollPos(x1, y1, x2, y2) { + var pl = paddingLeft(), pt = paddingTop(); + y1 += pt; y2 += pt; x1 += pl; x2 += pl; + var screen = scroller.clientHeight, screentop = scrollbar.scrollTop, result = {}; + var docBottom = scroller.scrollHeight; + var atTop = y1 < pt + 10, atBottom = y2 + pt > docBottom - 10;; + if (y1 < screentop) result.scrollTop = atTop ? 0 : Math.max(0, y1); + else if (y2 > screentop + screen) result.scrollTop = (atBottom ? docBottom : y2) - screen; + + var screenw = scroller.clientWidth, screenleft = scroller.scrollLeft; + var gutterw = options.fixedGutter ? gutter.clientWidth : 0; + var atLeft = x1 < gutterw + pl + 10; + if (x1 < screenleft + gutterw || atLeft) { + if (atLeft) x1 = 0; + result.scrollLeft = Math.max(0, x1 - 10 - gutterw); + } else if (x2 > screenw + screenleft - 3) { + result.scrollLeft = x2 + 10 - screenw; + } + return result; + } + + function visibleLines(scrollTop) { + var lh = textHeight(), top = (scrollTop != null ? scrollTop : scrollbar.scrollTop) - paddingTop(); + var fromHeight = Math.max(0, Math.floor(top / lh)); + var toHeight = Math.ceil((top + scroller.clientHeight) / lh); + return {from: lineAtHeight(doc, fromHeight), + to: lineAtHeight(doc, toHeight)}; + } + // Uses a set of changes plus the current scroll position to + // determine which DOM updates have to be made, and makes the + // updates. + function updateDisplay(changes, suppressCallback, scrollTop) { + if (!scroller.clientWidth) { + showingFrom = showingTo = displayOffset = 0; + return; + } + // Compute the new visible window + // If scrollTop is specified, use that to determine which lines + // to render instead of the current scrollbar position. + var visible = visibleLines(scrollTop); + // Bail out if the visible area is already rendered and nothing changed. + if (changes !== true && changes.length == 0 && visible.from > showingFrom && visible.to < showingTo) { + updateVerticalScroll(scrollTop); + return; + } + var from = Math.max(visible.from - 100, 0), to = Math.min(doc.size, visible.to + 100); + if (showingFrom < from && from - showingFrom < 20) from = showingFrom; + if (showingTo > to && showingTo - to < 20) to = Math.min(doc.size, showingTo); + + // Create a range of theoretically intact lines, and punch holes + // in that using the change info. + var intact = changes === true ? [] : + computeIntact([{from: showingFrom, to: showingTo, domStart: 0}], changes); + // Clip off the parts that won't be visible + var intactLines = 0; + for (var i = 0; i < intact.length; ++i) { + var range = intact[i]; + if (range.from < from) {range.domStart += (from - range.from); range.from = from;} + if (range.to > to) range.to = to; + if (range.from >= range.to) intact.splice(i--, 1); + else intactLines += range.to - range.from; + } + if (intactLines == to - from && from == showingFrom && to == showingTo) { + updateVerticalScroll(scrollTop); + return; + } + intact.sort(function(a, b) {return a.domStart - b.domStart;}); + + var th = textHeight(), gutterDisplay = gutter.style.display; + lineDiv.style.display = "none"; + patchDisplay(from, to, intact); + lineDiv.style.display = gutter.style.display = ""; + + var different = from != showingFrom || to != showingTo || lastSizeC != scroller.clientHeight + th; + // This is just a bogus formula that detects when the editor is + // resized or the font size changes. + if (different) lastSizeC = scroller.clientHeight + th; + showingFrom = from; showingTo = to; + displayOffset = heightAtLine(doc, from); + + // Since this is all rather error prone, it is honoured with the + // only assertion in the whole file. + if (lineDiv.childNodes.length != showingTo - showingFrom) + throw new Error("BAD PATCH! " + JSON.stringify(intact) + " size=" + (showingTo - showingFrom) + + " nodes=" + lineDiv.childNodes.length); + + function checkHeights() { + var curNode = lineDiv.firstChild, heightChanged = false; + doc.iter(showingFrom, showingTo, function(line) { + if (!line.hidden) { + var height = Math.round(curNode.offsetHeight / th) || 1; + if (line.height != height) { + updateLineHeight(line, height); + gutterDirty = heightChanged = true; + } + } + curNode = curNode.nextSibling; + }); + return heightChanged; + } + + if (options.lineWrapping) { + checkHeights(); + var scrollHeight = needsScrollbar(); + var shouldHaveScrollbar = scrollHeight ? "block" : "none"; + if (scrollbar.style.display != shouldHaveScrollbar) { + scrollbar.style.display = shouldHaveScrollbar; + if (scrollHeight) scrollbarInner.style.height = scrollHeight + "px"; + checkHeights(); + } + } + + gutter.style.display = gutterDisplay; + if (different || gutterDirty) { + // If the gutter grew in size, re-check heights. If those changed, re-draw gutter. + updateGutter() && options.lineWrapping && checkHeights() && updateGutter(); + } + updateVerticalScroll(scrollTop); + updateSelection(); + if (!suppressCallback && options.onUpdate) options.onUpdate(instance); + return true; + } + + function computeIntact(intact, changes) { + for (var i = 0, l = changes.length || 0; i < l; ++i) { + var change = changes[i], intact2 = [], diff = change.diff || 0; + for (var j = 0, l2 = intact.length; j < l2; ++j) { + var range = intact[j]; + if (change.to <= range.from && change.diff) + intact2.push({from: range.from + diff, to: range.to + diff, + domStart: range.domStart}); + else if (change.to <= range.from || change.from >= range.to) + intact2.push(range); + else { + if (change.from > range.from) + intact2.push({from: range.from, to: change.from, domStart: range.domStart}); + if (change.to < range.to) + intact2.push({from: change.to + diff, to: range.to + diff, + domStart: range.domStart + (change.to - range.from)}); + } + } + intact = intact2; + } + return intact; + } + + function patchDisplay(from, to, intact) { + // The first pass removes the DOM nodes that aren't intact. + if (!intact.length) lineDiv.innerHTML = ""; + else { + function killNode(node) { + var tmp = node.nextSibling; + node.parentNode.removeChild(node); + return tmp; + } + var domPos = 0, curNode = lineDiv.firstChild, n; + for (var i = 0; i < intact.length; ++i) { + var cur = intact[i]; + while (cur.domStart > domPos) {curNode = killNode(curNode); domPos++;} + for (var j = 0, e = cur.to - cur.from; j < e; ++j) {curNode = curNode.nextSibling; domPos++;} + } + while (curNode) curNode = killNode(curNode); + } + // This pass fills in the lines that actually changed. + var nextIntact = intact.shift(), curNode = lineDiv.firstChild, j = from; + var scratch = document.createElement("div"); + doc.iter(from, to, function(line) { + if (nextIntact && nextIntact.to == j) nextIntact = intact.shift(); + if (!nextIntact || nextIntact.from > j) { + if (line.hidden) var html = scratch.innerHTML = "
";
+          else {
+            var html = ''
+              + line.getHTML(makeTab) + '';
+            // Kludge to make sure the styled element lies behind the selection (by z-index)
+            if (line.bgClassName)
+              html = '
 
' + html + "
"; + } + scratch.innerHTML = html; + lineDiv.insertBefore(scratch.firstChild, curNode); + } else { + curNode = curNode.nextSibling; + } + ++j; + }); + } + + function updateGutter() { + if (!options.gutter && !options.lineNumbers) return; + var hText = mover.offsetHeight, hEditor = scroller.clientHeight; + gutter.style.height = (hText - hEditor < 2 ? hEditor : hText) + "px"; + var html = [], i = showingFrom, normalNode; + doc.iter(showingFrom, Math.max(showingTo, showingFrom + 1), function(line) { + if (line.hidden) { + html.push("
");
+        } else {
+          var marker = line.gutterMarker;
+          var text = options.lineNumbers ? options.lineNumberFormatter(i + options.firstLineNumber) : null;
+          if (marker && marker.text)
+            text = marker.text.replace("%N%", text != null ? text : "");
+          else if (text == null)
+            text = "\u00a0";
+          html.push((marker && marker.style ? '
' : "
"), text);
+          for (var j = 1; j < line.height; ++j) html.push("
 "); + html.push("
"); + if (!marker) normalNode = i; + } + ++i; + }); + gutter.style.display = "none"; + gutterText.innerHTML = html.join(""); + // Make sure scrolling doesn't cause number gutter size to pop + if (normalNode != null && options.lineNumbers) { + var node = gutterText.childNodes[normalNode - showingFrom]; + var minwidth = String(doc.size).length, val = eltText(node.firstChild), pad = ""; + while (val.length + pad.length < minwidth) pad += "\u00a0"; + if (pad) node.insertBefore(document.createTextNode(pad), node.firstChild); + } + gutter.style.display = ""; + var resized = Math.abs((parseInt(lineSpace.style.marginLeft) || 0) - gutter.offsetWidth) > 2; + lineSpace.style.marginLeft = gutter.offsetWidth + "px"; + gutterDirty = false; + return resized; + } + function updateSelection() { + var collapsed = posEq(sel.from, sel.to); + var fromPos = localCoords(sel.from, true); + var toPos = collapsed ? fromPos : localCoords(sel.to, true); + var headPos = sel.inverted ? fromPos : toPos, th = textHeight(); + var wrapOff = eltOffset(wrapper), lineOff = eltOffset(lineDiv); + inputDiv.style.top = Math.max(0, Math.min(scroller.offsetHeight, headPos.y + lineOff.top - wrapOff.top)) + "px"; + inputDiv.style.left = Math.max(0, Math.min(scroller.offsetWidth, headPos.x + lineOff.left - wrapOff.left)) + "px"; + if (collapsed) { + cursor.style.top = headPos.y + "px"; + cursor.style.left = (options.lineWrapping ? Math.min(headPos.x, lineSpace.offsetWidth) : headPos.x) + "px"; + cursor.style.display = ""; + selectionDiv.style.display = "none"; + } else { + var sameLine = fromPos.y == toPos.y, html = ""; + var clientWidth = lineSpace.clientWidth || lineSpace.offsetWidth; + var clientHeight = lineSpace.clientHeight || lineSpace.offsetHeight; + function add(left, top, right, height) { + var rstyle = quirksMode ? "width: " + (!right ? clientWidth : clientWidth - right - left) + "px" + : "right: " + right + "px"; + html += '
'; + } + if (sel.from.ch && fromPos.y >= 0) { + var right = sameLine ? clientWidth - toPos.x : 0; + add(fromPos.x, fromPos.y, right, th); + } + var middleStart = Math.max(0, fromPos.y + (sel.from.ch ? th : 0)); + var middleHeight = Math.min(toPos.y, clientHeight) - middleStart; + if (middleHeight > 0.2 * th) + add(0, middleStart, 0, middleHeight); + if ((!sameLine || !sel.from.ch) && toPos.y < clientHeight - .5 * th) + add(0, toPos.y, clientWidth - toPos.x, th); + selectionDiv.innerHTML = html; + cursor.style.display = "none"; + selectionDiv.style.display = ""; + } + } + + function setShift(val) { + if (val) shiftSelecting = shiftSelecting || (sel.inverted ? sel.to : sel.from); + else shiftSelecting = null; + } + function setSelectionUser(from, to) { + var sh = shiftSelecting && clipPos(shiftSelecting); + if (sh) { + if (posLess(sh, from)) from = sh; + else if (posLess(to, sh)) to = sh; + } + setSelection(from, to); + userSelChange = true; + } + // Update the selection. Last two args are only used by + // updateLines, since they have to be expressed in the line + // numbers before the update. + function setSelection(from, to, oldFrom, oldTo) { + goalColumn = null; + if (oldFrom == null) {oldFrom = sel.from.line; oldTo = sel.to.line;} + if (posEq(sel.from, from) && posEq(sel.to, to)) return; + if (posLess(to, from)) {var tmp = to; to = from; from = tmp;} + + // Skip over hidden lines. + if (from.line != oldFrom) { + var from1 = skipHidden(from, oldFrom, sel.from.ch); + // If there is no non-hidden line left, force visibility on current line + if (!from1) setLineHidden(from.line, false); + else from = from1; + } + if (to.line != oldTo) to = skipHidden(to, oldTo, sel.to.ch); + + if (posEq(from, to)) sel.inverted = false; + else if (posEq(from, sel.to)) sel.inverted = false; + else if (posEq(to, sel.from)) sel.inverted = true; + + if (options.autoClearEmptyLines && posEq(sel.from, sel.to)) { + var head = sel.inverted ? from : to; + if (head.line != sel.from.line && sel.from.line < doc.size) { + var oldLine = getLine(sel.from.line); + if (/^\s+$/.test(oldLine.text)) + setTimeout(operation(function() { + if (oldLine.parent && /^\s+$/.test(oldLine.text)) { + var no = lineNo(oldLine); + replaceRange("", {line: no, ch: 0}, {line: no, ch: oldLine.text.length}); + } + }, 10)); + } + } + + sel.from = from; sel.to = to; + selectionChanged = true; + } + function skipHidden(pos, oldLine, oldCh) { + function getNonHidden(dir) { + var lNo = pos.line + dir, end = dir == 1 ? doc.size : -1; + while (lNo != end) { + var line = getLine(lNo); + if (!line.hidden) { + var ch = pos.ch; + if (toEnd || ch > oldCh || ch > line.text.length) ch = line.text.length; + return {line: lNo, ch: ch}; + } + lNo += dir; + } + } + var line = getLine(pos.line); + var toEnd = pos.ch == line.text.length && pos.ch != oldCh; + if (!line.hidden) return pos; + if (pos.line >= oldLine) return getNonHidden(1) || getNonHidden(-1); + else return getNonHidden(-1) || getNonHidden(1); + } + function setCursor(line, ch, user) { + var pos = clipPos({line: line, ch: ch || 0}); + (user ? setSelectionUser : setSelection)(pos, pos); + } + + function clipLine(n) {return Math.max(0, Math.min(n, doc.size-1));} + function clipPos(pos) { + if (pos.line < 0) return {line: 0, ch: 0}; + if (pos.line >= doc.size) return {line: doc.size-1, ch: getLine(doc.size-1).text.length}; + var ch = pos.ch, linelen = getLine(pos.line).text.length; + if (ch == null || ch > linelen) return {line: pos.line, ch: linelen}; + else if (ch < 0) return {line: pos.line, ch: 0}; + else return pos; + } + + function findPosH(dir, unit) { + var end = sel.inverted ? sel.from : sel.to, line = end.line, ch = end.ch; + var lineObj = getLine(line); + function findNextLine() { + for (var l = line + dir, e = dir < 0 ? -1 : doc.size; l != e; l += dir) { + var lo = getLine(l); + if (!lo.hidden) { line = l; lineObj = lo; return true; } + } + } + function moveOnce(boundToLine) { + if (ch == (dir < 0 ? 0 : lineObj.text.length)) { + if (!boundToLine && findNextLine()) ch = dir < 0 ? lineObj.text.length : 0; + else return false; + } else ch += dir; + return true; + } + if (unit == "char") moveOnce(); + else if (unit == "column") moveOnce(true); + else if (unit == "word") { + var sawWord = false; + for (;;) { + if (dir < 0) if (!moveOnce()) break; + if (isWordChar(lineObj.text.charAt(ch))) sawWord = true; + else if (sawWord) {if (dir < 0) {dir = 1; moveOnce();} break;} + if (dir > 0) if (!moveOnce()) break; + } + } + return {line: line, ch: ch}; + } + function moveH(dir, unit) { + var pos = dir < 0 ? sel.from : sel.to; + if (shiftSelecting || posEq(sel.from, sel.to)) pos = findPosH(dir, unit); + setCursor(pos.line, pos.ch, true); + } + function deleteH(dir, unit) { + if (!posEq(sel.from, sel.to)) replaceRange("", sel.from, sel.to); + else if (dir < 0) replaceRange("", findPosH(dir, unit), sel.to); + else replaceRange("", sel.from, findPosH(dir, unit)); + userSelChange = true; + } + var goalColumn = null; + function moveV(dir, unit) { + var dist = 0, pos = localCoords(sel.inverted ? sel.from : sel.to, true); + if (goalColumn != null) pos.x = goalColumn; + if (unit == "page") dist = Math.min(scroller.clientHeight, window.innerHeight || document.documentElement.clientHeight); + else if (unit == "line") dist = textHeight(); + var target = coordsChar(pos.x, pos.y + dist * dir + 2); + if (unit == "page") scrollbar.scrollTop += localCoords(target, true).y - pos.y; + setCursor(target.line, target.ch, true); + goalColumn = pos.x; + } + + function findWordAt(pos) { + var line = getLine(pos.line).text; + var start = pos.ch, end = pos.ch; + var check = isWordChar(line.charAt(start < line.length ? start : start - 1)) ? + isWordChar : function(ch) {return !isWordChar(ch);}; + while (start > 0 && check(line.charAt(start - 1))) --start; + while (end < line.length && check(line.charAt(end))) ++end; + return {from: {line: pos.line, ch: start}, to: {line: pos.line, ch: end}}; + } + function selectLine(line) { + setSelectionUser({line: line, ch: 0}, clipPos({line: line + 1, ch: 0})); + } + function indentSelected(mode) { + if (posEq(sel.from, sel.to)) return indentLine(sel.from.line, mode); + var e = sel.to.line - (sel.to.ch ? 0 : 1); + for (var i = sel.from.line; i <= e; ++i) indentLine(i, mode); + } + + function indentLine(n, how) { + if (!how) how = "add"; + if (how == "smart") { + if (!mode.indent) how = "prev"; + else var state = getStateBefore(n); + } + + var line = getLine(n), curSpace = line.indentation(options.tabSize), + curSpaceString = line.text.match(/^\s*/)[0], indentation; + if (how == "smart") { + indentation = mode.indent(state, line.text.slice(curSpaceString.length), line.text); + if (indentation == Pass) how = "prev"; + } + if (how == "prev") { + if (n) indentation = getLine(n-1).indentation(options.tabSize); + else indentation = 0; + } + else if (how == "add") indentation = curSpace + options.indentUnit; + else if (how == "subtract") indentation = curSpace - options.indentUnit; + indentation = Math.max(0, indentation); + var diff = indentation - curSpace; + + var indentString = "", pos = 0; + if (options.indentWithTabs) + for (var i = Math.floor(indentation / options.tabSize); i; --i) {pos += options.tabSize; indentString += "\t";} + while (pos < indentation) {++pos; indentString += " ";} + + replaceRange(indentString, {line: n, ch: 0}, {line: n, ch: curSpaceString.length}); + } + + function loadMode() { + mode = CodeMirror.getMode(options, options.mode); + doc.iter(0, doc.size, function(line) { line.stateAfter = null; }); + work = [0]; + startWorker(); + } + function gutterChanged() { + var visible = options.gutter || options.lineNumbers; + gutter.style.display = visible ? "" : "none"; + if (visible) gutterDirty = true; + else lineDiv.parentNode.style.marginLeft = 0; + } + function wrappingChanged(from, to) { + if (options.lineWrapping) { + wrapper.className += " CodeMirror-wrap"; + var perLine = scroller.clientWidth / charWidth() - 3; + doc.iter(0, doc.size, function(line) { + if (line.hidden) return; + var guess = Math.ceil(line.text.length / perLine) || 1; + if (guess != 1) updateLineHeight(line, guess); + }); + lineSpace.style.width = code.style.width = ""; + widthForcer.style.left = ""; + } else { + wrapper.className = wrapper.className.replace(" CodeMirror-wrap", ""); + maxLine = ""; maxLineChanged = true; + doc.iter(0, doc.size, function(line) { + if (line.height != 1 && !line.hidden) updateLineHeight(line, 1); + if (line.text.length > maxLine.length) maxLine = line.text; + }); + } + changes.push({from: 0, to: doc.size}); + } + function makeTab(col) { + var w = options.tabSize - col % options.tabSize, cached = tabCache[w]; + if (cached) return cached; + for (var str = '', i = 0; i < w; ++i) str += " "; + return (tabCache[w] = {html: str + "", width: w}); + } + function themeChanged() { + scroller.className = scroller.className.replace(/\s*cm-s-\S+/g, "") + + options.theme.replace(/(^|\s)\s*/g, " cm-s-"); + } + function keyMapChanged() { + var style = keyMap[options.keyMap].style; + wrapper.className = wrapper.className.replace(/\s*cm-keymap-\S+/g, "") + + (style ? " cm-keymap-" + style : ""); + } + + function TextMarker() { this.set = []; } + TextMarker.prototype.clear = operation(function() { + var min = Infinity, max = -Infinity; + for (var i = 0, e = this.set.length; i < e; ++i) { + var line = this.set[i], mk = line.marked; + if (!mk || !line.parent) continue; + var lineN = lineNo(line); + min = Math.min(min, lineN); max = Math.max(max, lineN); + for (var j = 0; j < mk.length; ++j) + if (mk[j].marker == this) mk.splice(j--, 1); + } + if (min != Infinity) + changes.push({from: min, to: max + 1}); + }); + TextMarker.prototype.find = function() { + var from, to; + for (var i = 0, e = this.set.length; i < e; ++i) { + var line = this.set[i], mk = line.marked; + for (var j = 0; j < mk.length; ++j) { + var mark = mk[j]; + if (mark.marker == this) { + if (mark.from != null || mark.to != null) { + var found = lineNo(line); + if (found != null) { + if (mark.from != null) from = {line: found, ch: mark.from}; + if (mark.to != null) to = {line: found, ch: mark.to}; + } + } + } + } + } + return {from: from, to: to}; + }; + + function markText(from, to, className) { + from = clipPos(from); to = clipPos(to); + var tm = new TextMarker(); + if (!posLess(from, to)) return tm; + function add(line, from, to, className) { + getLine(line).addMark(new MarkedText(from, to, className, tm)); + } + if (from.line == to.line) add(from.line, from.ch, to.ch, className); + else { + add(from.line, from.ch, null, className); + for (var i = from.line + 1, e = to.line; i < e; ++i) + add(i, null, null, className); + add(to.line, null, to.ch, className); + } + changes.push({from: from.line, to: to.line + 1}); + return tm; + } + + function setBookmark(pos) { + pos = clipPos(pos); + var bm = new Bookmark(pos.ch); + getLine(pos.line).addMark(bm); + return bm; + } + + function findMarksAt(pos) { + pos = clipPos(pos); + var markers = [], marked = getLine(pos.line).marked; + if (!marked) return markers; + for (var i = 0, e = marked.length; i < e; ++i) { + var m = marked[i]; + if ((m.from == null || m.from <= pos.ch) && + (m.to == null || m.to >= pos.ch)) + markers.push(m.marker || m); + } + return markers; + } + + function addGutterMarker(line, text, className) { + if (typeof line == "number") line = getLine(clipLine(line)); + line.gutterMarker = {text: text, style: className}; + gutterDirty = true; + return line; + } + function removeGutterMarker(line) { + if (typeof line == "number") line = getLine(clipLine(line)); + line.gutterMarker = null; + gutterDirty = true; + } + + function changeLine(handle, op) { + var no = handle, line = handle; + if (typeof handle == "number") line = getLine(clipLine(handle)); + else no = lineNo(handle); + if (no == null) return null; + if (op(line, no)) changes.push({from: no, to: no + 1}); + else return null; + return line; + } + function setLineClass(handle, className, bgClassName) { + return changeLine(handle, function(line) { + if (line.className != className || line.bgClassName != bgClassName) { + line.className = className; + line.bgClassName = bgClassName; + return true; + } + }); + } + function setLineHidden(handle, hidden) { + return changeLine(handle, function(line, no) { + if (line.hidden != hidden) { + line.hidden = hidden; + if (!options.lineWrapping) { + var l = line.text; + if (hidden && l.length == maxLine.length) { + updateMaxLine = true; + } else if (!hidden && l.length > maxLine.length) { + maxLine = l; updateMaxLine = false; + } + } + updateLineHeight(line, hidden ? 0 : 1); + var fline = sel.from.line, tline = sel.to.line; + if (hidden && (fline == no || tline == no)) { + var from = fline == no ? skipHidden({line: fline, ch: 0}, fline, 0) : sel.from; + var to = tline == no ? skipHidden({line: tline, ch: 0}, tline, 0) : sel.to; + // Can't hide the last visible line, we'd have no place to put the cursor + if (!to) return; + setSelection(from, to); + } + return (gutterDirty = true); + } + }); + } + + function lineInfo(line) { + if (typeof line == "number") { + if (!isLine(line)) return null; + var n = line; + line = getLine(line); + if (!line) return null; + } else { + var n = lineNo(line); + if (n == null) return null; + } + var marker = line.gutterMarker; + return {line: n, handle: line, text: line.text, markerText: marker && marker.text, + markerClass: marker && marker.style, lineClass: line.className, bgClass: line.bgClassName}; + } + + function stringWidth(str) { + measure.innerHTML = "
x
"; + measure.firstChild.firstChild.firstChild.nodeValue = str; + return measure.firstChild.firstChild.offsetWidth || 10; + } + // These are used to go from pixel positions to character + // positions, taking varying character widths into account. + function charFromX(line, x) { + if (x <= 0) return 0; + var lineObj = getLine(line), text = lineObj.text; + function getX(len) { + return measureLine(lineObj, len).left; + } + var from = 0, fromX = 0, to = text.length, toX; + // Guess a suitable upper bound for our search. + var estimated = Math.min(to, Math.ceil(x / charWidth())); + for (;;) { + var estX = getX(estimated); + if (estX <= x && estimated < to) estimated = Math.min(to, Math.ceil(estimated * 1.2)); + else {toX = estX; to = estimated; break;} + } + if (x > toX) return to; + // Try to guess a suitable lower bound as well. + estimated = Math.floor(to * 0.8); estX = getX(estimated); + if (estX < x) {from = estimated; fromX = estX;} + // Do a binary search between these bounds. + for (;;) { + if (to - from <= 1) return (toX - x > x - fromX) ? from : to; + var middle = Math.ceil((from + to) / 2), middleX = getX(middle); + if (middleX > x) {to = middle; toX = middleX;} + else {from = middle; fromX = middleX;} + } + } + + var tempId = "CodeMirror-temp-" + Math.floor(Math.random() * 0xffffff).toString(16); + function measureLine(line, ch) { + if (ch == 0) return {top: 0, left: 0}; + var wbr = options.lineWrapping && ch < line.text.length && + spanAffectsWrapping.test(line.text.slice(ch - 1, ch + 1)); + measure.innerHTML = "
" + line.getHTML(makeTab, ch, tempId, wbr) + "
"; + var elt = document.getElementById(tempId); + var top = elt.offsetTop, left = elt.offsetLeft; + // Older IEs report zero offsets for spans directly after a wrap + if (ie && top == 0 && left == 0) { + var backup = document.createElement("span"); + backup.innerHTML = "x"; + elt.parentNode.insertBefore(backup, elt.nextSibling); + top = backup.offsetTop; + } + return {top: top, left: left}; + } + function localCoords(pos, inLineWrap) { + var x, lh = textHeight(), y = lh * (heightAtLine(doc, pos.line) - (inLineWrap ? displayOffset : 0)); + if (pos.ch == 0) x = 0; + else { + var sp = measureLine(getLine(pos.line), pos.ch); + x = sp.left; + if (options.lineWrapping) y += Math.max(0, sp.top); + } + return {x: x, y: y, yBot: y + lh}; + } + // Coords must be lineSpace-local + function coordsChar(x, y) { + if (y < 0) y = 0; + var th = textHeight(), cw = charWidth(), heightPos = displayOffset + Math.floor(y / th); + var lineNo = lineAtHeight(doc, heightPos); + if (lineNo >= doc.size) return {line: doc.size - 1, ch: getLine(doc.size - 1).text.length}; + var lineObj = getLine(lineNo), text = lineObj.text; + var tw = options.lineWrapping, innerOff = tw ? heightPos - heightAtLine(doc, lineNo) : 0; + if (x <= 0 && innerOff == 0) return {line: lineNo, ch: 0}; + function getX(len) { + var sp = measureLine(lineObj, len); + if (tw) { + var off = Math.round(sp.top / th); + return Math.max(0, sp.left + (off - innerOff) * scroller.clientWidth); + } + return sp.left; + } + var from = 0, fromX = 0, to = text.length, toX; + // Guess a suitable upper bound for our search. + var estimated = Math.min(to, Math.ceil((x + innerOff * scroller.clientWidth * .9) / cw)); + for (;;) { + var estX = getX(estimated); + if (estX <= x && estimated < to) estimated = Math.min(to, Math.ceil(estimated * 1.2)); + else {toX = estX; to = estimated; break;} + } + if (x > toX) return {line: lineNo, ch: to}; + // Try to guess a suitable lower bound as well. + estimated = Math.floor(to * 0.8); estX = getX(estimated); + if (estX < x) {from = estimated; fromX = estX;} + // Do a binary search between these bounds. + for (;;) { + if (to - from <= 1) return {line: lineNo, ch: (toX - x > x - fromX) ? from : to}; + var middle = Math.ceil((from + to) / 2), middleX = getX(middle); + if (middleX > x) {to = middle; toX = middleX;} + else {from = middle; fromX = middleX;} + } + } + function pageCoords(pos) { + var local = localCoords(pos, true), off = eltOffset(lineSpace); + return {x: off.left + local.x, y: off.top + local.y, yBot: off.top + local.yBot}; + } + + var cachedHeight, cachedHeightFor, measureText; + function textHeight() { + if (measureText == null) { + measureText = "
";
+        for (var i = 0; i < 49; ++i) measureText += "x
"; + measureText += "x
"; + } + var offsetHeight = lineDiv.clientHeight; + if (offsetHeight == cachedHeightFor) return cachedHeight; + cachedHeightFor = offsetHeight; + measure.innerHTML = measureText; + cachedHeight = measure.firstChild.offsetHeight / 50 || 1; + measure.innerHTML = ""; + return cachedHeight; + } + var cachedWidth, cachedWidthFor = 0; + function charWidth() { + if (scroller.clientWidth == cachedWidthFor) return cachedWidth; + cachedWidthFor = scroller.clientWidth; + return (cachedWidth = stringWidth("x")); + } + function paddingTop() {return lineSpace.offsetTop;} + function paddingLeft() {return lineSpace.offsetLeft;} + + function posFromMouse(e, liberal) { + var offW = eltOffset(scroller, true), x, y; + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX; y = e.clientY; } catch (e) { return null; } + // This is a mess of a heuristic to try and determine whether a + // scroll-bar was clicked or not, and to return null if one was + // (and !liberal). + if (!liberal && (x - offW.left > scroller.clientWidth || y - offW.top > scroller.clientHeight)) + return null; + var offL = eltOffset(lineSpace, true); + return coordsChar(x - offL.left, y - offL.top); + } + function onContextMenu(e) { + var pos = posFromMouse(e), scrollPos = scrollbar.scrollTop; + if (!pos || opera) return; // Opera is difficult. + if (posEq(sel.from, sel.to) || posLess(pos, sel.from) || !posLess(pos, sel.to)) + operation(setCursor)(pos.line, pos.ch); + + var oldCSS = input.style.cssText; + inputDiv.style.position = "absolute"; + input.style.cssText = "position: fixed; width: 30px; height: 30px; top: " + (e.clientY - 5) + + "px; left: " + (e.clientX - 5) + "px; z-index: 1000; background: white; " + + "border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; + leaveInputAlone = true; + var val = input.value = getSelection(); + focusInput(); + selectInput(input); + function rehide() { + var newVal = splitLines(input.value).join("\n"); + if (newVal != val && !options.readOnly) operation(replaceSelection)(newVal, "end"); + inputDiv.style.position = "relative"; + input.style.cssText = oldCSS; + if (ie_lt9) scrollbar.scrollTop = scrollPos; + leaveInputAlone = false; + resetInput(true); + slowPoll(); + } + + if (gecko) { + e_stop(e); + var mouseup = connect(window, "mouseup", function() { + mouseup(); + setTimeout(rehide, 20); + }, true); + } else { + setTimeout(rehide, 50); + } + } + + // Cursor-blinking + function restartBlink() { + clearInterval(blinker); + var on = true; + cursor.style.visibility = ""; + blinker = setInterval(function() { + cursor.style.visibility = (on = !on) ? "" : "hidden"; + }, 650); + } + + var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"}; + function matchBrackets(autoclear) { + var head = sel.inverted ? sel.from : sel.to, line = getLine(head.line), pos = head.ch - 1; + var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)]; + if (!match) return; + var ch = match.charAt(0), forward = match.charAt(1) == ">", d = forward ? 1 : -1, st = line.styles; + for (var off = pos + 1, i = 0, e = st.length; i < e; i+=2) + if ((off -= st[i].length) <= 0) {var style = st[i+1]; break;} + + var stack = [line.text.charAt(pos)], re = /[(){}[\]]/; + function scan(line, from, to) { + if (!line.text) return; + var st = line.styles, pos = forward ? 0 : line.text.length - 1, cur; + for (var i = forward ? 0 : st.length - 2, e = forward ? st.length : -2; i != e; i += 2*d) { + var text = st[i]; + if (st[i+1] != style) {pos += d * text.length; continue;} + for (var j = forward ? 0 : text.length - 1, te = forward ? text.length : -1; j != te; j += d, pos+=d) { + if (pos >= from && pos < to && re.test(cur = text.charAt(j))) { + var match = matching[cur]; + if (match.charAt(1) == ">" == forward) stack.push(cur); + else if (stack.pop() != match.charAt(0)) return {pos: pos, match: false}; + else if (!stack.length) return {pos: pos, match: true}; + } + } + } + } + for (var i = head.line, e = forward ? Math.min(i + 100, doc.size) : Math.max(-1, i - 100); i != e; i+=d) { + var line = getLine(i), first = i == head.line; + var found = scan(line, first && forward ? pos + 1 : 0, first && !forward ? pos : line.text.length); + if (found) break; + } + if (!found) found = {pos: null, match: false}; + var style = found.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket"; + var one = markText({line: head.line, ch: pos}, {line: head.line, ch: pos+1}, style), + two = found.pos != null && markText({line: i, ch: found.pos}, {line: i, ch: found.pos + 1}, style); + var clear = operation(function(){one.clear(); two && two.clear();}); + if (autoclear) setTimeout(clear, 800); + else bracketHighlighted = clear; + } + + // Finds the line to start with when starting a parse. Tries to + // find a line with a stateAfter, so that it can start with a + // valid state. If that fails, it returns the line with the + // smallest indentation, which tends to need the least context to + // parse correctly. + function findStartLine(n) { + var minindent, minline; + for (var search = n, lim = n - 40; search > lim; --search) { + if (search == 0) return 0; + var line = getLine(search-1); + if (line.stateAfter) return search; + var indented = line.indentation(options.tabSize); + if (minline == null || minindent > indented) { + minline = search - 1; + minindent = indented; + } + } + return minline; + } + function getStateBefore(n) { + var start = findStartLine(n), state = start && getLine(start-1).stateAfter; + if (!state) state = startState(mode); + else state = copyState(mode, state); + doc.iter(start, n, function(line) { + line.highlight(mode, state, options.tabSize); + line.stateAfter = copyState(mode, state); + }); + if (start < n) changes.push({from: start, to: n}); + if (n < doc.size && !getLine(n).stateAfter) work.push(n); + return state; + } + function highlightLines(start, end) { + var state = getStateBefore(start); + doc.iter(start, end, function(line) { + line.highlight(mode, state, options.tabSize); + line.stateAfter = copyState(mode, state); + }); + } + function highlightWorker() { + var end = +new Date + options.workTime; + var foundWork = work.length; + while (work.length) { + if (!getLine(showingFrom).stateAfter) var task = showingFrom; + else var task = work.pop(); + if (task >= doc.size) continue; + var start = findStartLine(task), state = start && getLine(start-1).stateAfter; + if (state) state = copyState(mode, state); + else state = startState(mode); + + var unchanged = 0, compare = mode.compareStates, realChange = false, + i = start, bail = false; + doc.iter(i, doc.size, function(line) { + var hadState = line.stateAfter; + if (+new Date > end) { + work.push(i); + startWorker(options.workDelay); + if (realChange) changes.push({from: task, to: i + 1}); + return (bail = true); + } + var changed = line.highlight(mode, state, options.tabSize); + if (changed) realChange = true; + line.stateAfter = copyState(mode, state); + var done = null; + if (compare) { + var same = hadState && compare(hadState, state); + if (same != Pass) done = !!same; + } + if (done == null) { + if (changed !== false || !hadState) unchanged = 0; + else if (++unchanged > 3 && (!mode.indent || mode.indent(hadState, "") == mode.indent(state, ""))) + done = true; + } + if (done) return true; + ++i; + }); + if (bail) return; + if (realChange) changes.push({from: task, to: i + 1}); + } + if (foundWork && options.onHighlightComplete) + options.onHighlightComplete(instance); + } + function startWorker(time) { + if (!work.length) return; + highlight.set(time, operation(highlightWorker)); + } + + // Operations are used to wrap changes in such a way that each + // change won't have to update the cursor and display (which would + // be awkward, slow, and error-prone), but instead updates are + // batched and then all combined and executed at once. + function startOperation() { + updateInput = userSelChange = textChanged = null; + changes = []; selectionChanged = false; callbacks = []; + } + function endOperation() { + if (updateMaxLine) computeMaxLength(); + if (maxLineChanged && !options.lineWrapping) { + var cursorWidth = widthForcer.offsetWidth, left = stringWidth(maxLine); + widthForcer.style.left = left + "px"; + lineSpace.style.minWidth = (left + cursorWidth) + "px"; + maxLineChanged = false; + } + var newScrollPos, updated; + if (selectionChanged) { + var coords = calculateCursorCoords(); + newScrollPos = calculateScrollPos(coords.x, coords.y, coords.x, coords.yBot); + } + if (changes.length) updated = updateDisplay(changes, true, (newScrollPos ? newScrollPos.scrollTop : null)); + else { + if (selectionChanged) updateSelection(); + if (gutterDirty) updateGutter(); + } + if (newScrollPos) scrollCursorIntoView(); + if (selectionChanged) {scrollEditorIntoView(); restartBlink();} + + if (focused && !leaveInputAlone && + (updateInput === true || (updateInput !== false && selectionChanged))) + resetInput(userSelChange); + + if (selectionChanged && options.matchBrackets) + setTimeout(operation(function() { + if (bracketHighlighted) {bracketHighlighted(); bracketHighlighted = null;} + if (posEq(sel.from, sel.to)) matchBrackets(false); + }), 20); + var sc = selectionChanged, cbs = callbacks; // these can be reset by callbacks + if (textChanged && options.onChange && instance) + options.onChange(instance, textChanged); + if (sc && options.onCursorActivity) + options.onCursorActivity(instance); + for (var i = 0; i < cbs.length; ++i) cbs[i](instance); + if (updated && options.onUpdate) options.onUpdate(instance); + } + var nestedOperation = 0; + function operation(f) { + return function() { + if (!nestedOperation++) startOperation(); + try {var result = f.apply(this, arguments);} + finally {if (!--nestedOperation) endOperation();} + return result; + }; + } + + function compoundChange(f) { + history.startCompound(); + try { return f(); } finally { history.endCompound(); } + } + + for (var ext in extensions) + if (extensions.propertyIsEnumerable(ext) && + !instance.propertyIsEnumerable(ext)) + instance[ext] = extensions[ext]; + return instance; + } // (end of function CodeMirror) + + // The default configuration options. + CodeMirror.defaults = { + value: "", + mode: null, + theme: "default", + indentUnit: 2, + indentWithTabs: false, + smartIndent: true, + tabSize: 4, + keyMap: "default", + extraKeys: null, + electricChars: true, + autoClearEmptyLines: false, + onKeyEvent: null, + onDragEvent: null, + lineWrapping: false, + lineNumbers: false, + gutter: false, + fixedGutter: false, + firstLineNumber: 1, + readOnly: false, + dragDrop: true, + onChange: null, + onCursorActivity: null, + onGutterClick: null, + onHighlightComplete: null, + onUpdate: null, + onFocus: null, onBlur: null, onScroll: null, + matchBrackets: false, + workTime: 100, + workDelay: 200, + pollInterval: 100, + undoDepth: 40, + tabindex: null, + autofocus: null, + lineNumberFormatter: function(integer) { return integer; } + }; + + var ios = /AppleWebKit/.test(navigator.userAgent) && /Mobile\/\w+/.test(navigator.userAgent); + var mac = ios || /Mac/.test(navigator.platform); + var win = /Win/.test(navigator.platform); + + // Known modes, by name and by MIME + var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; + CodeMirror.defineMode = function(name, mode) { + if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; + if (arguments.length > 2) { + mode.dependencies = []; + for (var i = 2; i < arguments.length; ++i) mode.dependencies.push(arguments[i]); + } + modes[name] = mode; + }; + CodeMirror.defineMIME = function(mime, spec) { + mimeModes[mime] = spec; + }; + CodeMirror.resolveMode = function(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) + spec = mimeModes[spec]; + else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) + return CodeMirror.resolveMode("application/xml"); + if (typeof spec == "string") return {name: spec}; + else return spec || {name: "null"}; + }; + CodeMirror.getMode = function(options, spec) { + var spec = CodeMirror.resolveMode(spec); + var mfactory = modes[spec.name]; + if (!mfactory) return CodeMirror.getMode(options, "text/plain"); + return mfactory(options, spec); + }; + CodeMirror.listModes = function() { + var list = []; + for (var m in modes) + if (modes.propertyIsEnumerable(m)) list.push(m); + return list; + }; + CodeMirror.listMIMEs = function() { + var list = []; + for (var m in mimeModes) + if (mimeModes.propertyIsEnumerable(m)) list.push({mime: m, mode: mimeModes[m]}); + return list; + }; + + var extensions = CodeMirror.extensions = {}; + CodeMirror.defineExtension = function(name, func) { + extensions[name] = func; + }; + + var commands = CodeMirror.commands = { + selectAll: function(cm) {cm.setSelection({line: 0, ch: 0}, {line: cm.lineCount() - 1});}, + killLine: function(cm) { + var from = cm.getCursor(true), to = cm.getCursor(false), sel = !posEq(from, to); + if (!sel && cm.getLine(from.line).length == from.ch) cm.replaceRange("", from, {line: from.line + 1, ch: 0}); + else cm.replaceRange("", from, sel ? to : {line: from.line}); + }, + deleteLine: function(cm) {var l = cm.getCursor().line; cm.replaceRange("", {line: l, ch: 0}, {line: l});}, + undo: function(cm) {cm.undo();}, + redo: function(cm) {cm.redo();}, + goDocStart: function(cm) {cm.setCursor(0, 0, true);}, + goDocEnd: function(cm) {cm.setSelection({line: cm.lineCount() - 1}, null, true);}, + goLineStart: function(cm) {cm.setCursor(cm.getCursor().line, 0, true);}, + goLineStartSmart: function(cm) { + var cur = cm.getCursor(); + var text = cm.getLine(cur.line), firstNonWS = Math.max(0, text.search(/\S/)); + cm.setCursor(cur.line, cur.ch <= firstNonWS && cur.ch ? 0 : firstNonWS, true); + }, + goLineEnd: function(cm) {cm.setSelection({line: cm.getCursor().line}, null, true);}, + goLineUp: function(cm) {cm.moveV(-1, "line");}, + goLineDown: function(cm) {cm.moveV(1, "line");}, + goPageUp: function(cm) {cm.moveV(-1, "page");}, + goPageDown: function(cm) {cm.moveV(1, "page");}, + goCharLeft: function(cm) {cm.moveH(-1, "char");}, + goCharRight: function(cm) {cm.moveH(1, "char");}, + goColumnLeft: function(cm) {cm.moveH(-1, "column");}, + goColumnRight: function(cm) {cm.moveH(1, "column");}, + goWordLeft: function(cm) {cm.moveH(-1, "word");}, + goWordRight: function(cm) {cm.moveH(1, "word");}, + delCharLeft: function(cm) {cm.deleteH(-1, "char");}, + delCharRight: function(cm) {cm.deleteH(1, "char");}, + delWordLeft: function(cm) {cm.deleteH(-1, "word");}, + delWordRight: function(cm) {cm.deleteH(1, "word");}, + indentAuto: function(cm) {cm.indentSelection("smart");}, + indentMore: function(cm) {cm.indentSelection("add");}, + indentLess: function(cm) {cm.indentSelection("subtract");}, + insertTab: function(cm) {cm.replaceSelection("\t", "end");}, + defaultTab: function(cm) { + if (cm.somethingSelected()) cm.indentSelection("add"); + else cm.replaceSelection("\t", "end"); + }, + transposeChars: function(cm) { + var cur = cm.getCursor(), line = cm.getLine(cur.line); + if (cur.ch > 0 && cur.ch < line.length - 1) + cm.replaceRange(line.charAt(cur.ch) + line.charAt(cur.ch - 1), + {line: cur.line, ch: cur.ch - 1}, {line: cur.line, ch: cur.ch + 1}); + }, + newlineAndIndent: function(cm) { + cm.replaceSelection("\n", "end"); + cm.indentLine(cm.getCursor().line); + }, + toggleOverwrite: function(cm) {cm.toggleOverwrite();} + }; + + var keyMap = CodeMirror.keyMap = {}; + keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharRight", "Backspace": "delCharLeft", "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite" + }; + // Note that the save and find-related commands aren't defined by + // default. Unknown commands are simply ignored. + keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Alt-Up": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Down": "goDocEnd", + "Ctrl-Left": "goWordLeft", "Ctrl-Right": "goWordRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delWordLeft", "Ctrl-Delete": "delWordRight", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + fallthrough: "basic" + }; + keyMap.macDefault = { + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goWordLeft", + "Alt-Right": "goWordRight", "Cmd-Left": "goLineStart", "Cmd-Right": "goLineEnd", "Alt-Backspace": "delWordLeft", + "Ctrl-Alt-Backspace": "delWordRight", "Alt-Delete": "delWordRight", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", + fallthrough: ["basic", "emacsy"] + }; + keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; + keyMap.emacsy = { + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "Ctrl-V": "goPageUp", "Shift-Ctrl-V": "goPageDown", "Ctrl-D": "delCharRight", "Ctrl-H": "delCharLeft", + "Alt-D": "delWordRight", "Alt-Backspace": "delWordLeft", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" + }; + + function getKeyMap(val) { + if (typeof val == "string") return keyMap[val]; + else return val; + } + function lookupKey(name, extraMap, map, handle, stop) { + function lookup(map) { + map = getKeyMap(map); + var found = map[name]; + if (found != null && handle(found)) return true; + if (map.nofallthrough) { + if (stop) stop(); + return true; + } + var fallthrough = map.fallthrough; + if (fallthrough == null) return false; + if (Object.prototype.toString.call(fallthrough) != "[object Array]") + return lookup(fallthrough); + for (var i = 0, e = fallthrough.length; i < e; ++i) { + if (lookup(fallthrough[i])) return true; + } + return false; + } + if (extraMap && lookup(extraMap)) return true; + return lookup(map); + } + function isModifierKey(event) { + var name = keyNames[e_prop(event, "keyCode")]; + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; + } + + CodeMirror.fromTextArea = function(textarea, options) { + if (!options) options = {}; + options.value = textarea.value; + if (!options.tabindex && textarea.tabindex) + options.tabindex = textarea.tabindex; + if (options.autofocus == null && textarea.getAttribute("autofocus") != null) + options.autofocus = true; + + function save() {textarea.value = instance.getValue();} + if (textarea.form) { + // Deplorable hack to make the submit method do the right thing. + var rmSubmit = connect(textarea.form, "submit", save, true); + if (typeof textarea.form.submit == "function") { + var realSubmit = textarea.form.submit; + function wrappedSubmit() { + save(); + textarea.form.submit = realSubmit; + textarea.form.submit(); + textarea.form.submit = wrappedSubmit; + } + textarea.form.submit = wrappedSubmit; + } + } + + textarea.style.display = "none"; + var instance = CodeMirror(function(node) { + textarea.parentNode.insertBefore(node, textarea.nextSibling); + }, options); + instance.save = save; + instance.getTextArea = function() { return textarea; }; + instance.toTextArea = function() { + save(); + textarea.parentNode.removeChild(instance.getWrapperElement()); + textarea.style.display = ""; + if (textarea.form) { + rmSubmit(); + if (typeof textarea.form.submit == "function") + textarea.form.submit = realSubmit; + } + }; + return instance; + }; + + // Utility functions for working with state. Exported because modes + // sometimes need to do this. + function copyState(mode, state) { + if (state === true) return state; + if (mode.copyState) return mode.copyState(state); + var nstate = {}; + for (var n in state) { + var val = state[n]; + if (val instanceof Array) val = val.concat([]); + nstate[n] = val; + } + return nstate; + } + CodeMirror.copyState = copyState; + function startState(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true; + } + CodeMirror.startState = startState; + + // The character stream used by a mode's parser. + function StringStream(string, tabSize) { + this.pos = this.start = 0; + this.string = string; + this.tabSize = tabSize || 8; + } + StringStream.prototype = { + eol: function() {return this.pos >= this.string.length;}, + sol: function() {return this.pos == 0;}, + peek: function() {return this.string.charAt(this.pos);}, + next: function() { + if (this.pos < this.string.length) + return this.string.charAt(this.pos++); + }, + eat: function(match) { + var ch = this.string.charAt(this.pos); + if (typeof match == "string") var ok = ch == match; + else var ok = ch && (match.test ? match.test(ch) : match(ch)); + if (ok) {++this.pos; return ch;} + }, + eatWhile: function(match) { + var start = this.pos; + while (this.eat(match)){} + return this.pos > start; + }, + eatSpace: function() { + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; + return this.pos > start; + }, + skipToEnd: function() {this.pos = this.string.length;}, + skipTo: function(ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) {this.pos = found; return true;} + }, + backUp: function(n) {this.pos -= n;}, + column: function() {return countColumn(this.string, this.start, this.tabSize);}, + indentation: function() {return countColumn(this.string, null, this.tabSize);}, + match: function(pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + function cased(str) {return caseInsensitive ? str.toLowerCase() : str;} + if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) { + if (consume !== false) this.pos += pattern.length; + return true; + } + } else { + var match = this.string.slice(this.pos).match(pattern); + if (match && consume !== false) this.pos += match[0].length; + return match; + } + }, + current: function(){return this.string.slice(this.start, this.pos);} + }; + CodeMirror.StringStream = StringStream; + + function MarkedText(from, to, className, marker) { + this.from = from; this.to = to; this.style = className; this.marker = marker; + } + MarkedText.prototype = { + attach: function(line) { this.marker.set.push(line); }, + detach: function(line) { + var ix = indexOf(this.marker.set, line); + if (ix > -1) this.marker.set.splice(ix, 1); + }, + split: function(pos, lenBefore) { + if (this.to <= pos && this.to != null) return null; + var from = this.from < pos || this.from == null ? null : this.from - pos + lenBefore; + var to = this.to == null ? null : this.to - pos + lenBefore; + return new MarkedText(from, to, this.style, this.marker); + }, + dup: function() { return new MarkedText(null, null, this.style, this.marker); }, + clipTo: function(fromOpen, from, toOpen, to, diff) { + if (fromOpen && to > this.from && (to < this.to || this.to == null)) + this.from = null; + else if (this.from != null && this.from >= from) + this.from = Math.max(to, this.from) + diff; + if (toOpen && (from < this.to || this.to == null) && (from > this.from || this.from == null)) + this.to = null; + else if (this.to != null && this.to > from) + this.to = to < this.to ? this.to + diff : from; + }, + isDead: function() { return this.from != null && this.to != null && this.from >= this.to; }, + sameSet: function(x) { return this.marker == x.marker; } + }; + + function Bookmark(pos) { + this.from = pos; this.to = pos; this.line = null; + } + Bookmark.prototype = { + attach: function(line) { this.line = line; }, + detach: function(line) { if (this.line == line) this.line = null; }, + split: function(pos, lenBefore) { + if (pos < this.from) { + this.from = this.to = (this.from - pos) + lenBefore; + return this; + } + }, + isDead: function() { return this.from > this.to; }, + clipTo: function(fromOpen, from, toOpen, to, diff) { + if ((fromOpen || from < this.from) && (toOpen || to > this.to)) { + this.from = 0; this.to = -1; + } else if (this.from > from) { + this.from = this.to = Math.max(to, this.from) + diff; + } + }, + sameSet: function(x) { return false; }, + find: function() { + if (!this.line || !this.line.parent) return null; + return {line: lineNo(this.line), ch: this.from}; + }, + clear: function() { + if (this.line) { + var found = indexOf(this.line.marked, this); + if (found != -1) this.line.marked.splice(found, 1); + this.line = null; + } + } + }; + + // Line objects. These hold state related to a line, including + // highlighting info (the styles array). + function Line(text, styles) { + this.styles = styles || [text, null]; + this.text = text; + this.height = 1; + this.marked = this.gutterMarker = this.className = this.bgClassName = this.handlers = null; + this.stateAfter = this.parent = this.hidden = null; + } + Line.inheritMarks = function(text, orig) { + var ln = new Line(text), mk = orig && orig.marked; + if (mk) { + for (var i = 0; i < mk.length; ++i) { + if (mk[i].to == null && mk[i].style) { + var newmk = ln.marked || (ln.marked = []), mark = mk[i]; + var nmark = mark.dup(); newmk.push(nmark); nmark.attach(ln); + } + } + } + return ln; + } + Line.prototype = { + // Replace a piece of a line, keeping the styles around it intact. + replace: function(from, to_, text) { + var st = [], mk = this.marked, to = to_ == null ? this.text.length : to_; + copyStyles(0, from, this.styles, st); + if (text) st.push(text, null); + copyStyles(to, this.text.length, this.styles, st); + this.styles = st; + this.text = this.text.slice(0, from) + text + this.text.slice(to); + this.stateAfter = null; + if (mk) { + var diff = text.length - (to - from); + for (var i = 0; i < mk.length; ++i) { + var mark = mk[i]; + mark.clipTo(from == null, from || 0, to_ == null, to, diff); + if (mark.isDead()) {mark.detach(this); mk.splice(i--, 1);} + } + } + }, + // Split a part off a line, keeping styles and markers intact. + split: function(pos, textBefore) { + var st = [textBefore, null], mk = this.marked; + copyStyles(pos, this.text.length, this.styles, st); + var taken = new Line(textBefore + this.text.slice(pos), st); + if (mk) { + for (var i = 0; i < mk.length; ++i) { + var mark = mk[i]; + var newmark = mark.split(pos, textBefore.length); + if (newmark) { + if (!taken.marked) taken.marked = []; + taken.marked.push(newmark); newmark.attach(taken); + if (newmark == mark) mk.splice(i--, 1); + } + } + } + return taken; + }, + append: function(line) { + var mylen = this.text.length, mk = line.marked, mymk = this.marked; + this.text += line.text; + copyStyles(0, line.text.length, line.styles, this.styles); + if (mymk) { + for (var i = 0; i < mymk.length; ++i) + if (mymk[i].to == null) mymk[i].to = mylen; + } + if (mk && mk.length) { + if (!mymk) this.marked = mymk = []; + outer: for (var i = 0; i < mk.length; ++i) { + var mark = mk[i]; + if (!mark.from) { + for (var j = 0; j < mymk.length; ++j) { + var mymark = mymk[j]; + if (mymark.to == mylen && mymark.sameSet(mark)) { + mymark.to = mark.to == null ? null : mark.to + mylen; + if (mymark.isDead()) { + mymark.detach(this); + mk.splice(i--, 1); + } + continue outer; + } + } + } + mymk.push(mark); + mark.attach(this); + mark.from += mylen; + if (mark.to != null) mark.to += mylen; + } + } + }, + fixMarkEnds: function(other) { + var mk = this.marked, omk = other.marked; + if (!mk) return; + outer: for (var i = 0; i < mk.length; ++i) { + var mark = mk[i], close = mark.to == null; + if (close && omk) { + for (var j = 0; j < omk.length; ++j) { + var om = omk[j]; + if (!om.sameSet(mark) || om.from != null) continue + if (mark.from == this.text.length && om.to == 0) { + omk.splice(j, 1); + mk.splice(i--, 1); + continue outer; + } else { + close = false; break; + } + } + } + if (close) mark.to = this.text.length; + } + }, + fixMarkStarts: function() { + var mk = this.marked; + if (!mk) return; + for (var i = 0; i < mk.length; ++i) + if (mk[i].from == null) mk[i].from = 0; + }, + addMark: function(mark) { + mark.attach(this); + if (this.marked == null) this.marked = []; + this.marked.push(mark); + this.marked.sort(function(a, b){return (a.from || 0) - (b.from || 0);}); + }, + // Run the given mode's parser over a line, update the styles + // array, which contains alternating fragments of text and CSS + // classes. + highlight: function(mode, state, tabSize) { + var stream = new StringStream(this.text, tabSize), st = this.styles, pos = 0; + var changed = false, curWord = st[0], prevWord; + if (this.text == "" && mode.blankLine) mode.blankLine(state); + while (!stream.eol()) { + var style = mode.token(stream, state); + var substr = this.text.slice(stream.start, stream.pos); + stream.start = stream.pos; + if (pos && st[pos-1] == style) + st[pos-2] += substr; + else if (substr) { + if (!changed && (st[pos+1] != style || (pos && st[pos-2] != prevWord))) changed = true; + st[pos++] = substr; st[pos++] = style; + prevWord = curWord; curWord = st[pos]; + } + // Give up when line is ridiculously long + if (stream.pos > 5000) { + st[pos++] = this.text.slice(stream.pos); st[pos++] = null; + break; + } + } + if (st.length != pos) {st.length = pos; changed = true;} + if (pos && st[pos-2] != prevWord) changed = true; + // Short lines with simple highlights return null, and are + // counted as changed by the driver because they are likely to + // highlight the same way in various contexts. + return changed || (st.length < 5 && this.text.length < 10 ? null : false); + }, + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(mode, state, ch) { + var txt = this.text, stream = new StringStream(txt); + while (stream.pos < ch && !stream.eol()) { + stream.start = stream.pos; + var style = mode.token(stream, state); + } + return {start: stream.start, + end: stream.pos, + string: stream.current(), + className: style || null, + state: state}; + }, + indentation: function(tabSize) {return countColumn(this.text, null, tabSize);}, + // Produces an HTML fragment for the line, taking selection, + // marking, and highlighting into account. + getHTML: function(makeTab, wrapAt, wrapId, wrapWBR) { + var html = [], first = true, col = 0; + function span_(text, style) { + if (!text) return; + // Work around a bug where, in some compat modes, IE ignores leading spaces + if (first && ie && text.charAt(0) == " ") text = "\u00a0" + text.slice(1); + first = false; + if (text.indexOf("\t") == -1) { + col += text.length; + var escaped = htmlEscape(text); + } else { + var escaped = ""; + for (var pos = 0;;) { + var idx = text.indexOf("\t", pos); + if (idx == -1) { + escaped += htmlEscape(text.slice(pos)); + col += text.length - pos; + break; + } else { + col += idx - pos; + var tab = makeTab(col); + escaped += htmlEscape(text.slice(pos, idx)) + tab.html; + col += tab.width; + pos = idx + 1; + } + } + } + if (style) html.push('', escaped, ""); + else html.push(escaped); + } + var span = span_; + if (wrapAt != null) { + var outPos = 0, open = ""; + span = function(text, style) { + var l = text.length; + if (wrapAt >= outPos && wrapAt < outPos + l) { + if (wrapAt > outPos) { + span_(text.slice(0, wrapAt - outPos), style); + // See comment at the definition of spanAffectsWrapping + if (wrapWBR) html.push(""); + } + html.push(open); + var cut = wrapAt - outPos; + span_(opera ? text.slice(cut, cut + 1) : text.slice(cut), style); + html.push(""); + if (opera) span_(text.slice(cut + 1), style); + wrapAt--; + outPos += l; + } else { + outPos += l; + span_(text, style); + // Output empty wrapper when at end of line + // (Gecko and IE8+ do strange wrapping when adding a space + // to the end of the line. Other browsers don't react well + // to zero-width spaces. So we do hideous browser sniffing + // to determine which to use.) + if (outPos == wrapAt && outPos == len) + html.push(open + (gecko || (ie && !ie_lt8) ? "​" : " ") + ""); + // Stop outputting HTML when gone sufficiently far beyond measure + else if (outPos > wrapAt + 10 && /\s/.test(text)) span = function(){}; + } + } + } + + var st = this.styles, allText = this.text, marked = this.marked; + var len = allText.length; + function styleToClass(style) { + if (!style) return null; + return "cm-" + style.replace(/ +/g, " cm-"); + } + + if (!allText && wrapAt == null) { + span(" "); + } else if (!marked || !marked.length) { + for (var i = 0, ch = 0; ch < len; i+=2) { + var str = st[i], style = st[i+1], l = str.length; + if (ch + l > len) str = str.slice(0, len - ch); + ch += l; + span(str, styleToClass(style)); + } + } else { + var pos = 0, i = 0, text = "", style, sg = 0; + var nextChange = marked[0].from || 0, marks = [], markpos = 0; + function advanceMarks() { + var m; + while (markpos < marked.length && + ((m = marked[markpos]).from == pos || m.from == null)) { + if (m.style != null) marks.push(m); + ++markpos; + } + nextChange = markpos < marked.length ? marked[markpos].from : Infinity; + for (var i = 0; i < marks.length; ++i) { + var to = marks[i].to; + if (to == null) to = Infinity; + if (to == pos) marks.splice(i--, 1); + else nextChange = Math.min(to, nextChange); + } + } + var m = 0; + while (pos < len) { + if (nextChange == pos) advanceMarks(); + var upto = Math.min(len, nextChange); + while (true) { + if (text) { + var end = pos + text.length; + var appliedStyle = style; + for (var j = 0; j < marks.length; ++j) + appliedStyle = (appliedStyle ? appliedStyle + " " : "") + marks[j].style; + span(end > upto ? text.slice(0, upto - pos) : text, appliedStyle); + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} + pos = end; + } + text = st[i++]; style = styleToClass(st[i++]); + } + } + } + return html.join(""); + }, + cleanUp: function() { + this.parent = null; + if (this.marked) + for (var i = 0, e = this.marked.length; i < e; ++i) this.marked[i].detach(this); + } + }; + // Utility used by replace and split above + function copyStyles(from, to, source, dest) { + for (var i = 0, pos = 0, state = 0; pos < to; i+=2) { + var part = source[i], end = pos + part.length; + if (state == 0) { + if (end > from) dest.push(part.slice(from - pos, Math.min(part.length, to - pos)), source[i+1]); + if (end >= from) state = 1; + } else if (state == 1) { + if (end > to) dest.push(part.slice(0, to - pos), source[i+1]); + else dest.push(part, source[i+1]); + } + pos = end; + } + } + + // Data structure that holds the sequence of lines. + function LeafChunk(lines) { + this.lines = lines; + this.parent = null; + for (var i = 0, e = lines.length, height = 0; i < e; ++i) { + lines[i].parent = this; + height += lines[i].height; + } + this.height = height; + } + LeafChunk.prototype = { + chunkSize: function() { return this.lines.length; }, + remove: function(at, n, callbacks) { + for (var i = at, e = at + n; i < e; ++i) { + var line = this.lines[i]; + this.height -= line.height; + line.cleanUp(); + if (line.handlers) + for (var j = 0; j < line.handlers.length; ++j) callbacks.push(line.handlers[j]); + } + this.lines.splice(at, n); + }, + collapse: function(lines) { + lines.splice.apply(lines, [lines.length, 0].concat(this.lines)); + }, + insertHeight: function(at, lines, height) { + this.height += height; + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); + for (var i = 0, e = lines.length; i < e; ++i) lines[i].parent = this; + }, + iterN: function(at, n, op) { + for (var e = at + n; at < e; ++at) + if (op(this.lines[at])) return true; + } + }; + function BranchChunk(children) { + this.children = children; + var size = 0, height = 0; + for (var i = 0, e = children.length; i < e; ++i) { + var ch = children[i]; + size += ch.chunkSize(); height += ch.height; + ch.parent = this; + } + this.size = size; + this.height = height; + this.parent = null; + } + BranchChunk.prototype = { + chunkSize: function() { return this.size; }, + remove: function(at, n, callbacks) { + this.size -= n; + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var rm = Math.min(n, sz - at), oldHeight = child.height; + child.remove(at, rm, callbacks); + this.height -= oldHeight - child.height; + if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } + if ((n -= rm) == 0) break; + at = 0; + } else at -= sz; + } + if (this.size - n < 25) { + var lines = []; + this.collapse(lines); + this.children = [new LeafChunk(lines)]; + this.children[0].parent = this; + } + }, + collapse: function(lines) { + for (var i = 0, e = this.children.length; i < e; ++i) this.children[i].collapse(lines); + }, + insert: function(at, lines) { + var height = 0; + for (var i = 0, e = lines.length; i < e; ++i) height += lines[i].height; + this.insertHeight(at, lines, height); + }, + insertHeight: function(at, lines, height) { + this.size += lines.length; + this.height += height; + for (var i = 0, e = this.children.length; i < e; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at <= sz) { + child.insertHeight(at, lines, height); + if (child.lines && child.lines.length > 50) { + while (child.lines.length > 50) { + var spilled = child.lines.splice(child.lines.length - 25, 25); + var newleaf = new LeafChunk(spilled); + child.height -= newleaf.height; + this.children.splice(i + 1, 0, newleaf); + newleaf.parent = this; + } + this.maybeSpill(); + } + break; + } + at -= sz; + } + }, + maybeSpill: function() { + if (this.children.length <= 10) return; + var me = this; + do { + var spilled = me.children.splice(me.children.length - 5, 5); + var sibling = new BranchChunk(spilled); + if (!me.parent) { // Become the parent node + var copy = new BranchChunk(me.children); + copy.parent = me; + me.children = [copy, sibling]; + me = copy; + } else { + me.size -= sibling.size; + me.height -= sibling.height; + var myIndex = indexOf(me.parent.children, me); + me.parent.children.splice(myIndex + 1, 0, sibling); + } + sibling.parent = me.parent; + } while (me.children.length > 10); + me.parent.maybeSpill(); + }, + iter: function(from, to, op) { this.iterN(from, to - from, op); }, + iterN: function(at, n, op) { + for (var i = 0, e = this.children.length; i < e; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var used = Math.min(n, sz - at); + if (child.iterN(at, used, op)) return true; + if ((n -= used) == 0) break; + at = 0; + } else at -= sz; + } + } + }; + + function getLineAt(chunk, n) { + while (!chunk.lines) { + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; break; } + n -= sz; + } + } + return chunk.lines[n]; + } + function lineNo(line) { + if (line.parent == null) return null; + var cur = line.parent, no = indexOf(cur.lines, line); + for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (var i = 0, e = chunk.children.length; ; ++i) { + if (chunk.children[i] == cur) break; + no += chunk.children[i].chunkSize(); + } + } + return no; + } + function lineAtHeight(chunk, h) { + var n = 0; + outer: do { + for (var i = 0, e = chunk.children.length; i < e; ++i) { + var child = chunk.children[i], ch = child.height; + if (h < ch) { chunk = child; continue outer; } + h -= ch; + n += child.chunkSize(); + } + return n; + } while (!chunk.lines); + for (var i = 0, e = chunk.lines.length; i < e; ++i) { + var line = chunk.lines[i], lh = line.height; + if (h < lh) break; + h -= lh; + } + return n + i; + } + function heightAtLine(chunk, n) { + var h = 0; + outer: do { + for (var i = 0, e = chunk.children.length; i < e; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; continue outer; } + n -= sz; + h += child.height; + } + return h; + } while (!chunk.lines); + for (var i = 0; i < n; ++i) h += chunk.lines[i].height; + return h; + } + + // The history object 'chunks' changes that are made close together + // and at almost the same time into bigger undoable units. + function History() { + this.time = 0; + this.done = []; this.undone = []; + this.compound = 0; + this.closed = false; + } + History.prototype = { + addChange: function(start, added, old) { + this.undone.length = 0; + var time = +new Date, cur = this.done[this.done.length - 1], last = cur && cur[cur.length - 1]; + var dtime = time - this.time; + + if (this.compound && cur && !this.closed) { + cur.push({start: start, added: added, old: old}); + } else if (dtime > 400 || !last || this.closed || + last.start > start + old.length || last.start + last.added < start) { + this.done.push([{start: start, added: added, old: old}]); + this.closed = false; + } else { + var startBefore = Math.max(0, last.start - start), + endAfter = Math.max(0, (start + old.length) - (last.start + last.added)); + for (var i = startBefore; i > 0; --i) last.old.unshift(old[i - 1]); + for (var i = endAfter; i > 0; --i) last.old.push(old[old.length - i]); + if (startBefore) last.start = start; + last.added += added - (old.length - startBefore - endAfter); + } + this.time = time; + }, + startCompound: function() { + if (!this.compound++) this.closed = true; + }, + endCompound: function() { + if (!--this.compound) this.closed = true; + } + }; + + function stopMethod() {e_stop(this);} + // Ensure an event has a stop method. + function addStop(event) { + if (!event.stop) event.stop = stopMethod; + return event; + } + + function e_preventDefault(e) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + } + function e_stopPropagation(e) { + if (e.stopPropagation) e.stopPropagation(); + else e.cancelBubble = true; + } + function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);} + CodeMirror.e_stop = e_stop; + CodeMirror.e_preventDefault = e_preventDefault; + CodeMirror.e_stopPropagation = e_stopPropagation; + + function e_target(e) {return e.target || e.srcElement;} + function e_button(e) { + var b = e.which; + if (b == null) { + if (e.button & 1) b = 1; + else if (e.button & 2) b = 3; + else if (e.button & 4) b = 2; + } + if (mac && e.ctrlKey && b == 1) b = 3; + return b; + } + + // Allow 3rd-party code to override event properties by adding an override + // object to an event object. + function e_prop(e, prop) { + var overridden = e.override && e.override.hasOwnProperty(prop); + return overridden ? e.override[prop] : e[prop]; + } + + // Event handler registration. If disconnect is true, it'll return a + // function that unregisters the handler. + function connect(node, type, handler, disconnect) { + if (typeof node.addEventListener == "function") { + node.addEventListener(type, handler, false); + if (disconnect) return function() {node.removeEventListener(type, handler, false);}; + } else { + var wrapHandler = function(event) {handler(event || window.event);}; + node.attachEvent("on" + type, wrapHandler); + if (disconnect) return function() {node.detachEvent("on" + type, wrapHandler);}; + } + } + CodeMirror.connect = connect; + + function Delayed() {this.id = null;} + Delayed.prototype = {set: function(ms, f) {clearTimeout(this.id); this.id = setTimeout(f, ms);}}; + + var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; + + var gecko = /gecko\/\d{7}/i.test(navigator.userAgent); + var ie = /MSIE \d/.test(navigator.userAgent); + var ie_lt8 = /MSIE [1-7]\b/.test(navigator.userAgent); + var ie_lt9 = /MSIE [1-8]\b/.test(navigator.userAgent); + var quirksMode = ie && document.documentMode == 5; + var webkit = /WebKit\//.test(navigator.userAgent); + var chrome = /Chrome\//.test(navigator.userAgent); + var opera = /Opera\//.test(navigator.userAgent); + var safari = /Apple Computer/.test(navigator.vendor); + var khtml = /KHTML\//.test(navigator.userAgent); + var mac_geLion = /Mac OS X 10\D([7-9]|\d\d)\D/.test(navigator.userAgent); + + // Detect drag-and-drop + var dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie_lt9) return false; + var div = document.createElement('div'); + return "draggable" in div || "dragDrop" in div; + }(); + + // Feature-detect whether newlines in textareas are converted to \r\n + var lineSep = function () { + var te = document.createElement("textarea"); + te.value = "foo\nbar"; + if (te.value.indexOf("\r") > -1) return "\r\n"; + return "\n"; + }(); + + // For a reason I have yet to figure out, some browsers disallow + // word wrapping between certain characters *only* if a new inline + // element is started between them. This makes it hard to reliably + // measure the position of things, since that requires inserting an + // extra span. This terribly fragile set of regexps matches the + // character combinations that suffer from this phenomenon on the + // various browsers. + var spanAffectsWrapping = /^$/; // Won't match any two-character string + if (gecko) spanAffectsWrapping = /$'/; + else if (safari) spanAffectsWrapping = /\-[^ \-?]|\?[^ !'\"\),.\-\/:;\?\]\}]/; + else if (chrome) spanAffectsWrapping = /\-[^ \-\.?]|\?[^ \-\.?\]\}:;!'\"\),\/]|[\.!\"#&%\)*+,:;=>\]|\}~][\(\{\[<]|\$'/; + + // Counts the column offset in a string, taking tabs into account. + // Used mostly to find indentation. + function countColumn(string, end, tabSize) { + if (end == null) { + end = string.search(/[^\s\u00a0]/); + if (end == -1) end = string.length; + } + for (var i = 0, n = 0; i < end; ++i) { + if (string.charAt(i) == "\t") n += tabSize - (n % tabSize); + else ++n; + } + return n; + } + + function computedStyle(elt) { + if (elt.currentStyle) return elt.currentStyle; + return window.getComputedStyle(elt, null); + } + + function eltOffset(node, screen) { + // Take the parts of bounding client rect that we are interested in so we are able to edit if need be, + // since the returned value cannot be changed externally (they are kept in sync as the element moves within the page) + try { var box = node.getBoundingClientRect(); box = { top: box.top, left: box.left }; } + catch(e) { box = {top: 0, left: 0}; } + if (!screen) { + // Get the toplevel scroll, working around browser differences. + if (window.pageYOffset == null) { + var t = document.documentElement || document.body.parentNode; + if (t.scrollTop == null) t = document.body; + box.top += t.scrollTop; box.left += t.scrollLeft; + } else { + box.top += window.pageYOffset; box.left += window.pageXOffset; + } + } + return box; + } + + // Get a node's text content. + function eltText(node) { + return node.textContent || node.innerText || node.nodeValue || ""; + } + function selectInput(node) { + if (ios) { // Mobile Safari apparently has a bug where select() is broken. + node.selectionStart = 0; + node.selectionEnd = node.value.length; + } else node.select(); + } + + // Operations on {line, ch} objects. + function posEq(a, b) {return a.line == b.line && a.ch == b.ch;} + function posLess(a, b) {return a.line < b.line || (a.line == b.line && a.ch < b.ch);} + function copyPos(x) {return {line: x.line, ch: x.ch};} + + var escapeElement = document.createElement("pre"); + function htmlEscape(str) { + escapeElement.textContent = str; + return escapeElement.innerHTML; + } + // Recent (late 2011) Opera betas insert bogus newlines at the start + // of the textContent, so we strip those. + if (htmlEscape("a") == "\na") { + htmlEscape = function(str) { + escapeElement.textContent = str; + return escapeElement.innerHTML.slice(1); + }; + // Some IEs don't preserve tabs through innerHTML + } else if (htmlEscape("\t") != "\t") { + htmlEscape = function(str) { + escapeElement.innerHTML = ""; + escapeElement.appendChild(document.createTextNode(str)); + return escapeElement.innerHTML; + }; + } + CodeMirror.htmlEscape = htmlEscape; + + // Used to position the cursor after an undo/redo by finding the + // last edited character. + function editEnd(from, to) { + if (!to) return 0; + if (!from) return to.length; + for (var i = from.length, j = to.length; i >= 0 && j >= 0; --i, --j) + if (from.charAt(i) != to.charAt(j)) break; + return j + 1; + } + + function indexOf(collection, elt) { + if (collection.indexOf) return collection.indexOf(elt); + for (var i = 0, e = collection.length; i < e; ++i) + if (collection[i] == elt) return i; + return -1; + } + function isWordChar(ch) { + return /\w/.test(ch) || ch.toUpperCase() != ch.toLowerCase(); + } + + // See if "".split is the broken IE version, if so, provide an + // alternative way to split lines. + var splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { + var pos = 0, result = [], l = string.length; + while (pos <= l) { + var nl = string.indexOf("\n", pos); + if (nl == -1) nl = string.length; + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); + var rt = line.indexOf("\r"); + if (rt != -1) { + result.push(line.slice(0, rt)); + pos += rt + 1; + } else { + result.push(line); + pos = nl + 1; + } + } + return result; + } : function(string){return string.split(/\r\n?|\n/);}; + CodeMirror.splitLines = splitLines; + + var hasSelection = window.getSelection ? function(te) { + try { return te.selectionStart != te.selectionEnd; } + catch(e) { return false; } + } : function(te) { + try {var range = te.ownerDocument.selection.createRange();} + catch(e) {} + if (!range || range.parentElement() != te) return false; + return range.compareEndPoints("StartToEnd", range) != 0; + }; + + CodeMirror.defineMode("null", function() { + return {token: function(stream) {stream.skipToEnd();}}; + }); + CodeMirror.defineMIME("text/plain", "null"); + + var keyNames = {3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", + 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", + 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", + 46: "Delete", 59: ";", 91: "Mod", 92: "Mod", 93: "Mod", 109: "-", 107: "=", 127: "Delete", + 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", + 221: "]", 222: "'", 63276: "PageUp", 63277: "PageDown", 63275: "End", 63273: "Home", + 63234: "Left", 63232: "Up", 63235: "Right", 63233: "Down", 63302: "Insert", 63272: "Delete"}; + CodeMirror.keyNames = keyNames; + (function() { + // Number keys + for (var i = 0; i < 10; i++) keyNames[i + 48] = String(i); + // Alphabetic keys + for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); + // Function keys + for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; + })(); + + return CodeMirror; +})(); diff --git a/PyTutorGAE/js/codemirror/python.js b/PyTutorGAE/js/codemirror/python.js new file mode 100644 index 000000000..d6888e8e5 --- /dev/null +++ b/PyTutorGAE/js/codemirror/python.js @@ -0,0 +1,338 @@ +CodeMirror.defineMode("python", function(conf, parserConf) { + var ERRORCLASS = 'error'; + + function wordRegexp(words) { + return new RegExp("^((" + words.join(")|(") + "))\\b"); + } + + var singleOperators = new RegExp("^[\\+\\-\\*/%&|\\^~<>!]"); + var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); + var doubleOperators = new RegExp("^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); + var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); + var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); + var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); + + var wordOperators = wordRegexp(['and', 'or', 'not', 'is', 'in']); + var commonkeywords = ['as', 'assert', 'break', 'class', 'continue', + 'def', 'del', 'elif', 'else', 'except', 'finally', + 'for', 'from', 'global', 'if', 'import', + 'lambda', 'pass', 'raise', 'return', + 'try', 'while', 'with', 'yield']; + var commonBuiltins = ['abs', 'all', 'any', 'bin', 'bool', 'bytearray', 'callable', 'chr', + 'classmethod', 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', + 'enumerate', 'eval', 'filter', 'float', 'format', 'frozenset', + 'getattr', 'globals', 'hasattr', 'hash', 'help', 'hex', 'id', + 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', + 'list', 'locals', 'map', 'max', 'memoryview', 'min', 'next', + 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range', + 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', + 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', + 'type', 'vars', 'zip', '__import__', 'NotImplemented', + 'Ellipsis', '__debug__']; + var py2 = {'builtins': ['apply', 'basestring', 'buffer', 'cmp', 'coerce', 'execfile', + 'file', 'intern', 'long', 'raw_input', 'reduce', 'reload', + 'unichr', 'unicode', 'xrange', 'False', 'True', 'None'], + 'keywords': ['exec', 'print']}; + var py3 = {'builtins': ['ascii', 'bytes', 'exec', 'print'], + 'keywords': ['nonlocal', 'False', 'True', 'None']}; + + if (!!parserConf.version && parseInt(parserConf.version, 10) === 3) { + commonkeywords = commonkeywords.concat(py3.keywords); + commonBuiltins = commonBuiltins.concat(py3.builtins); + var stringPrefixes = new RegExp("^(([rb]|(br))?('{3}|\"{3}|['\"]))", "i"); + } else { + commonkeywords = commonkeywords.concat(py2.keywords); + commonBuiltins = commonBuiltins.concat(py2.builtins); + var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); + } + var keywords = wordRegexp(commonkeywords); + var builtins = wordRegexp(commonBuiltins); + + var indentInfo = null; + + // tokenizers + function tokenBase(stream, state) { + // Handle scope changes + if (stream.sol()) { + var scopeOffset = state.scopes[0].offset; + if (stream.eatSpace()) { + var lineOffset = stream.indentation(); + if (lineOffset > scopeOffset) { + indentInfo = 'indent'; + } else if (lineOffset < scopeOffset) { + indentInfo = 'dedent'; + } + return null; + } else { + if (scopeOffset > 0) { + dedent(stream, state); + } + } + } + if (stream.eatSpace()) { + return null; + } + + var ch = stream.peek(); + + // Handle Comments + if (ch === '#') { + stream.skipToEnd(); + return 'comment'; + } + + // Handle Number Literals + if (stream.match(/^[0-9\.]/, false)) { + var floatLiteral = false; + // Floats + if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } + if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } + if (stream.match(/^\.\d+/)) { floatLiteral = true; } + if (floatLiteral) { + // Float literals may be "imaginary" + stream.eat(/J/i); + return 'number'; + } + // Integers + var intLiteral = false; + // Hex + if (stream.match(/^0x[0-9a-f]+/i)) { intLiteral = true; } + // Binary + if (stream.match(/^0b[01]+/i)) { intLiteral = true; } + // Octal + if (stream.match(/^0o[0-7]+/i)) { intLiteral = true; } + // Decimal + if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { + // Decimal literals may be "imaginary" + stream.eat(/J/i); + // TODO - Can you have imaginary longs? + intLiteral = true; + } + // Zero by itself with no other piece of number. + if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } + if (intLiteral) { + // Integer literals may be "long" + stream.eat(/L/i); + return 'number'; + } + } + + // Handle Strings + if (stream.match(stringPrefixes)) { + state.tokenize = tokenStringFactory(stream.current()); + return state.tokenize(stream, state); + } + + // Handle operators and Delimiters + if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { + return null; + } + if (stream.match(doubleOperators) + || stream.match(singleOperators) + || stream.match(wordOperators)) { + return 'operator'; + } + if (stream.match(singleDelimiters)) { + return null; + } + + if (stream.match(keywords)) { + return 'keyword'; + } + + if (stream.match(builtins)) { + return 'builtin'; + } + + if (stream.match(identifiers)) { + return 'variable'; + } + + // Handle non-detected items + stream.next(); + return ERRORCLASS; + } + + function tokenStringFactory(delimiter) { + while ('rub'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) { + delimiter = delimiter.substr(1); + } + var singleline = delimiter.length == 1; + var OUTCLASS = 'string'; + + return function tokenString(stream, state) { + while (!stream.eol()) { + stream.eatWhile(/[^'"\\]/); + if (stream.eat('\\')) { + stream.next(); + if (singleline && stream.eol()) { + return OUTCLASS; + } + } else if (stream.match(delimiter)) { + state.tokenize = tokenBase; + return OUTCLASS; + } else { + stream.eat(/['"]/); + } + } + if (singleline) { + if (parserConf.singleLineStringErrors) { + return ERRORCLASS; + } else { + state.tokenize = tokenBase; + } + } + return OUTCLASS; + }; + } + + function indent(stream, state, type) { + type = type || 'py'; + var indentUnit = 0; + if (type === 'py') { + if (state.scopes[0].type !== 'py') { + state.scopes[0].offset = stream.indentation(); + return; + } + for (var i = 0; i < state.scopes.length; ++i) { + if (state.scopes[i].type === 'py') { + indentUnit = state.scopes[i].offset + conf.indentUnit; + break; + } + } + } else { + indentUnit = stream.column() + stream.current().length; + } + state.scopes.unshift({ + offset: indentUnit, + type: type + }); + } + + function dedent(stream, state, type) { + type = type || 'py'; + if (state.scopes.length == 1) return; + if (state.scopes[0].type === 'py') { + var _indent = stream.indentation(); + var _indent_index = -1; + for (var i = 0; i < state.scopes.length; ++i) { + if (_indent === state.scopes[i].offset) { + _indent_index = i; + break; + } + } + if (_indent_index === -1) { + return true; + } + while (state.scopes[0].offset !== _indent) { + state.scopes.shift(); + } + return false + } else { + if (type === 'py') { + state.scopes[0].offset = stream.indentation(); + return false; + } else { + if (state.scopes[0].type != type) { + return true; + } + state.scopes.shift(); + return false; + } + } + } + + function tokenLexer(stream, state) { + indentInfo = null; + var style = state.tokenize(stream, state); + var current = stream.current(); + + // Handle '.' connected identifiers + if (current === '.') { + style = stream.match(identifiers, false) ? null : ERRORCLASS; + if (style === null && state.lastToken === 'meta') { + // Apply 'meta' style to '.' connected identifiers when + // appropriate. + style = 'meta'; + } + return style; + } + + // Handle decorators + if (current === '@') { + return stream.match(identifiers, false) ? 'meta' : ERRORCLASS; + } + + if ((style === 'variable' || style === 'builtin') + && state.lastToken === 'meta') { + style = 'meta'; + } + + // Handle scope changes. + if (current === 'pass' || current === 'return') { + state.dedent += 1; + } + if (current === 'lambda') state.lambda = true; + if ((current === ':' && !state.lambda && state.scopes[0].type == 'py') + || indentInfo === 'indent') { + indent(stream, state); + } + var delimiter_index = '[({'.indexOf(current); + if (delimiter_index !== -1) { + indent(stream, state, '])}'.slice(delimiter_index, delimiter_index+1)); + } + if (indentInfo === 'dedent') { + if (dedent(stream, state)) { + return ERRORCLASS; + } + } + delimiter_index = '])}'.indexOf(current); + if (delimiter_index !== -1) { + if (dedent(stream, state, current)) { + return ERRORCLASS; + } + } + if (state.dedent > 0 && stream.eol() && state.scopes[0].type == 'py') { + if (state.scopes.length > 1) state.scopes.shift(); + state.dedent -= 1; + } + + return style; + } + + var external = { + startState: function(basecolumn) { + return { + tokenize: tokenBase, + scopes: [{offset:basecolumn || 0, type:'py'}], + lastToken: null, + lambda: false, + dedent: 0 + }; + }, + + token: function(stream, state) { + var style = tokenLexer(stream, state); + + state.lastToken = style; + + if (stream.eol() && stream.lambda) { + state.lambda = false; + } + + return style; + }, + + indent: function(state, textAfter) { + if (state.tokenize != tokenBase) { + return 0; + } + + return state.scopes[0].offset; + } + + }; + return external; +}); + +CodeMirror.defineMIME("text/x-python", "python"); diff --git a/PyTutorGAE/js/d3.v2.min.js b/PyTutorGAE/js/d3.v2.min.js new file mode 100644 index 000000000..2a1e13110 --- /dev/null +++ b/PyTutorGAE/js/d3.v2.min.js @@ -0,0 +1,4 @@ +(function(){function d(a,b){try{for(var c in b)Object.defineProperty(a.prototype,c,{value:b[c],enumerable:!1})}catch(d){a.prototype=b}}function f(a){var b=-1,c=a.length,d=[];while(++b=0?a.substring(b):(b=a.length,""),d=[];while(b>0)d.push(a.substring(b-=3,b+3));return d.reverse().join(",")+c}function H(a,b){var c=Math.pow(10,Math.abs(8-b)*3);return{scale:b>8?function(a){return a/c}:function(a){return a*c},symbol:a}}function N(a){return function(b){return b<=0?0:b>=1?1:a(b)}}function O(a){return function(b){return 1-a(1-b)}}function P(a){return function(b){return.5*(b<.5?a(2*b):2-a(2-2*b))}}function Q(a){return a}function R(a){return function(b){return Math.pow(b,a)}}function S(a){return 1-Math.cos(a*Math.PI/2)}function T(a){return Math.pow(2,10*(a-1))}function U(a){return 1-Math.sqrt(1-a*a)}function V(a,b){var c;return arguments.length<2&&(b=.45),arguments.length<1?(a=1,c=b/4):c=b/(2*Math.PI)*Math.asin(1/a),function(d){return 1+a*Math.pow(2,10*-d)*Math.sin((d-c)*2*Math.PI/b)}}function W(a){return a||(a=1.70158),function(b){return b*b*((a+1)*b-a)}}function X(a){return a<1/2.75?7.5625*a*a:a<2/2.75?7.5625*(a-=1.5/2.75)*a+.75:a<2.5/2.75?7.5625*(a-=2.25/2.75)*a+.9375:7.5625*(a-=2.625/2.75)*a+.984375}function Y(){d3.event.stopPropagation(),d3.event.preventDefault()}function Z(){var a=d3.event,b;while(b=a.sourceEvent)a=b;return a}function $(a){var b=new z,c=0,d=arguments.length;while(++c360?a-=360:a<0&&(a+=360),a<60?d+(e-d)*a/60:a<180?e:a<240?d+(e-d)*(240-a)/60:d}function g(a){return Math.round(f(a)*255)}var d,e;return a%=360,a<0&&(a+=360),b=b<0?0:b>1?1:b,c=c<0?0:c>1?1:c,e=c<=.5?c*(1+b):c+b-c*b,d=2*c-e,bd(g(a+120),g(a),g(a-120))}function bn(a){return i(a,bt),a}function bu(a){return function(){return bo(a,this)}}function bv(a){return function(){return bp(a,this)}}function bw(a,b){function f(){if(b=this.classList)return b.add(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;c.lastIndex=0,c.test(e)||(e=v(e+" "+a),d?b.baseVal=e:this.className=e)}function g(){if(b=this.classList)return b.remove(a);var b=this.className,d=b.baseVal!=null,e=d?b.baseVal:b;e=v(e.replace(c," ")),d?b.baseVal=e:this.className=e}function h(){(b.apply(this,arguments)?f:g).call(this)}var c=new RegExp("(^|\\s+)"+d3.requote(a)+"(\\s+|$)","g");if(arguments.length<2){var d=this.node();if(e=d.classList)return e.contains(a);var e=d.className;return c.lastIndex=0,c.test(e.baseVal!=null?e.baseVal:e)}return this.each(typeof b=="function"?h:b?f:g)}function bx(a){return{__data__:a}}function by(a){return function(){return bs(this,a)}}function bz(a){return arguments.length||(a=d3.ascending),function(b,c){return a(b&&b.__data__,c&&c.__data__)}}function bA(a,b){for(var c=0,d=a.length;cb?q():(m.active=b,d.forEach(function(b,c){(c=c.call(a,n,h))&&j.push(c)}),e.start.call(a,n,h),p(f)||d3.timer(p,0,c),1)}function p(c){if(m.active!==b)return q();var d=(c-k)/l,g=f(d),i=j.length;while(i>0)j[--i].call(a,g);if(d>=1)return q(),bK=b,e.end.call(a,n,h),bK=0,1}function q(){return--m.count||delete a.__transition__,1}var j=[],k=a.delay,l=a.duration,m=(a=a.node).__transition__||(a.__transition__={active:0,count:0}),n=a.__data__;++m.count,k<=g?o(g):d3.timer(o,k,c)})},0,c),a}function bG(a,b,c){return c!=""&&bF}function bH(a,b){function d(a,d,e){var f=b.call(this,a,d);return f==null?e!=""&&bF:e!=f&&c(e,f)}function e(a,d,e){return e!=b&&c(e,b)}var c=ba(a);return typeof b=="function"?d:b==null?bG:(b+="",e)}function bR(a){var b=bK,c=bQ,d=bO,e=bP;return bK=this.id,bQ=this.ease(),bA(this,function(b,c,d){bO=b.delay,bP=b.duration,a.call(b=b.node,b.__data__,c,d)}),bK=b,bQ=c,bO=d,bP=e,this}function bV(){var a,b=Date.now(),c=bS;while(c)a=b-c.then,a>=c.delay&&(c.flush=c.callback(a)),c=c.next;var d=bW()-b;d>24?(isFinite(d)&&(clearTimeout(bU),bU=setTimeout(bV,d)),bT=0):(bT=1,bX(bV))}function bW(){var a=null,b=bS,c=Infinity;while(b)b.flush?b=a?a.next=b.next:bS=b.next:(c=Math.min(c,b.then+b.delay),b=(a=b).next);return c}function bY(a){var b=[a.a,a.b],c=[a.c,a.d],d=b$(b),e=bZ(b,c),f=b$(b_(c,b,-e))||0;b[0]*c[1]2?cp:co,i=d?bc:bb;return e=g(a,b,i,c),f=g(b,a,i,d3.interpolate),h}function h(a){return e(a)}var e,f;return h.invert=function(a){return f(a)},h.domain=function(b){return arguments.length?(a=b.map(Number),g()):a},h.range=function(a){return arguments.length?(b=a,g()):b},h.rangeRound=function(a){return h.range(a).interpolate(d3.interpolateRound)},h.clamp=function(a){return arguments.length?(d=a,g()):d},h.interpolate=function(a){return arguments.length?(c=a,g()):c},h.ticks=function(b){return cm(a,b)},h.tickFormat=function(b){return cn(a,b)},h.nice=function(){return cg(a,ck),g()},h.copy=function(){return ci(a,b,c,d)},g()}function cj(a,b){return d3.rebind(a,b,"range","rangeRound","interpolate","clamp")}function ck(a){return a=Math.pow(10,Math.round(Math.log(a)/Math.LN10)-1),{floor:function(b){return Math.floor(b/a)*a},ceil:function(b){return Math.ceil(b/a)*a}}}function cl(a,b){var c=ce(a),d=c[1]-c[0],e=Math.pow(10,Math.floor(Math.log(d/b)/Math.LN10)),f=b/d*e;return f<=.15?e*=10:f<=.35?e*=5:f<=.75&&(e*=2),c[0]=Math.ceil(c[0]/e)*e,c[1]=Math.floor(c[1]/e)*e+e*.5,c[2]=e,c}function cm(a,b){return d3.range.apply(d3,cl(a,b))}function cn(a,b){return d3.format(",."+Math.max(0,-Math.floor(Math.log(cl(a,b)[2])/Math.LN10+.01))+"f")}function co(a,b,c,d){var e=c(a[0],a[1]),f=d(b[0],b[1]);return function(a){return f(e(a))}}function cp(a,b,c,d){var e=[],f=[],g=0,h=Math.min(a.length,b.length)-1;a[h]0;j--)e.push(c(f)*j)}else{for(;fi;g--);e=e.slice(f,g)}return e},d.tickFormat=function(a,e){arguments.length<2&&(e=cr);if(arguments.length<1)return e;var f=Math.max(.1,a/d.ticks().length),g=b===ct?(h=-1e-12,Math.floor):(h=1e-12,Math.ceil),h;return function(a){return a/c(g(b(a)+h))<=f?e(a):""}},d.copy=function(){return cq(a.copy(),b)},cj(d,a)}function cs(a){return Math.log(a<0?0:a)/Math.LN10}function ct(a){return-Math.log(a>0?0:-a)/Math.LN10}function cu(a,b){function e(b){return a(c(b))}var c=cv(b),d=cv(1/b);return e.invert=function(b){return d(a.invert(b))},e.domain=function(b){return arguments.length?(a.domain(b.map(c)),e):a.domain().map(d)},e.ticks=function(a){return cm(e.domain(),a)},e.tickFormat=function(a){return cn(e.domain(),a)},e.nice=function(){return e.domain(cg(e.domain(),ck))},e.exponent=function(a){if(!arguments.length)return b;var f=e.domain();return c=cv(b=a),d=cv(1/b),e.domain(f)},e.copy=function(){return cu(a.copy(),b)},cj(e,a)}function cv(a){return function(b){return b<0?-Math.pow(-b,a):Math.pow(b,a)}}function cw(a,b){function f(b){return d[((c.get(b)||c.set(b,a.push(b)))-1)%d.length]}function g(b,c){return d3.range(a.length).map(function(a){return b+c*a})}var c,d,e;return f.domain=function(d){if(!arguments.length)return a;a=[],c=new j;var e=-1,g=d.length,h;while(++e1){h=b[1],f=a[i],i++,d+="C"+(e[0]+g[0])+","+(e[1]+g[1])+","+(f[0]-h[0])+","+(f[1]-h[1])+","+f[0]+","+f[1];for(var j=2;j9&&(f=c*3/Math.sqrt(f),g[h]=f*d,g[h+1]=f*e));h=-1;while(++h<=i)f=(a[Math.min(i,h+1)][0]-a[Math.max(0,h-1)][0])/(6*(1+g[h]*g[h])),b.push([f||0,g[h]*f||0]);return b}function dh(a){return a.length<3?cP(a):a[0]+cV(a,dg(a))}function di(a){var b,c=-1,d=a.length,e,f;while(++c1){var d=ce(a.domain()),e,f=-1,g=b.length,h=(b[1]-b[0])/++c,i,j;while(++f0;)(j=+b[f]-i*h)>=d[0]&&e.push(j);for(--f,i=0;++id&&(c=b,d=e);return c}function d_(a){return a.reduce(ea,0)}function ea(a,b){return a+b[1]}function eb(a,b){return ec(a,Math.ceil(Math.log(b.length)/Math.LN2+1))}function ec(a,b){var c=-1,d=+a[0],e=(a[1]-d)/b,f=[];while(++c<=b)f[c]=e*c+d;return f}function ed(a){return[d3.min(a),d3.max(a)]}function ee(a,b){return d3.rebind(a,b,"sort","children","value"),a.links=ei,a.nodes=function(b){return ej=!0,(a.nodes=a)(b)},a}function ef(a){return a.children}function eg(a){return a.value}function eh(a,b){return b.value-a.value}function ei(a){return d3.merge(a.map(function(a){return(a.children||[]).map(function(b){return{source:a,target:b}})}))}function ek(a,b){return a.value-b.value}function el(a,b){var c=a._pack_next;a._pack_next=b,b._pack_prev=a,b._pack_next=c,c._pack_prev=b}function em(a,b){a._pack_next=b,b._pack_prev=a}function en(a,b){var c=b.x-a.x,d=b.y-a.y,e=a.r+b.r;return e*e-c*c-d*d>.001}function eo(a){function l(a){b=Math.min(a.x-a.r,b),c=Math.max(a.x+a.r,c),d=Math.min(a.y-a.r,d),e=Math.max(a.y+a.r,e)}var b=Infinity,c=-Infinity,d=Infinity,e=-Infinity,f=a.length,g,h,i,j,k;a.forEach(ep),g=a[0],g.x=-g.r,g.y=0,l(g);if(f>1){h=a[1],h.x=h.r,h.y=0,l(h);if(f>2){i=a[2],et(g,h,i),l(i),el(g,i),g._pack_prev=i,el(i,h),h=g._pack_next;for(var m=3;m0&&(a=d)}return a}function eC(a,b){return a.x-b.x}function eD(a,b){return b.x-a.x}function eE(a,b){return a.depth-b.depth}function eF(a,b){function c(a,d){var e=a.children;if(e&&(i=e.length)){var f,g=null,h=-1,i;while(++h=0)f=d[e]._tree,f.prelim+=b,f.mod+=b,b+=f.shift+(c+=f.change)}function eH(a,b,c){a=a._tree,b=b._tree;var d=c/(b.number-a.number);a.change+=d,b.change-=d,b.shift+=c,b.prelim+=c,b.mod+=c}function eI(a,b,c){return a._tree.ancestor.parent==b.parent?a._tree.ancestor:c}function eJ(a){return{x:a.x,y:a.y,dx:a.dx,dy:a.dy}}function eK(a,b){var c=a.x+b[3],d=a.y+b[0],e=a.dx-b[1]-b[3],f=a.dy-b[0]-b[2];return e<0&&(c+=e/2,e=0),f<0&&(d+=f/2,f=0),{x:c,y:d,dx:e,dy:f}}function eL(a){return a.map(eM).join(",")}function eM(a){return/[",\n]/.test(a)?'"'+a.replace(/\"/g,'""')+'"':a}function eO(a,b){return function(c){return c&&a.hasOwnProperty(c.type)?a[c.type](c):b}}function eP(a){return"m0,"+a+"a"+a+","+a+" 0 1,1 0,"+ -2*a+"a"+a+","+a+" 0 1,1 0,"+2*a+"z"}function eQ(a,b){eR.hasOwnProperty(a.type)&&eR[a.type](a,b)}function eS(a,b){eQ(a.geometry,b)}function eT(a,b){for(var c=a.features,d=0,e=c.length;d0}function fg(a,b,c){return(c[0]-b[0])*(a[1]-b[1])<(c[1]-b[1])*(a[0]-b[0])}function fh(a,b,c,d){var e=a[0],f=b[0],g=c[0],h=d[0],i=a[1],j=b[1],k=c[1],l=d[1],m=e-g,n=f-e,o=h-g,p=i-k,q=j-i,r=l-k,s=(o*p-r*m)/(r*n-o*q);return[e+s*n,i+s*q]}function fj(a,b){var c={list:a.map(function(a,b){return{index:b,x:a[0],y:a[1]}}).sort(function(a,b){return a.yb.y?1:a.xb.x?1:0}),bottomSite:null},d={list:[],leftEnd:null,rightEnd:null,init:function(){d.leftEnd=d.createHalfEdge(null,"l"),d.rightEnd=d.createHalfEdge(null,"l"),d.leftEnd.r=d.rightEnd,d.rightEnd.l=d.leftEnd,d.list.unshift(d.leftEnd,d.rightEnd)},createHalfEdge:function(a,b){return{edge:a,side:b,vertex:null,l:null,r:null}},insert:function(a,b){b.l=a,b.r=a.r,a.r.l=b,a.r=b},leftBound:function(a){var b=d.leftEnd;do b=b.r;while(b!=d.rightEnd&&e.rightOf(b,a));return b=b.l,b},del:function(a){a.l.r=a.r,a.r.l=a.l,a.edge=null},right:function(a){return a.r},left:function(a){return a.l},leftRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[a.side]},rightRegion:function(a){return a.edge==null?c.bottomSite:a.edge.region[fi[a.side]]}},e={bisect:function(a,b){var c={region:{l:a,r:b},ep:{l:null,r:null}},d=b.x-a.x,e=b.y-a.y,f=d>0?d:-d,g=e>0?e:-e;return c.c=a.x*d+a.y*e+(d*d+e*e)*.5,f>g?(c.a=1,c.b=e/d,c.c/=d):(c.b=1,c.a=d/e,c.c/=e),c},intersect:function(a,b){var c=a.edge,d=b.edge;if(!c||!d||c.region.r==d.region.r)return null;var e=c.a*d.b-c.b*d.a;if(Math.abs(e)<1e-10)return null;var f=(c.c*d.b-d.c*c.b)/e,g=(d.c*c.a-c.c*d.a)/e,h=c.region.r,i=d.region.r,j,k;h.y=k.region.r.x;return l&&j.side==="l"||!l&&j.side==="r"?null:{x:f,y:g}},rightOf:function(a,b){var c=a.edge,d=c.region.r,e=b.x>d.x;if(e&&a.side==="l")return 1;if(!e&&a.side==="r")return 0;if(c.a===1){var f=b.y-d.y,g=b.x-d.x,h=0,i=0;!e&&c.b<0||e&&c.b>=0?i=h=f>=c.b*g:(i=b.x+b.y*c.b>c.c,c.b<0&&(i=!i),i||(h=1));if(!h){var j=d.x-c.region.l.x;i=c.b*(g*g-f*f)m*m+n*n}return a.side==="l"?i:!i},endPoint:function(a,c,d){a.ep[c]=d;if(!a.ep[fi[c]])return;b(a)},distance:function(a,b){var c=a.x-b.x,d=a.y-b.y;return Math.sqrt(c*c+d*d)}},f={list:[],insert:function(a,b,c){a.vertex=b,a.ystar=b.y+c;for(var d=0,e=f.list,g=e.length;dh.ystar||a.ystar==h.ystar&&b.x>h.vertex.x)continue;break}e.splice(d,0,a)},del:function(a){for(var b=0,c=f.list,d=c.length;bo.y&&(p=n,n=o,o=p,t="r"),s=e.bisect(n,o),m=d.createHalfEdge(s,t),d.insert(k,m),e.endPoint(s,fi[t],r),q=e.intersect(k,m),q&&(f.del(k),f.insert(k,q,e.distance(q,n))),q=e.intersect(m,l),q&&f.insert(m,q,e.distance(q,n));else break}for(i=d.right(d.leftEnd);i!=d.rightEnd;i=d.right(i))b(i.edge)}function fk(){return{leaf:!0,nodes:[],point:null}}function fl(a,b,c,d,e,f){if(!a(b,c,d,e,f)){var g=(c+e)*.5,h=(d+f)*.5,i=b.nodes;i[0]&&fl(a,i[0],c,d,g,h),i[1]&&fl(a,i[1],g,d,e,h),i[2]&&fl(a,i[2],c,h,g,f),i[3]&&fl(a,i[3],g,h,e,f)}}function fm(a){return{x:a[0],y:a[1]}}function fo(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function fq(a,b,c,d){var e,f,g=0,h=b.length,i=c.length;while(g=i)return-1;e=b.charCodeAt(g++);if(e==37){f=fw[b.charAt(g++)];if(!f||(d=f(a,c,d))<0)return-1}else if(e!=c.charCodeAt(d++))return-1}return d}function fx(a,b,c){return fz.test(b.substring(c,c+=3))?c:-1}function fy(a,b,c){fA.lastIndex=0;var d=fA.exec(b.substring(c,c+10));return d?c+=d[0].length:-1}function fC(a,b,c){var d=fD.get(b.substring(c,c+=3).toLowerCase());return d==null?-1:(a.m=d,c)}function fE(a,b,c){fF.lastIndex=0;var d=fF.exec(b.substring(c,c+12));return d?(a.m=fG.get(d[0].toLowerCase()),c+=d[0].length):-1}function fI(a,b,c){return fq(a,fv.c.toString(),b,c)}function fJ(a,b,c){return fq(a,fv.x.toString(),b,c)}function fK(a,b,c){return fq(a,fv.X.toString(),b,c)}function fL(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+4));return d?(a.y=+d[0],c+=d[0].length):-1}function fM(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.y=fN()+ +d[0],c+=d[0].length):-1}function fN(){return~~((new Date).getFullYear()/1e3)*1e3}function fO(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.m=d[0]-1,c+=d[0].length):-1}function fP(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.d=+d[0],c+=d[0].length):-1}function fQ(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.H=+d[0],c+=d[0].length):-1}function fR(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.M=+d[0],c+=d[0].length):-1}function fS(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+2));return d?(a.S=+d[0],c+=d[0].length):-1}function fT(a,b,c){fU.lastIndex=0;var d=fU.exec(b.substring(c,c+3));return d?(a.L=+d[0],c+=d[0].length):-1}function fV(a,b,c){var d=fW.get(b.substring(c,c+=2).toLowerCase());return d==null?-1:(a.p=d,c)}function fX(a){var b=a.getTimezoneOffset(),c=b>0?"-":"+",d=~~(Math.abs(b)/60),e=Math.abs(b)%60;return c+fr(d)+fr(e)}function fZ(a){return a.toISOString()}function f$(a,b,c){function d(b){var c=a(b),d=f(c,1);return b-c1)while(gb?1:a>=b?0:NaN},d3.descending=function(a,b){return ba?1:b>=a?0:NaN},d3.mean=function(a,b){var c=a.length,d,e=0,f=-1,g=0;if(arguments.length===1)while(++f1&&(a=a.map(b)),a=a.filter(r),a.length?d3.quantile(a.sort(d3.ascending),.5):undefined},d3.min=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++cf&&(e=f)}else{while(++cf&&(e=f)}return e},d3.max=function(a,b){var c=-1,d=a.length,e,f;if(arguments.length===1){while(++ce&&(e=f)}else{while(++ce&&(e=f)}return e},d3.extent=function(a,b){var c=-1,d=a.length,e,f,g;if(arguments.length===1){while(++cf&&(e=f),gf&&(e=f),g1);return a+b*c*Math.sqrt(-2*Math.log(e)/e)}}},d3.sum=function(a,b){var c=0,d=a.length,e,f=-1;if(arguments.length===1)while(++f>1;a.call(b,b[f],f)>1;c0&&(e=f);return e},d3.last=function(a,b){var c=0,d=a.length,e=a[0],f;arguments.length===1&&(b=d3.ascending);while(++c=b.length)return e?e.call(a,c):d?c.sort(d):c;var h=-1,i=c.length,k=b[g++],l,m,n=new j,o,p={};while(++h=b.length)return a;var e=[],f=c[d++],h;for(h in a)e.push({key:h,values:g(a[h],d)});return f&&e.sort(function(a,b){return f(a.key,b.key)}),e}var a={},b=[],c=[],d,e;return a.map=function(a){return f(a,0)},a.entries=function(a){return g(f(a,0),0)},a.key=function(c){return b.push(c),a},a.sortKeys=function(d){return c[b.length-1]=d,a},a.sortValues=function(b){return d=b,a},a.rollup=function(b){return e=b,a},a},d3.keys=function(a){var b=[];for(var c in a)b.push(c);return b},d3.values=function(a){var b=[];for(var c in a)b.push(a[c]);return b},d3.entries=function(a){var b=[];for(var c in a)b.push({key:c,value:a[c]});return b},d3.permute=function(a,b){var c=[],d=-1,e=b.length;while(++db)d.push(g/e);else while((g=a+c*++f)=200&&a<300||a===304?d:null)}},d.send(null)},d3.text=function(a,b,c){function d(a){c(a&&a.responseText)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)},d3.json=function(a,b){d3.text(a,"application/json",function(a){b(a?JSON.parse(a):null)})},d3.html=function(a,b){d3.text(a,"text/html",function(a){if(a!=null){var c=document.createRange();c.selectNode(document.body),a=c.createContextualFragment(a)}b(a)})},d3.xml=function(a,b,c){function d(a){c(a&&a.responseXML)}arguments.length<3&&(c=b,b=null),d3.xhr(a,b,d)};var y={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};d3.ns={prefix:y,qualify:function(a){var b=a.indexOf(":"),c=a;return b>=0&&(c=a.substring(0,b),a=a.substring(b+1)),y.hasOwnProperty(c)?{space:y[c],local:a}:a}},d3.dispatch=function(){var a=new z,b=-1,c=arguments.length;while(++b0&&(d=a.substring(c+1),a=a.substring(0,c)),arguments.length<2?this[a].on(d):this[a].on(d,b)},d3.format=function(a){var b=B.exec(a),c=b[1]||" ",d=b[3]||"",e=b[5],f=+b[6],g=b[7],h=b[8],i=b[9],j=1,k="",l=!1;h&&(h=+h.substring(1)),e&&(c="0",g&&(f-=Math.floor((f-1)/4)));switch(i){case"n":g=!0,i="g";break;case"%":j=100,k="%",i="f";break;case"p":j=100,k="%",i="r";break;case"d":l=!0,h=0;break;case"s":j=-1,i="r"}return i=="r"&&!h&&(i="g"),i=C.get(i)||E,function(a){if(l&&a%1)return"";var b=a<0&&(a=-a)?"−":d;if(j<0){var m=d3.formatPrefix(a,h);a=m.scale(a),k=m.symbol}else a*=j;a=i(a,h);if(e){var n=a.length+b.length;n=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/,C=d3.map({g:function(a,b){return a.toPrecision(b)},e:function(a,b){return a.toExponential(b)},f:function(a,b){return a.toFixed(b)},r:function(a,b){return d3.round(a,b=D(a,b)).toFixed(Math.max(0,Math.min(20,b)))}}),G=["y","z","a","f","p","n","μ","m","","k","M","G","T","P","E","Z","Y"].map(H);d3.formatPrefix=function(a,b){var c=0;return a&&(a<0&&(a*=-1),b&&(a=d3.round(a,D(a,b))),c=1+Math.floor(1e-12+Math.log(a)/Math.LN10),c=Math.max(-24,Math.min(24,Math.floor((c<=0?c+1:c-1)/3)*3))),G[8+c/3]};var I=R(2),J=R(3),K=function(){return Q},L=d3.map({linear:K,poly:R,quad:function(){return I},cubic:function(){return J},sin:function(){return S},exp:function(){return T},circle:function(){return U},elastic:V,back:W,bounce:function(){return X}}),M=d3.map({"in":Q,out:O,"in-out":P,"out-in":function(a){return P(O(a))}});d3.ease=function(a){var b=a.indexOf("-"),c=b>=0?a.substring(0,b):a,d=b>=0?a.substring(b+1):"in";return c=L.get(c)||K,d=M.get(d)||Q,N(d(c.apply(null,Array.prototype.slice.call(arguments,1))))},d3.event=null,d3.interpolate=function(a,b){var c=d3.interpolators.length,d;while(--c>=0&&!(d=d3.interpolators[c](a,b)));return d},d3.interpolateNumber=function(a,b){return b-=a,function(c){return a+b*c}},d3.interpolateRound=function(a,b){return b-=a,function(c){return Math.round(a+b*c)}},d3.interpolateString=function(a,b){var c,d,e,f=0,g=0,h=[],i=[],j,k;_.lastIndex=0;for(d=0;c=_.exec(b);++d)c.index&&h.push(b.substring(f,g=c.index)),i.push({i:h.length,x:c[0]}),h.push(null),f=_.lastIndex;f180?k+=360:k-j>180&&(j+=360),d.push({i:c.push(c.pop()+"rotate(",null,")")-2,x:d3.interpolateNumber(j,k)})):k&&c.push(c.pop()+"rotate("+k+")"),l!=m?d.push({i:c.push(c.pop()+"skewX(",null,")")-2,x:d3.interpolateNumber(l,m)}):m&&c.push(c.pop()+"skewX("+m+")"),n[0]!=o[0]||n[1]!=o[1]?(e=c.push(c.pop()+"scale(",null,",",null,")"),d.push({i:e-4,x:d3.interpolateNumber(n[0],o[0])},{i:e-2,x:d3.interpolateNumber(n[1],o[1])})):(o[0]!=1||o[1]!=1)&&c.push(c.pop()+"scale("+o+")"),e=d.length,function(a){var b=-1,f;while(++b180?f-=360:f<-180&&(f+=360),function(a){return bm(c+f*a,d+g*a,e+h*a).toString()}},d3.interpolateArray=function(a,b){var c=[],d=[],e=a.length,f=b.length,g=Math.min(a.length,b.length),h;for(h=0;h1){while(++e=0;)if(f=c[d])e&&e!==f.nextSibling&&e.parentNode.insertBefore(f,e),e=f;return this},bt.sort=function(a){a=bz.apply(this,arguments);for(var b=-1,c=this.length;++b0&&(a=a.substring(0,e)),arguments.length<2?(e=this.node()[d])&&e._:this.each(function(e,f){function i(a){var c=d3.event;d3.event=a;try{b.call(g,g.__data__,f)}finally{d3.event=c}}var g=this,h=g[d];h&&(g.removeEventListener(a,h,h.$),delete g[d]),b&&(g.addEventListener(a,g[d]=i,i.$=c),i._=b)})},bt.each=function(a){return bA(this,function(b,c,d){a.call(b,b.__data__,c,d)})},bt.call=function(a){return a.apply(this,(arguments[0]=this,arguments)),this},bt.empty=function(){return!this.node()},bt.node=function(a){for(var b=0,c=this.length;b=cF?e?"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"M0,"+e+"A"+e+","+e+" 0 1,0 0,"+ -e+"A"+e+","+e+" 0 1,0 0,"+e+"Z":"M0,"+f+"A"+f+","+f+" 0 1,1 0,"+ -f+"A"+f+","+f+" 0 1,1 0,"+f+"Z":e?"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L"+e*m+","+e*n+"A"+e+","+e+" 0 "+j+",0 "+e*k+","+e*l+"Z":"M"+f*k+","+f*l+"A"+f+","+f+" 0 "+j+",1 "+f*m+","+f*n+"L0,0"+"Z"}var a=cG,b=cH,c=cI,d=cJ;return e.innerRadius=function(b){return arguments.length?(a=p(b),e):a},e.outerRadius=function(a){return arguments.length?(b=p(a),e):b},e.startAngle=function(a){return arguments.length?(c=p(a),e):c},e.endAngle=function(a){return arguments.length?(d=p(a),e):d},e.centroid=function(){var e=(a.apply(this,arguments)+b.apply(this,arguments))/2,f=(c.apply(this,arguments)+d.apply(this,arguments))/2+cE;return[Math.cos(f)*e,Math.sin(f)*e]},e};var cE=-Math.PI/2,cF=2*Math.PI-1e-6;d3.svg.line=function(){return cK(m)};var cN="linear",cO=d3.map({linear:cP,"step-before":cQ,"step-after":cR,basis:cX,"basis-open":cY,"basis-closed":cZ,bundle:c$,cardinal:cU,"cardinal-open":cS,"cardinal-closed":cT,monotone:dh}),da=[0,2/3,1/3,0],db=[0,1/3,2/3,0],dc=[0,1/6,2/3,1/6];d3.svg.line.radial=function(){var a=cK(di);return a.radius=a.x,delete a.x,a.angle=a.y,delete a.y,a},cQ.reverse=cR,cR.reverse=cQ,d3.svg.area=function(){return dj(Object)},d3.svg.area.radial=function(){var a=dj(di);return a.radius=a.x,delete a.x,a.innerRadius=a.x0,delete a.x0,a.outerRadius=a.x1,delete a.x1,a.angle=a.y,delete a.y,a.startAngle=a.y0,delete a.y0,a.endAngle=a.y1,delete a.y1,a},d3.svg.chord=function(){function f(c,d){var e=g(this,a,c,d),f=g(this,b,c,d);return"M"+e.p0+i(e.r,e.p1,e.a1-e.a0)+(h(e,f)?j(e.r,e.p1,e.r,e.p0):j(e.r,e.p1,f.r,f.p0)+i(f.r,f.p1,f.a1-f.a0)+j(f.r,f.p1,e.r,e.p0))+"Z"}function g(a,b,f,g){var h=b.call(a,f,g),i=c.call(a,h,g),j=d.call(a,h,g)+cE,k=e.call(a,h,g)+cE;return{r:i,a0:j,a1:k,p0:[i*Math.cos(j),i*Math.sin(j)],p1:[i*Math.cos(k),i*Math.sin(k)]}}function h(a,b){return a.a0==b.a0&&a.a1==b.a1}function i(a,b,c){return"A"+a+","+a+" 0 "+ +(c>Math.PI)+",1 "+b}function j(a,b,c,d){return"Q 0,0 "+d}var a=dk,b=dl,c=dm,d=cI,e=cJ;return f.radius=function(a){return arguments.length?(c=p(a),f):c},f.source=function(b){return arguments.length?(a=p(b),f):a},f.target=function(a){return arguments.length?(b=p(a),f):b},f.startAngle=function(a){return arguments.length?(d=p(a),f):d},f.endAngle=function(a){return arguments.length?(e=p(a),f):e},f},d3.svg.diagonal=function(){function d(d,e){var f=a.call(this,d,e),g=b.call(this,d,e),h=(f.y+g.y)/2,i=[f,{x:f.x,y:h},{x:g.x,y:h},g];return i=i.map(c),"M"+i[0]+"C"+i[1]+" "+i[2]+" "+i[3]}var a=dk,b=dl,c=dq;return d.source=function(b){return arguments.length?(a=p(b),d):a},d.target=function(a){return arguments.length?(b=p(a),d):b},d.projection=function(a){return arguments.length?(c=a,d):c},d},d3.svg.diagonal +.radial=function(){var a=d3.svg.diagonal(),b=dq,c=a.projection;return a.projection=function(a){return arguments.length?c(dr(b=a)):b},a},d3.svg.mouse=d3.mouse,d3.svg.touches=d3.touches,d3.svg.symbol=function(){function c(c,d){return(dv.get(a.call(this,c,d))||du)(b.call(this,c,d))}var a=dt,b=ds;return c.type=function(b){return arguments.length?(a=p(b),c):a},c.size=function(a){return arguments.length?(b=p(a),c):b},c};var dv=d3.map({circle:du,cross:function(a){var b=Math.sqrt(a/5)/2;return"M"+ -3*b+","+ -b+"H"+ -b+"V"+ -3*b+"H"+b+"V"+ -b+"H"+3*b+"V"+b+"H"+b+"V"+3*b+"H"+ -b+"V"+b+"H"+ -3*b+"Z"},diamond:function(a){var b=Math.sqrt(a/(2*dx)),c=b*dx;return"M0,"+ -b+"L"+c+",0"+" 0,"+b+" "+ -c+",0"+"Z"},square:function(a){var b=Math.sqrt(a)/2;return"M"+ -b+","+ -b+"L"+b+","+ -b+" "+b+","+b+" "+ -b+","+b+"Z"},"triangle-down":function(a){var b=Math.sqrt(a/dw),c=b*dw/2;return"M0,"+c+"L"+b+","+ -c+" "+ -b+","+ -c+"Z"},"triangle-up":function(a){var b=Math.sqrt(a/dw),c=b*dw/2;return"M0,"+ -c+"L"+b+","+c+" "+ -b+","+c+"Z"}});d3.svg.symbolTypes=dv.keys();var dw=Math.sqrt(3),dx=Math.tan(30*Math.PI/180);d3.svg.axis=function(){function k(k){k.each(function(){var k=d3.select(this),l=h==null?a.ticks?a.ticks.apply(a,g):a.domain():h,m=i==null?a.tickFormat?a.tickFormat.apply(a,g):String:i,n=dA(a,l,j),o=k.selectAll(".minor").data(n,String),p=o.enter().insert("line","g").attr("class","tick minor").style("opacity",1e-6),q=d3.transition(o.exit()).style("opacity",1e-6).remove(),r=d3.transition(o).style("opacity",1),s=k.selectAll("g").data(l,String),t=s.enter().insert("g","path").style("opacity",1e-6),u=d3.transition(s.exit()).style("opacity",1e-6).remove(),v=d3.transition(s).style("opacity",1),w,x=cf(a),y=k.selectAll(".domain").data([0]),z=y.enter().append("path").attr("class","domain"),A=d3.transition(y),B=a.copy(),C=this.__chart__||B;this.__chart__=B,t.append("line").attr("class","tick"),t.append("text");var D=t.select("line"),E=v.select("line"),F=s.select("text").text(m),G=t.select("text"),H=v.select("text");switch(b){case"bottom":w=dy,p.attr("y2",d),r.attr("x2",0).attr("y2",d),D.attr("y2",c),G.attr("y",Math.max(c,0)+f),E.attr("x2",0).attr("y2",c),H.attr("x",0).attr("y",Math.max(c,0)+f),F.attr("dy",".71em").attr("text-anchor","middle"),A.attr("d","M"+x[0]+","+e+"V0H"+x[1]+"V"+e);break;case"top":w=dy,p.attr("y2",-d),r.attr("x2",0).attr("y2",-d),D.attr("y2",-c),G.attr("y",-(Math.max(c,0)+f)),E.attr("x2",0).attr("y2",-c),H.attr("x",0).attr("y",-(Math.max(c,0)+f)),F.attr("dy","0em").attr("text-anchor","middle"),A.attr("d","M"+x[0]+","+ -e+"V0H"+x[1]+"V"+ -e);break;case"left":w=dz,p.attr("x2",-d),r.attr("x2",-d).attr("y2",0),D.attr("x2",-c),G.attr("x",-(Math.max(c,0)+f)),E.attr("x2",-c).attr("y2",0),H.attr("x",-(Math.max(c,0)+f)).attr("y",0),F.attr("dy",".32em").attr("text-anchor","end"),A.attr("d","M"+ -e+","+x[0]+"H0V"+x[1]+"H"+ -e);break;case"right":w=dz,p.attr("x2",d),r.attr("x2",d).attr("y2",0),D.attr("x2",c),G.attr("x",Math.max(c,0)+f),E.attr("x2",c).attr("y2",0),H.attr("x",Math.max(c,0)+f).attr("y",0),F.attr("dy",".32em").attr("text-anchor","start"),A.attr("d","M"+e+","+x[0]+"H0V"+x[1]+"H"+e)}if(a.ticks)t.call(w,C),v.call(w,B),u.call(w,B),p.call(w,C),r.call(w,B),q.call(w,B);else{var I=B.rangeBand()/2,J=function(a){return B(a)+I};t.call(w,J),v.call(w,J)}})}var a=d3.scale.linear(),b="bottom",c=6,d=6,e=6,f=3,g=[10],h=null,i,j=0;return k.scale=function(b){return arguments.length?(a=b,k):a},k.orient=function(a){return arguments.length?(b=a,k):b},k.ticks=function(){return arguments.length?(g=arguments,k):g},k.tickValues=function(a){return arguments.length?(h=a,k):h},k.tickFormat=function(a){return arguments.length?(i=a,k):i},k.tickSize=function(a,b,f){if(!arguments.length)return c;var g=arguments.length-1;return c=+a,d=g>1?+b:c,e=g>0?+arguments[g]:c,k},k.tickPadding=function(a){return arguments.length?(f=+a,k):f},k.tickSubdivide=function(a){return arguments.length?(j=+a,k):j},k},d3.svg.brush=function(){function g(a){a.each(function(){var a=d3.select(this),e=a.selectAll(".background").data([0]),f=a.selectAll(".extent").data([0]),l=a.selectAll(".resize").data(d,String),m;a.style("pointer-events","all").on("mousedown.brush",k).on("touchstart.brush",k),e.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),f.enter().append("rect").attr("class","extent").style("cursor","move"),l.enter().append("g").attr("class",function(a){return"resize "+a}).style("cursor",function(a){return dB[a]}).append("rect").attr("x",function(a){return/[ew]$/.test(a)?-3:null}).attr("y",function(a){return/^[ns]/.test(a)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),l.style("display",g.empty()?"none":null),l.exit().remove(),b&&(m=cf(b),e.attr("x",m[0]).attr("width",m[1]-m[0]),i(a)),c&&(m=cf(c),e.attr("y",m[0]).attr("height",m[1]-m[0]),j(a)),h(a)})}function h(a){a.selectAll(".resize").attr("transform",function(a){return"translate("+e[+/e$/.test(a)][0]+","+e[+/^s/.test(a)][1]+")"})}function i(a){a.select(".extent").attr("x",e[0][0]),a.selectAll(".extent,.n>rect,.s>rect").attr("width",e[1][0]-e[0][0])}function j(a){a.select(".extent").attr("y",e[0][1]),a.selectAll(".extent,.e>rect,.w>rect").attr("height",e[1][1]-e[0][1])}function k(){function x(){var a=d3.event.changedTouches;return a?d3.touches(d,a)[0]:d3.mouse(d)}function y(){d3.event.keyCode==32&&(q||(r=null,s[0]-=e[1][0],s[1]-=e[1][1],q=2),Y())}function z(){d3.event.keyCode==32&&q==2&&(s[0]+=e[1][0],s[1]+=e[1][1],q=0,Y())}function A(){var a=x(),d=!1;t&&(a[0]+=t[0],a[1]+=t[1]),q||(d3.event.altKey?(r||(r=[(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2]),s[0]=e[+(a[0]0?e=c:e=0:c>0&&(b.start({type:"start",alpha:e=c}),d3.timer(a.tick)),a):e},a.start=function(){function p(a,c){var d=t(b),e=-1,f=d.length,g;while(++ee&&(e=h),d.push(h)}for(g=0;g0){f=-1;while(++f=i[0]&&o<=i[1]&&(k=g[d3.bisect(j,o,1,m)-1],k.y+=n,k.push(e[f]))}return g}var a=!0,b=Number,c=ed,d=eb;return e.value=function(a){return arguments.length?(b=a,e):b},e.range=function(a){return arguments.length?(c=p(a),e):c},e.bins=function(a){return arguments.length?(d=typeof a=="number"?function(b){return ec(b,a)}:p(a),e):d},e.frequency=function(b){return arguments.length?(a=!!b,e):a},e},d3.layout.hierarchy=function(){function d(e,g,h){var i=b.call(f,e,g),j=ej?e:{data:e};j.depth=g,h.push(j);if(i&&(l=i.length)){var k=-1,l,m=j.children=[],n=0,o=g+1,p;while(++k0&&(eH(eI(g,a,d),a,m),i+=m,j+=m),k+=g._tree.mod,i+=e._tree.mod,l+=h._tree.mod,j+=f._tree.mod;g&&!eA(f)&&(f._tree.thread=g,f._tree.mod+=k-j),e&&!ez(h)&&(h._tree.thread=e,h._tree.mod+=i-l,d=a)}return d}var f=a.call(this,d,e),g=f[0];eF(g,function(a,b){a._tree={ancestor:a,prelim:0,mod:0,change:0,shift:0,number:b?b._tree.number+1:0}}),h(g),i(g,-g._tree.prelim);var k=eB(g,eD),l=eB(g,eC),m=eB(g,eE),n=k.x-b(k,l)/2,o=l.x+b(l,k)/2,p=m.depth||1;return eF(g,function(a){a.x=(a.x-n)/(o-n)*c[0],a.y=a.depth/p*c[1],delete a._tree}),f}var a=d3.layout.hierarchy().sort(null).value(null),b=ey,c=[1,1];return d.separation=function(a){return arguments.length?(b=a,d):b},d.size=function(a){return arguments.length?(c=a,d):c},ee(d,a)},d3.layout.treemap=function(){function i(a,b){var c=-1,d=a.length,e,f;while(++c0)d.push(g=f[o-1]),d.area+=g.area,(k=l(d,n))<=h?(f.pop(),h=k):(d.area-=d.pop().area,m(d,n,c,!1),n=Math.min(c.dx,c.dy),d.length=d.area=0,h=Infinity);d.length&&(m(d,n,c,!0),d.length=d.area=0),b.forEach(j)}}function k(a){var b=a.children;if(b&&b.length){var c=e(a),d=b.slice(),f,g=[];i(d,c.dx*c.dy/a.value),g.area=0;while(f=d.pop())g.push(f),g.area+=f.area,f.z!=null&&(m(g,f.z?c.dx:c.dy,c,!d.length),g.length=g.area=0);b.forEach(k)}}function l(a,b){var c=a.area,d,e=0,f=Infinity,g=-1,i=a.length;while(++ge&&(e=d)}return c*=c,b*=b,c?Math.max(b*e*h/c,c/(b*f*h)):Infinity}function m(a,c,d,e){var f=-1,g=a.length,h=d.x,i=d.y,j=c?b(a.area/c):0,k;if(c==d.dx){if(e||j>d.dy)j=d.dy;while(++fd.dx)j=d.dx;while(++f=a.length)return d;if(i)return i=!1,c;var b=f.lastIndex;if(a.charCodeAt(b)===34){var e=b;while(e++50?b:f<-140?c:g<21?d:a)(e)}var a=d3.geo.albers(),b=d3.geo.albers().origin([-160,60]).parallels([55,65]),c=d3.geo.albers().origin([-160,20]).parallels([8,18]),d=d3.geo.albers().origin([-60,10]).parallels([8,18]);return e.scale=function(f){return arguments.length?(a.scale(f),b.scale(f*.6),c.scale(f),d.scale(f*1.5),e.translate(a.translate())):a.scale()},e.translate=function(f){if(!arguments.length)return a.translate();var g=a.scale()/1e3,h=f[0],i=f[1];return a.translate(f),b.translate([h-400*g,i+170*g]),c.translate([h-190*g,i+200*g]),d.translate([h+580*g,i+430*g]),e},e.scale(a.scale())},d3.geo.bonne=function(){function g(g){var h=g[0]*eN-c,i=g[1]*eN-d;if(e){var j=f+e-i,k=h*Math.cos(i)/j;h=j*Math.sin(k),i=j*Math.cos(k)-f}else h*=Math.cos(i),i*=-1;return[a*h+b[0],a*i+b[1]]}var a=200,b=[480,250],c,d,e,f;return g.invert=function(d){var g=(d[0]-b[0])/a,h=(d[1]-b[1])/a;if(e){var i=f+h,j=Math.sqrt(g*g+i*i);h=f+e-j,g=c+j*Math.atan2(g,i)/Math.cos(h)}else h*=-1,g/=Math.cos(h);return[g/eN,h/eN]},g.parallel=function(a){return arguments.length?(f=1/Math.tan(e=a*eN),g):e/eN},g.origin=function(a){return arguments.length?(c=a[0]*eN,d=a[1]*eN,g):[c/eN,d/eN]},g.scale=function(b){return arguments.length?(a=+b,g):a},g.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],g):b},g.origin([0,0]).parallel(45)},d3.geo.equirectangular=function(){function c(c){var d=c[0]/360,e=-c[1]/360;return[a*d+b[0],a*e+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,-360*e]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.mercator=function(){function c(c){var d=c[0]/360,e=-(Math.log(Math.tan(Math.PI/4+c[1]*eN/2))/eN)/360;return[a*d+b[0],a*Math.max(-0.5,Math.min(.5,e))+b[1]]}var a=500,b=[480,250];return c.invert=function(c){var d=(c[0]-b[0])/a,e=(c[1]-b[1])/a;return[360*d,2*Math.atan(Math.exp(-360*e*eN))/eN-90]},c.scale=function(b){return arguments.length?(a=+b,c):a},c.translate=function(a){return arguments.length?(b=[+a[0],+a[1]],c):b},c},d3.geo.path=function(){function e(c,e){typeof a=="function"&&(b=eP(a.apply(this,arguments))),g(c);var f=d.length?d.join(""):null;return d=[],f}function f(a){return c(a).join(",")}function i(a){var b=l(a[0]),c=0,d=a.length;while(++c0){d.push("M");while(++h0){d.push("M");while(++kd&&(d=a),fe&&(e=f)}),[[b,c],[d,e]]};var eR={Feature:eS,FeatureCollection:eT,GeometryCollection:eU,LineString:eV,MultiLineString:eW,MultiPoint:eV,MultiPolygon:eX,Point:eY,Polygon:eZ};d3.geo.circle=function(){function e(){}function f(a){return d.distance(a)=k*k+l*l?d[f].index=-1:(d[m].index=-1,o=d[f].angle,m=f,n=g)):(o=d[f].angle,m=f,n=g);e.push(h);for(f=0,g=0;f<2;++g)d[g].index!==-1&&(e.push(d[g].index),f++);p=e.length;for(;g=0?(c=a.ep.r,d=a.ep.l):(c=a.ep.l,d=a.ep.r),a.a===1?(g=c?c.y:-1e6,e=a.c-a.b*g,h=d?d.y:1e6,f=a.c-a.b*h):(e=c?c.x:-1e6,g=a.c-a.a*e,f=d?d.x:1e6,h=a.c-a.a*f);var i=[e,g],j=[f,h];b[a.region.l.index].push(i,j),b[a.region.r.index].push(i,j)}),b.map(function(b,c){var d=a[c][0],e=a[c][1];return b.forEach(function(a){a.angle=Math.atan2(a[0]-d,a[1]-e)}),b.sort(function(a,b){return a.angle-b.angle}).filter(function(a,c){return!c||a.angle-b[c-1].angle>1e-10})})};var fi={l:"r",r:"l"};d3.geom.delaunay=function(a){var b=a.map(function(){return[]}),c=[];return fj(a,function(c){b[c.region.l.index].push(a[c.region.r.index])}),b.forEach(function(b,d){var e=a[d],f=e[0],g=e[1];b.forEach(function(a){a.angle=Math.atan2(a[0]-f,a[1]-g)}),b.sort(function(a,b){return a.angle-b.angle});for(var h=0,i=b.length-1;h=g,j=b.y>=h,l=(j<<1)+i;a.leaf=!1,a=a.nodes[l]||(a.nodes[l]=fk()),i?c=g:e=g,j?d=h:f=h,k(a,b,c,d,e,f)}var f,g=-1,h=a.length;h&&isNaN(a[0].x)&&(a=a.map(fm));if(arguments.length<5)if(arguments.length===3)e=d=c,c=b;else{b=c=Infinity,d=e=-Infinity;while(++gd&&(d=f.x),f.y>e&&(e=f.y);var i=d-b,j=e-c;i>j?e=c+i:d=b+j}var m=fk();return m.add=function(a){k(m,a,b,c,d,e)},m.visit=function(a){fl(a,m,b,c,d,e)},a.forEach(m.add),m},d3.time={};var fn=Date;fo.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){fp.setUTCDate.apply(this._,arguments)},setDay:function(){fp.setUTCDay.apply(this._,arguments)},setFullYear:function(){fp.setUTCFullYear.apply(this._,arguments)},setHours:function(){fp.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){fp.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){fp.setUTCMinutes.apply(this._,arguments)},setMonth:function(){fp.setUTCMonth.apply(this._,arguments)},setSeconds:function(){fp.setUTCSeconds.apply(this._,arguments)},setTime:function(){fp.setTime.apply(this._,arguments)}};var fp=Date.prototype;d3.time.format=function(a){function c(c){var d=[],e=-1,f=0,g,h;while(++e=12?"PM":"AM"},S:function(a){return fr(a.getSeconds())},U:function(a){return fr(d3.time.sundayOfYear(a))},w:function(a){return a.getDay()},W:function(a){return fr(d3.time.mondayOfYear(a))},x:d3.time.format("%m/%d/%y"),X:d3.time.format("%H:%M:%S"),y:function(a){return fr(a.getFullYear()%100)},Y:function(a){return ft(a.getFullYear()%1e4)},Z:fX,"%":function(a){return"%"}},fw={a:fx,A:fy,b:fC,B:fE,c:fI,d:fP,e:fP,H:fQ,I:fQ,L:fT,m:fO,M:fR,p:fV,S:fS,x:fJ,X:fK,y:fM,Y:fL},fz=/^(?:sun|mon|tue|wed|thu|fri|sat)/i,fA=/^(?:Sunday|Monday|Tuesday|Wednesday|Thursday|Friday|Saturday)/i,fB=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],fD=d3.map({jan:0,feb:1,mar:2,apr:3,may:4,jun:5,jul:6,aug:7,sep:8,oct:9,nov:10,dec:11}),fF=/^(?:January|February|March|April|May|June|July|August|September|October|November|December)/ig,fG=d3.map({january:0,february:1,march:2,april:3,may:4,june:5,july:6,august:7,september:8,october:9,november:10,december:11}),fH=["January","February","March","April","May","June","July","August","September","October","November","December"],fU=/\s*\d+/,fW=d3.map({am:0,pm:1});d3.time.format.utc=function(a){function c(a){try{fn=fo;var c=new fn;return c._=a,b(c)}finally{fn=Date}}var b=d3.time.format(a);return c.parse=function(a){try{fn=fo;var c=b.parse(a);return c&&c._}finally{fn=Date}},c.toString=b.toString,c};var fY=d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");d3.time.format.iso=Date.prototype.toISOString?fZ:fY,fZ.parse=function(a){var b=new Date(a);return isNaN(b)?null:b},fZ.toString=fY.toString,d3.time.second=f$(function(a){return new fn(Math.floor(a/1e3)*1e3)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*1e3)},function(a){return a.getSeconds()}),d3.time.seconds=d3.time.second.range,d3.time.seconds.utc=d3.time.second.utc.range,d3.time.minute=f$(function(a){return new fn(Math.floor(a/6e4)*6e4)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*6e4)},function(a){return a.getMinutes()}),d3.time.minutes=d3.time.minute.range,d3.time.minutes.utc=d3.time.minute.utc.range,d3.time.hour=f$(function(a){var b=a.getTimezoneOffset()/60;return new fn((Math.floor(a/36e5-b)+b)*36e5)},function(a,b){a.setTime(a.getTime()+Math.floor(b)*36e5)},function(a){return a.getHours()}),d3.time.hours=d3.time.hour.range,d3.time.hours.utc=d3.time.hour.utc.range,d3.time.day=f$(function(a){return new fn(a.getFullYear(),a.getMonth(),a.getDate())},function(a,b){a.setDate(a.getDate()+b)},function(a){return a.getDate()-1}),d3.time.days=d3.time.day.range,d3.time.days.utc=d3.time.day.utc.range,d3.time.dayOfYear=function(a){var b=d3.time.year(a);return Math.floor((a-b)/864e5-(a.getTimezoneOffset()-b.getTimezoneOffset())/1440)},fB.forEach(function(a,b){a=a.toLowerCase(),b=7-b;var c=d3.time[a]=f$(function(a){return(a=d3.time.day(a)).setDate(a.getDate()-(a.getDay()+b)%7),a},function(a,b){a.setDate(a.getDate()+Math.floor(b)*7)},function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%7)/7)-(c!==b)});d3.time[a+"s"]=c.range,d3.time[a+"s"].utc=c.utc.range,d3.time[a+"OfYear"]=function(a){var c=d3.time.year(a).getDay();return Math.floor((d3.time.dayOfYear(a)+(c+b)%7)/7)}}),d3.time.week=d3.time.sunday,d3.time.weeks=d3.time.sunday.range,d3.time.weeks.utc=d3.time.sunday.utc.range,d3.time.weekOfYear=d3.time.sundayOfYear,d3.time.month=f$(function(a){return new fn(a.getFullYear(),a.getMonth(),1)},function(a,b){a.setMonth(a.getMonth()+b)},function(a){return a.getMonth()}),d3.time.months=d3.time.month.range,d3.time.months.utc=d3.time.month.utc.range,d3.time.year=f$(function(a){return new fn(a.getFullYear(),0,1)},function(a,b){a.setFullYear(a.getFullYear()+b)},function(a){return a.getFullYear()}),d3.time.years=d3.time.year.range,d3.time.years.utc=d3.time.year.utc.range;var gg=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],gh=[[d3.time.second,1],[d3.time.second,5],[d3.time.second,15],[d3.time.second,30],[d3.time.minute,1],[d3.time.minute,5],[d3.time.minute,15],[d3.time.minute,30],[d3.time.hour,1],[d3.time.hour,3],[d3.time.hour,6],[d3.time.hour,12],[d3.time.day,1],[d3.time.day,2],[d3.time.week,1],[d3.time.month,1],[d3.time.month,3],[d3.time.year,1]],gi=[[d3.time.format("%Y"),function(a){return!0}],[d3.time.format("%B"),function(a){return a.getMonth()}],[d3.time.format("%b %d"),function(a){return a.getDate()!=1}],[d3.time.format("%a %d"),function(a){return a.getDay()&&a.getDate()!=1}],[d3.time.format("%I %p"),function(a){return a.getHours()}],[d3.time.format("%I:%M"),function(a){return a.getMinutes()}],[d3.time.format(":%S"),function(a){return a.getSeconds()}],[d3.time.format(".%L"),function(a){return a.getMilliseconds()}]],gj=d3.scale.linear(),gk=gd(gi);gh.year=function(a,b){return gj.domain(a.map(gf)).ticks(b).map(ge)},d3.time.scale=function(){return ga(d3.scale.linear(),gh,gk)};var gl=gh.map(function(a){return[a[0].utc,a[1]]}),gm=[[d3.time.format.utc("%Y"),function(a){return!0}],[d3.time.format.utc("%B"),function(a){return a.getUTCMonth()}],[d3.time.format.utc("%b %d"),function(a){return a.getUTCDate()!=1}],[d3.time.format.utc("%a %d"),function(a){return a.getUTCDay()&&a.getUTCDate()!=1}],[d3.time.format.utc("%I %p"),function(a){return a.getUTCHours()}],[d3.time.format.utc("%I:%M"),function(a){return a.getUTCMinutes()}],[d3.time.format.utc(":%S"),function(a){return a.getUTCSeconds()}],[d3.time.format.utc(".%L"),function(a){return a.getUTCMilliseconds()}]],gn=gd(gm);gl.year=function(a,b){return gj.domain(a.map(gp)).ticks(b).map(go)},d3.time.scale.utc=function(){return ga(d3.scale.linear(),gl,gn)}})(); \ No newline at end of file diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js new file mode 100644 index 000000000..3dd644b7d --- /dev/null +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -0,0 +1,343 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// Pre-reqs: edu-python.js and jquery.ba-bbq.min.js should be imported BEFORE this file + + +function enterEditMode() { + $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); +} + +function enterVisualizeMode(traceData, inputCode) { + // set gross globals, then let jQuery BBQ take care of the rest + curTrace = traceData; + curInputCode = inputCode; + + renderPyCodeOutput(inputCode); + + $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); +} + + +var pyInputCodeMirror; // CodeMirror object that contains the input text + +function setCodeMirrorVal(dat) { + pyInputCodeMirror.setValue(dat); +} + + +$(document).ready(function() { + eduPythonCommonInit(); // must call this first! + + pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { + mode: 'python', + lineNumbers: true, + tabSize: 2, + }); + + pyInputCodeMirror.setSize(null, '450px'); + + + + // be friendly to the browser's forward and back buttons + // thanks to http://benalman.com/projects/jquery-bbq-plugin/ + $(window).bind("hashchange", function(e) { + appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode + + // globals defined in edu-python.js + preseededCode = $.bbq.getState('code'); + + if (!preseededCurInstr) { // TODO: kinda gross hack + preseededCurInstr = Number($.bbq.getState('curInstr')); + } + + // default mode is 'edit' + if (appMode == undefined) { + appMode = 'edit'; + } + + // if there's no curTrace, then default to edit mode since there's + // nothing to visualize: + if (!curTrace) { + appMode = 'edit'; + + if (preseededCode) { + // if you've pre-seeded 'code' and 'curInstr' params in the URL hash, + // then punt for now ... + } + else { + $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); + } + } + + + if (appMode == 'edit') { + $("#pyInputPane").show(); + $("#pyOutputPane").hide(); + } + else if (appMode == 'visualize') { + $("#pyInputPane").hide(); + $("#pyOutputPane").show(); + + $('#executeBtn').html("Visualize execution"); + $('#executeBtn').attr('disabled', false); + + + // do this AFTER making #pyOutputPane visible, or else + // jsPlumb connectors won't render properly + processTrace(false); + } + else { + assert(false); + } + }); + + // From: http://benalman.com/projects/jquery-bbq-plugin/ + // Since the event is only triggered when the hash changes, we need + // to trigger the event now, to handle the hash the page may have + // loaded with. + $(window).trigger( "hashchange" ); + + + $("#executeBtn").attr('disabled', false); + $("#executeBtn").click(function() { + $('#executeBtn').html("Please wait ... processing your code"); + $('#executeBtn').attr('disabled', true); + $("#pyOutputPane").hide(); + + // TODO: is GET or POST best here? + $.get("exec", + {user_script : pyInputCodeMirror.getValue()}, + function(traceData) { + enterVisualizeMode(traceData, pyInputCodeMirror.getValue()); + }, + "json"); + }); + + + $("#editBtn").click(function() { + enterEditMode(); + }); + + + // canned examples + + $("#tutorialExampleLink").click(function() { + $.get("example-code/py_tutorial.txt", setCodeMirrorVal); + return false; + }); + + $("#strtokExampleLink").click(function() { + $.get("example-code/strtok.txt", setCodeMirrorVal); + return false; + }); + + $("#fibonacciExampleLink").click(function() { + $.get("example-code/fib.txt", setCodeMirrorVal); + return false; + }); + + $("#memoFibExampleLink").click(function() { + $.get("example-code/memo_fib.txt", setCodeMirrorVal); + return false; + }); + + $("#factExampleLink").click(function() { + $.get("example-code/fact.txt", setCodeMirrorVal); + return false; + }); + + $("#filterExampleLink").click(function() { + $.get("example-code/filter.txt", setCodeMirrorVal); + return false; + }); + + $("#insSortExampleLink").click(function() { + $.get("example-code/ins_sort.txt", setCodeMirrorVal); + return false; + }); + + $("#aliasExampleLink").click(function() { + $.get("example-code/aliasing.txt", setCodeMirrorVal); + return false; + }); + + $("#newtonExampleLink").click(function() { + $.get("example-code/sqrt.txt", setCodeMirrorVal); + return false; + }); + + $("#oopSmallExampleLink").click(function() { + $.get("example-code/oop_small.txt", setCodeMirrorVal); + return false; + }); + + $("#mapExampleLink").click(function() { + $.get("example-code/map.txt", setCodeMirrorVal); + return false; + }); + + $("#oop1ExampleLink").click(function() { + $.get("example-code/oop_1.txt", setCodeMirrorVal); + return false; + }); + + $("#oop2ExampleLink").click(function() { + $.get("example-code/oop_2.txt", setCodeMirrorVal); + return false; + }); + + $("#inheritanceExampleLink").click(function() { + $.get("example-code/oop_inherit.txt", setCodeMirrorVal); + return false; + }); + + $("#sumExampleLink").click(function() { + $.get("example-code/sum.txt", setCodeMirrorVal); + return false; + }); + + $("#pwGcdLink").click(function() { + $.get("example-code/wentworth_gcd.txt", setCodeMirrorVal); + return false; + }); + + $("#pwSumListLink").click(function() { + $.get("example-code/wentworth_sumList.txt", setCodeMirrorVal); + return false; + }); + + $("#towersOfHanoiLink").click(function() { + $.get("example-code/towers_of_hanoi.txt", setCodeMirrorVal); + return false; + }); + + $("#pwTryFinallyLink").click(function() { + $.get("example-code/wentworth_try_finally.txt", setCodeMirrorVal); + return false; + }); + + + $('#closure1Link').click(function() { + $.get("example-code/closures/closure1.txt", setCodeMirrorVal); + return false; + }); + $('#closure2Link').click(function() { + $.get("example-code/closures/closure2.txt", setCodeMirrorVal); + return false; + }); + $('#closure3Link').click(function() { + $.get("example-code/closures/closure3.txt", setCodeMirrorVal); + return false; + }); + $('#closure4Link').click(function() { + $.get("example-code/closures/closure4.txt", setCodeMirrorVal); + return false; + }); + $('#closure5Link').click(function() { + $.get("example-code/closures/closure5.txt", setCodeMirrorVal); + return false; + }); + + + $('#aliasing1Link').click(function() { + $.get("example-code/aliasing/aliasing1.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing2Link').click(function() { + $.get("example-code/aliasing/aliasing2.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing3Link').click(function() { + $.get("example-code/aliasing/aliasing3.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing4Link').click(function() { + $.get("example-code/aliasing/aliasing4.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing5Link').click(function() { + $.get("example-code/aliasing/aliasing5.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing6Link').click(function() { + $.get("example-code/aliasing/aliasing6.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing7Link').click(function() { + $.get("example-code/aliasing/aliasing7.txt", setCodeMirrorVal); + return false; + }); + + $('#ll1Link').click(function() { + $.get("example-code/linked-lists/ll1.txt", setCodeMirrorVal); + return false; + }); + $('#ll2Link').click(function() { + $.get("example-code/linked-lists/ll2.txt", setCodeMirrorVal); + return false; + }); + + + if (preseededCode) { + setCodeMirrorVal(preseededCode); + + if ($.bbq.getState('mode') != 'edit') { + $("#executeBtn").trigger('click'); + } + } + else { + // select a canned example on start-up: + $("#aliasExampleLink").trigger('click'); + } + + + // TODO: refactor so that it applies to edu-python-questions.js as well ... + + $('#executionSlider').bind('slide', function(evt, ui) { + // this is SUPER subtle. if this value was changed programmatically, + // then evt.originalEvent will be undefined. however, if this value + // was changed by a user-initiated event, then this code should be + // executed ... + if (evt.originalEvent) { + curInstr = ui.value; + updateOutput(true); // need to pass 'true' here to prevent infinite loop + } + }); + + + $('#genUrlBtn').bind('click', function() { + // override mode with 'visualize' ... + var urlStr = jQuery.param.fragment(window.location.href, {code: curInputCode, curInstr: curInstr}, 2); + + $('#urlOutput').val(urlStr); + }); + +}); + diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js new file mode 100644 index 000000000..c719544fd --- /dev/null +++ b/PyTutorGAE/js/edu-python.js @@ -0,0 +1,2534 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// TODO: look into using the d3.map class instead of direct object operations in js, +// since the latter might exhibit funny behavior for certain reserved keywords + + +// code that is common to all Online Python Tutor pages + +var appMode = 'edit'; // 'edit', 'visualize', or 'grade' (only for question.html) + + +/* colors - see edu-python.css */ +var lightYellow = '#F5F798'; +var lightLineColor = '#FFFFCC'; +var errorColor = '#F87D76'; +var visitedLineColor = '#3D58A2'; + +var lightGray = "#cccccc"; +//var lightGray = "#dddddd"; +var darkBlue = "#3D58A2"; +var lightBlue = "#899CD1"; +var pinkish = "#F15149"; +var lightPink = "#F89D99"; +var darkRed = "#9D1E18"; + +var breakpointColor = pinkish; + + +var keyStuckDown = false; + + +// ugh globals! should really refactor into a "current state" object or +// something like that ... +var curTrace = null; +var curInputCode = null; +var curInstr = 0; + +var preseededCode = null; // if you passed in a 'code=' in the URL, then set this var +var preseededCurInstr = null; // if you passed in a 'curInstr=' in the URL, then set this var + + +// an array of objects with the following fields: +// 'text' - the text of the line of code +// 'lineNumber' - one-indexed (always the array index + 1) +// 'executionPoints' - an ordered array of zero-indexed execution points where this line was executed +// 'backgroundColor' - current code output line background color +// 'breakpointHere' - has a breakpoint been set here? +var codeOutputLines = []; + +var visitedLinesSet = {} // YUCKY GLOBAL! + + + +// true iff trace ended prematurely since maximum instruction limit has +// been reached +var instrLimitReached = false; + +function assert(cond) { + if (!cond) { + alert("Error: ASSERTION FAILED"); + } +} + +// taken from http://www.toao.net/32-my-htmlspecialchars-function-for-javascript +function htmlspecialchars(str) { + if (typeof(str) == "string") { + str = str.replace(/&/g, "&"); /* must do & first */ + + // ignore these for now ... + //str = str.replace(/"/g, """); + //str = str.replace(/'/g, "'"); + + str = str.replace(//g, ">"); + + // replace spaces: + str = str.replace(/ /g, " "); + } + return str; +} + +function processTrace(jumpToEnd) { + curInstr = 0; + + // only do this at most ONCE, and then clear out preseededCurInstr + if (preseededCurInstr && preseededCurInstr < curTrace.length) { // NOP anyways if preseededCurInstr is 0 + curInstr = preseededCurInstr; + preseededCurInstr = null; + } + + // delete all stale output + $("#pyStdout").val(''); + + if (curTrace.length > 0) { + var lastEntry = curTrace[curTrace.length - 1]; + + // GLOBAL! + instrLimitReached = (lastEntry.event == 'instruction_limit_reached'); + + if (instrLimitReached) { + curTrace.pop() // kill last entry + var warningMsg = lastEntry.exception_msg; + $("#errorOutput").html(htmlspecialchars(warningMsg)); + $("#errorOutput").show(); + } + // as imran suggests, for a (non-error) one-liner, SNIP off the + // first instruction so that we start after the FIRST instruction + // has been executed ... + else if (curTrace.length == 2) { + curTrace.shift(); + } + + + if (jumpToEnd) { + // if there's an exception, then jump to the FIRST occurrence of + // that exception. otherwise, jump to the very end of execution. + curInstr = curTrace.length - 1; + + for (var i = 0; i < curTrace.length; i++) { + var curEntry = curTrace[i]; + if (curEntry.event == 'exception' || + curEntry.event == 'uncaught_exception') { + curInstr = i; + break; + } + } + } + + } + + + // remove any existing sliders + $('#executionSlider').slider('destroy'); + $('#executionSlider').empty(); + + $('#executionSlider').slider({ + min: 0, + max: curTrace.length - 1, + step: 1 + + }); + + //disable keyboard actions on the slider itself (to prevent double-firing of events) + $("#executionSlider .ui-slider-handle").unbind('keydown'); + // make skinnier and taller + $("#executionSlider .ui-slider-handle").css('width', '0.8em'); + $("#executionSlider .ui-slider-handle").css('height', '1.4em'); + + $(".ui-widget-content").css('font-size', '0.9em'); + + updateOutput(); +} + +function highlightCodeLine(curLine, hasError, isTerminated) { + d3.selectAll('#pyCodeOutputDiv td.lineNo') + .attr('id', function(d) {return 'lineNo' + d.lineNumber;}) + .style('color', function(d) + {return d.breakpointHere ? breakpointColor : (visitedLinesSet[d.lineNumber] ? visitedLineColor : null);}) + .style('font-weight', function(d) + {return d.breakpointHere ? 'bold' : (visitedLinesSet[d.lineNumber] ? 'bold' : null);}); + + d3.selectAll('#pyCodeOutputDiv td.cod') + .style('background-color', function(d) { + if (d.lineNumber == curLine) { + if (hasError) { + d.backgroundColor = errorColor; + } + else if (isTerminated) { + d.backgroundColor = lightBlue; + } + else { + d.backgroundColor = lightLineColor; + } + } + else { + d.backgroundColor = null; + } + + return d.backgroundColor; + }) + .style('border-top', function(d) { + if ((d.lineNumber == curLine) && !hasError && !isTerminated) { + return '1px solid #F87D76'; + } + else { + // put a default white top border to keep space usage consistent + return '1px solid #ffffff'; + } + }); + + // smoothly scroll code display + if (!isOutputLineVisible(curLine)) { + scrollCodeOutputToLine(curLine); + } +} + + +// smoothly scroll pyCodeOutputDiv so that the given line is at the center +function scrollCodeOutputToLine(lineNo) { + var lineNoTd = $('#lineNo' + lineNo); + var LO = lineNoTd.offset().top; + + var codeOutputDiv = $('#pyCodeOutputDiv'); + var PO = codeOutputDiv.offset().top; + var ST = codeOutputDiv.scrollTop(); + var H = codeOutputDiv.height(); + + codeOutputDiv.animate({scrollTop: (ST + (LO - PO - (Math.round(H / 2))))}, 300); +} + + +// returns True iff lineNo is visible in pyCodeOutputDiv +function isOutputLineVisible(lineNo) { + var lineNoTd = $('#lineNo' + lineNo); + var LO = lineNoTd.offset().top; + + var codeOutputDiv = $('#pyCodeOutputDiv'); + var PO = codeOutputDiv.offset().top; + var ST = codeOutputDiv.scrollTop(); + var H = codeOutputDiv.height(); + + // add a few pixels of fudge factor on the bottom end due to bottom scrollbar + return (PO <= LO) && (LO < (PO + H - 15)); +} + + + +// relies on curTrace and curInstr globals +function updateOutput() { + if (!curTrace) { + return; + } + + $('#urlOutput').val(''); // blank out + + var curEntry = curTrace[curInstr]; + var hasError = false; + + // render VCR controls: + var totalInstrs = curTrace.length; + + // to be user-friendly, if we're on the LAST instruction, print "Program has terminated" + // and DON'T highlight any lines of code in the code display + if (curInstr == (totalInstrs-1)) { + if (instrLimitReached) { + $("#vcrControls #curInstr").html("Instruction limit reached"); + } + else { + $("#vcrControls #curInstr").html("Program has terminated"); + } + } + else { + $("#vcrControls #curInstr").html("About to run step " + (curInstr + 1) + " of " + (totalInstrs-1)); + } + + + // PROGRAMMATICALLY change the value, so evt.originalEvent should be undefined + $('#executionSlider').slider('value', curInstr); + + + // render error (if applicable): + if (curEntry.event == 'exception' || + curEntry.event == 'uncaught_exception') { + assert(curEntry.exception_msg); + + if (curEntry.exception_msg == "Unknown error") { + $("#errorOutput").html('Unknown error: Please email a bug report to philip@pgbovine.net'); + } + else { + $("#errorOutput").html(htmlspecialchars(curEntry.exception_msg)); + } + + $("#errorOutput").show(); + + hasError = true; + } + else { + if (!instrLimitReached) { // ugly, I know :/ + $("#errorOutput").hide(); + } + } + + + // render code output: + if (curEntry.line) { + // calculate all lines that have been 'visited' + // by execution up to (but NOT INCLUDING) curInstr: + visitedLinesSet = {} // GLOBAL! + for (var i = 0; i < curInstr; i++) { + if (curTrace[i].line) { + visitedLinesSet[curTrace[i].line] = true; + } + } + + highlightCodeLine(curEntry.line, hasError, + /* if instrLimitReached, then treat like a normal non-terminating line */ + (!instrLimitReached && (curInstr == (totalInstrs-1)))); + } + + + // render stdout: + + // keep original horizontal scroll level: + var oldLeft = $("#pyStdout").scrollLeft(); + $("#pyStdout").val(curEntry.stdout); + + $("#pyStdout").scrollLeft(oldLeft); + // scroll to bottom, though: + $("#pyStdout").scrollTop($("#pyStdout")[0].scrollHeight); + + + // finally, render all the data structures!!! + renderDataStructures(curEntry, "#dataViz"); +} + + +// make sure varname doesn't contain any weird +// characters that are illegal for CSS ID's ... +// +// I know for a fact that iterator tmp variables named '_[1]' +// are NOT legal names for CSS ID's. +// I also threw in '{', '}', '(', ')', '<', '>' as illegal characters. +// +// TODO: what other characters are illegal??? +var lbRE = new RegExp('\\[|{|\\(|<', 'g'); +var rbRE = new RegExp('\\]|}|\\)|>', 'g'); +function varnameToCssID(varname) { + return varname.replace(lbRE, 'LeftB_').replace(rbRE, '_RightB'); +} + + +// compare two JSON-encoded compound objects for structural equivalence: +function structurallyEquivalent(obj1, obj2) { + // punt if either isn't a compound type + if (isPrimitiveType(obj1) || isPrimitiveType(obj2)) { + return false; + } + + // must be the same compound type + if (obj1[0] != obj2[0]) { + return false; + } + + // must have the same number of elements or fields + if (obj1.length != obj2.length) { + return false; + } + + // for a list or tuple, same size (e.g., a cons cell is a list/tuple of size 2) + if (obj1[0] == 'LIST' || obj1[0] == 'TUPLE') { + return true; + } + else { + var startingInd = -1; + + if (obj1[0] == 'DICT') { + startingInd = 2; + } + else if (obj1[0] == 'INSTANCE') { + startingInd = 3; + } + else { + return false; + } + + var obj1fields = {}; + + // for a dict or object instance, same names of fields (ordering doesn't matter) + for (var i = startingInd; i < obj1.length; i++) { + obj1fields[obj1[i][0]] = 1; // use as a set + } + + for (var i = startingInd; i < obj2.length; i++) { + if (obj1fields[obj2[i][0]] == undefined) { + return false; + } + } + + return true; + } +} + + + +// Renders the current trace entry (curEntry) into the div named by vizDiv +// +// The "3.0" version of renderDataStructures renders variables in +// a stack, values in a separate heap, and draws line connectors +// to represent both stack->heap object references and, more importantly, +// heap->heap references. This version was created in August 2012. +// +// The "2.0" version of renderDataStructures renders variables in +// a stack and values in a separate heap, with data structure aliasing +// explicitly represented via line connectors (thanks to jsPlumb lib). +// This version was created in September 2011. +// +// The ORIGINAL "1.0" version of renderDataStructures +// was created in January 2010 and rendered variables and values +// INLINE within each stack frame without any explicit representation +// of data structure aliasing. That is, aliased objects were rendered +// multiple times, and a unique ID label was used to identify aliases. +function renderDataStructures(curEntry, vizDiv) { + + // VERY VERY IMPORTANT --- and reset ALL jsPlumb state to prevent + // weird mis-behavior!!! + jsPlumb.reset(); + + $(vizDiv).empty(); // jQuery empty() is better than .html('') + + + // create a tabular layout for stack and heap side-by-side + // TODO: figure out how to do this using CSS in a robust way! + $(vizDiv).html('
'); + + $(vizDiv + " #stack").append('
Frames
'); + + + // merge zombie_stack_locals and stack_locals into one master + // ordered list using some simple rules for aesthetics + var stack_to_render = []; + + // first push all regular stack entries backwards + if (curEntry.stack_locals) { + for (var i = curEntry.stack_locals.length - 1; i >= 0; i--) { + var entry = curEntry.stack_locals[i]; + entry.is_zombie = false; + entry.is_highlighted = (i == 0); + stack_to_render.push(entry); + } + } + + // zombie stack consists of exited functions that have returned nested functions + // push zombie stack entries at the BEGINNING of stack_to_render, + // EXCEPT put zombie entries BEHIND regular entries that are their parents + if (curEntry.zombie_stack_locals) { + + for (var i = curEntry.zombie_stack_locals.length - 1; i >= 0; i--) { + var entry = curEntry.zombie_stack_locals[i]; + entry.is_zombie = true; + entry.is_highlighted = false; // never highlight zombie entries + + // j should be 0 most of the time, so we're always inserting new + // elements to the front of stack_to_render (which is why we are + // iterating backwards over zombie_stack_locals). + var j = 0; + for (j = 0; j < stack_to_render.length; j++) { + if ($.inArray(stack_to_render[j].frame_id, entry.parent_frame_id_list) >= 0) { + continue; + } + break; + } + + stack_to_render.splice(j, 0, entry); + } + + } + + + // first build up a list of lists representing the locations of TOP-LEVEL heap objects to be rendered. + // doing so decouples the data format of curEntry from the nitty-gritty HTML rendering code, + // which gives us more flexibility in experimenting with layout strategies. + // + // each outer list represents a "row" in the heap layout (represented via, say, div elements) + // and each inner list represents "columns" within a row (represented via, say, table td elements) + var toplevelHeapLayout = []; + var toplevelHeapLayoutIDs = {}; // set of IDs contained within toplevelHeapLayout + var alreadyLaidObjectIDs = {}; // set of IDs of objects that have already been laid out + // (not necessarily just in toplevelHeapLayout since some elements + // are EMBEDDED within other heap objects) + + + function layoutHeapObject(ref) { + + function layoutHeapObjectHelper(id, row /* list of IDs */, isTopLevel) { + if (alreadyLaidObjectIDs[id] == undefined) { + + // Only push to row if isTopLevel since it only stores top-level objects ... + if (isTopLevel) { + row.push(id); + } + + // but ALWAYS record that this object has already been laid out, no matter what + alreadyLaidObjectIDs[id] = 1; + + // heuristic for laying out 1-D linked data structures: check for enclosing elements that are + // structurally identical and then lay them out as siblings in the same "row" + var heapObj = curEntry.heap[id]; + assert(heapObj); + + if (heapObj[0] == 'LIST' || heapObj[0] == 'TUPLE') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + + if (!isPrimitiveType(child)) { + var childID = getRefID(child); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + layoutHeapObjectHelper(childID, row, true); + } + else { + layoutHeapObjectHelper(childID, null, false /* render embedded within heapObj */); + } + } + }); + } + else if (heapObj[0] == 'SET') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + if (!isPrimitiveType(child)) { + layoutHeapObjectHelper(getRefID(child), null, false /* render embedded within heapObj */); + } + }); + } + else if (heapObj[0] == 'DICT') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + + var dictKey = child[0]; + if (!isPrimitiveType(dictKey)) { + layoutHeapObjectHelper(getRefID(dictKey), null, false /* render embedded within heapObj */); + } + + var dictVal = child[1]; + if (!isPrimitiveType(dictVal)) { + var childID = getRefID(dictVal); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + layoutHeapObjectHelper(childID, row, true); + } + else { + layoutHeapObjectHelper(childID, null, false /* render embedded within heapObj */); + } + } + }); + } + else if (heapObj[0] == 'INSTANCE') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 2) return; // skip type tag and class name + + // instance keys are always strings, so no need to recurse + assert(typeof child[0] == "string"); + + var instVal = child[1]; + if (!isPrimitiveType(instVal)) { + var childID = getRefID(instVal); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + layoutHeapObjectHelper(childID, row, true); + } + else { + layoutHeapObjectHelper(childID, null, false /* render embedded within heapObj */); + } + } + }); + } + else if (heapObj[0] == 'CLASS') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 3) return; // skip type tag, class name, and superclass names + // class attr keys are always strings, so no need to recurse + + var classAttrVal = child[1]; + if (!isPrimitiveType(classAttrVal)) { + layoutHeapObjectHelper(getRefID(classAttrVal), null, false /* render embedded within heapObj */); + } + }); + } + } + } + + var id = getRefID(ref); + var newRow = []; + + layoutHeapObjectHelper(id, newRow, true); + if (newRow.length > 0) { + toplevelHeapLayout.push(newRow); + $.each(newRow, function(i, e) { + toplevelHeapLayoutIDs[e] = 1; + }); + } + } + + + // variables are displayed in the following order, so lay out heap objects in the same order: + // - globals + // - stack entries (regular and zombies) + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + // (use '!==' to do an EXACT match against undefined) + if (val !== undefined) { // might not be defined at this line, which is OKAY! + if (!isPrimitiveType(val)) { + layoutHeapObject(val); + console.log('global:', varname, getRefID(val)); + } + } + }); + + $.each(stack_to_render, function(i, frame) { + if (frame.ordered_varnames.length > 0) { + $.each(frame.ordered_varnames, function(xxx, varname) { + var val = frame.encoded_locals[varname]; + + // ignore return values for zombie frames + if (frame.is_zombie && varname == '__return__') { + return; + } + + if (!isPrimitiveType(val)) { + layoutHeapObject(val); + console.log(frame.func_name + ':', varname, getRefID(val)); + } + }); + } + }); + + + // print toplevelHeapLayout + $.each(toplevelHeapLayout, function(i, elt) { + console.log(elt); + }); + console.log('---'); + + + var renderedObjectIDs = {}; // set (TODO: refactor all sets to use d3.map) + + // count all toplevelHeapLayoutIDs as already rendered since we will render them + // in the d3 .each() statement labeled 'FOOBAR' (might be confusing!) + $.each(toplevelHeapLayoutIDs, function(k, v) { + renderedObjectIDs[k] = v; + }); + + + // render the heap by mapping toplevelHeapLayout into and '); + headerTr.find('td:last').append(ind - 1); + + contentTr.append(''); + renderNestedObject(val, contentTr.find('td:last')); + }); + } + } + else if (obj[0] == 'SET') { + + } + else if (obj[0] == 'DICT') { + + } + else if (obj[0] == 'INSTANCE') { + } + else if (obj[0] == 'CLASS') { + } + else if (obj[0] == 'FUNCTION') { + } + else { + // render custom data type + } + } + + + + // prepend heap header after all the dust settles: + $(vizDiv + ' #heap').prepend('
Objects
'); + + return; + + // Key: CSS ID of the div element representing the variable + // (or heap object, for heap->heap connections, where the + // format is: 'heap_pointer_src_') + // Value: CSS ID of the div element representing the value rendered in the heap + // (the format is: 'heap_object_') + var connectionEndpointIDs = {}; + var heapConnectionEndpointIDs = {}; // subset of connectionEndpointIDs for heap->heap connections + + var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* + + + // nested helper functions are SUPER-helpful! + + // render the JS data object obj inside of jDomElt, + // which is a jQuery wrapped DOM object + // (obj is in a format encoded by pg_encoder.py on the backend) + // isTopLevel is true only if this is a top-level heap object (rather + // than a nested sub-object) + function renderData(obj, jDomElt, isTopLevel) { + var typ = typeof obj; + var oID = getObjectID(obj); + + if (isPrimitiveType(obj)) { + // only wrap primitive types in heap objects if they are at the + // TOP-LEVEL (otherwise just render them inline within other data + // structures) + if (isTopLevel) { + jDomElt.append('
'); + jDomElt = $('#heap_object_' + oID); + } + + if (obj == null) { + jDomElt.append('None'); + } + else if (typ == "number") { + jDomElt.append('' + obj + ''); + } + else if (typ == "boolean") { + if (obj) { + jDomElt.append('True'); + } + else { + jDomElt.append('False'); + } + } + else if (typ == "string") { + // escape using htmlspecialchars to prevent HTML/script injection + var literalStr = htmlspecialchars(obj); + + // print as a double-quoted string literal + literalStr = literalStr.replace(new RegExp('\"', 'g'), '\\"'); // replace ALL + literalStr = '"' + literalStr + '"'; + + jDomElt.append('' + literalStr + ''); + } + } + else { + assert(typ == "object"); + assert($.isArray(obj)); + + if ((compound_objects_already_rendered[oID] !== undefined) || + (obj[0] == 'CIRCULAR_REF')) { + // render heap->heap connection + if (!isTopLevel) { + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + var srcDivID = 'heap_pointer_src_' + heap_pointer_src_id; + heap_pointer_src_id++; // just make sure each source has a UNIQUE ID + jDomElt.append('
 
'); + + assert(connectionEndpointIDs[srcDivID] === undefined); + connectionEndpointIDs[srcDivID] = 'heap_object_' + oID; + + assert(heapConnectionEndpointIDs[srcDivID] === undefined); + heapConnectionEndpointIDs[srcDivID] = 'heap_object_' + oID; + } + } + else { + // wrap compound objects in a heapObject div so that jsPlumb + // connectors can point to it: + jDomElt.append('
'); + jDomElt = $('#heap_object_' + oID); + + if (obj[0] == 'LIST') { + assert(obj.length >= 2); + if (obj.length == 2) { + jDomElt.append('
empty list
'); + } + else { + jDomElt.append('
list
'); + + jDomElt.append('
elements using d3 + d3.select(vizDiv + ' #heap') + .selectAll('table') + .data(toplevelHeapLayout) + .enter().append('table') + .attr('class', 'heapRow') + .selectAll('td') + .data(function(d, i) {return d;}) // map over each row ... + .enter().append('td') + .attr('class', 'toplevelHeapObject') + .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) + .append('div') + .attr('class', 'heapObject') + .attr('id', function(d, i) {return 'heap_object_' + d;}) + .each(function(objID, i) { + renderCompoundObject(objID, $(this), true); // label FOOBAR (see renderedObjectIDs) + }); + + + function renderNestedObject(obj, d3DomElement) { + if (isPrimitiveType(obj)) { + renderPrimitiveObject(obj, d3DomElement, false); + } + else { + renderCompoundObject(getRefID(obj), d3DomElement, false); + } + } + + + function renderPrimitiveObject(obj, d3DomElement) { + var typ = typeof obj; + + if (obj == null) { + d3DomElement.append('None'); + } + else if (typ == "number") { + d3DomElement.append('' + obj + ''); + } + else if (typ == "boolean") { + if (obj) { + d3DomElement.append('True'); + } + else { + d3DomElement.append('False'); + } + } + else if (typ == "string") { + // escape using htmlspecialchars to prevent HTML/script injection + var literalStr = htmlspecialchars(obj); + + // print as a double-quoted string literal + literalStr = literalStr.replace(new RegExp('\"', 'g'), '\\"'); // replace ALL + literalStr = '"' + literalStr + '"'; + + d3DomElement.append('' + literalStr + ''); + } + else { + assert(false); + } + } + + + function renderCompoundObject(objID, d3DomElement, isTopLevel) { + if (!isTopLevel && (renderedObjectIDs[objID] != undefined)) { + // TODO: render jsPlumb arrow source since this heap object has already been rendered + + return; // early return! + } + + renderedObjectIDs[objID] = 1; + + var obj = curEntry.heap[objID]; + assert($.isArray(obj)); + + if (obj[0] == 'LIST' || obj[0] == 'TUPLE') { + var label = obj[0] == 'LIST' ? 'list' : 'tuple'; + + assert(obj.length >= 1); + if (obj.length == 1) { + d3DomElement.append('
empty ' + label + '
'); + } + else { + d3DomElement.append('
' + label + '
'); + d3DomElement.append('
'); + var tbl = d3DomElement.children('table'); + var headerTr = tbl.find('tr:first'); + var contentTr = tbl.find('tr:last'); + $.each(obj, function(ind, val) { + if (ind < 1) return; // skip type tag and ID entry + + // add a new column and then pass in that newly-added column + // as d3DomElement to the recursive call to child: + headerTr.append('
'); + var tbl = jDomElt.children('table'); + var headerTr = tbl.find('tr:first'); + var contentTr = tbl.find('tr:last'); + jQuery.each(obj, function(ind, val) { + if (ind < 2) return; // skip 'LIST' tag and ID entry + + // add a new column and then pass in that newly-added column + // as jDomElt to the recursive call to child: + headerTr.append(''); + headerTr.find('td:last').append(ind - 2); + + contentTr.append(''); + + // heuristic for rendering top-level 1-D linked data structures as separate top-level objects + // (and then drawing an arrow to the next element using a regular renderData() call) + if (isTopLevel && structurallyEquivalent(obj, val)) { + var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + + var enclosingTr = jDomElt.parent().parent(); + enclosingTr.append(''); + renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); + } + + renderData(val, contentTr.find('td:last'), false); + }); + } + } + else if (obj[0] == 'TUPLE') { + assert(obj.length >= 2); + if (obj.length == 2) { + jDomElt.append('
empty tuple
'); + } + else { + jDomElt.append('
tuple
'); + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + var headerTr = tbl.find('tr:first'); + var contentTr = tbl.find('tr:last'); + jQuery.each(obj, function(ind, val) { + if (ind < 2) return; // skip 'TUPLE' tag and ID entry + + // add a new column and then pass in that newly-added column + // as jDomElt to the recursive call to child: + headerTr.append(''); + headerTr.find('td:last').append(ind - 2); + + contentTr.append(''); + + // heuristic for rendering top-level 1-D linked data structures as separate top-level objects + // (and then drawing an arrow to the next element using a regular renderData() call) + if (isTopLevel && structurallyEquivalent(obj, val)) { + var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + + var enclosingTr = jDomElt.parent().parent(); + enclosingTr.append(''); + renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); + } + + renderData(val, contentTr.find('td:last'), false); + }); + } + } + else if (obj[0] == 'SET') { + assert(obj.length >= 2); + if (obj.length == 2) { + jDomElt.append('
empty set
'); + } + else { + jDomElt.append('
set
'); + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + // create an R x C matrix: + var numElts = obj.length - 2; + // gives roughly a 3x5 rectangular ratio, square is too, err, + // 'square' and boring + var numRows = Math.round(Math.sqrt(numElts)); + if (numRows > 3) { + numRows -= 1; + } + + var numCols = Math.round(numElts / numRows); + // round up if not a perfect multiple: + if (numElts % numRows) { + numCols += 1; + } + + jQuery.each(obj, function(ind, val) { + if (ind < 2) return; // skip 'SET' tag and ID entry + + if (((ind - 2) % numCols) == 0) { + tbl.append(''); + } + + var curTr = tbl.find('tr:last'); + curTr.append(''); + renderData(val, curTr.find('td:last'), false); + }); + } + } + else if (obj[0] == 'DICT') { + assert(obj.length >= 2); + if (obj.length == 2) { + jDomElt.append('
empty dict
'); + } + else { + jDomElt.append('
dict
'); + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + $.each(obj, function(ind, kvPair) { + if (ind < 2) return; // skip 'DICT' tag and ID entry + + tbl.append(''); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + var key = kvPair[0]; + var val = kvPair[1]; + + renderData(key, keyTd, false); + + // heuristic for rendering top-level 1-D linked data structures as separate top-level objects + // (and then drawing an arrow to the next element using a regular renderData() call) + if (isTopLevel && structurallyEquivalent(obj, val)) { + var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + + var enclosingTr = jDomElt.parent().parent(); + enclosingTr.append(''); + renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); + } + + renderData(val, valTd, false); + }); + } + } + else if (obj[0] == 'INSTANCE') { + assert(obj.length >= 3); + jDomElt.append('
' + obj[1] + ' instance
'); + + if (obj.length > 3) { + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + $.each(obj, function(ind, kvPair) { + if (ind < 3) return; // skip type tag, class name, and ID entry + + tbl.append(''); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + // the keys should always be strings, so render them directly (and without quotes): + assert(typeof kvPair[0] == "string"); + var attrnameStr = htmlspecialchars(kvPair[0]); + keyTd.append('' + attrnameStr + ''); + + // values can be arbitrary objects, so recurse: + var val = kvPair[1]; + + // heuristic for rendering top-level 1-D linked data structures as separate top-level objects + // (and then drawing an arrow to the next element using a regular renderData() call) + if (isTopLevel && structurallyEquivalent(obj, val)) { + var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + + var enclosingTr = jDomElt.parent().parent(); + enclosingTr.append(''); + renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); + } + + renderData(val, valTd, false); + }); + } + } + else if (obj[0] == 'CLASS') { + assert(obj.length >= 4); + var superclassStr = ''; + if (obj[3].length > 0) { + superclassStr += ('[extends ' + obj[3].join(',') + '] '); + } + + jDomElt.append('
' + obj[1] + ' class ' + superclassStr + '
'); + + if (obj.length > 4) { + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + $.each(obj, function(ind, kvPair) { + if (ind < 4) return; // skip type tag, class name, ID, and superclasses entries + + tbl.append(''); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + // the keys should always be strings, so render them directly (and without quotes): + assert(typeof kvPair[0] == "string"); + var attrnameStr = htmlspecialchars(kvPair[0]); + keyTd.append('' + attrnameStr + ''); + + // values can be arbitrary objects, so recurse: + renderData(kvPair[1], valTd, false); + }); + } + } + else if (obj[0] == 'FUNCTION') { + assert(obj.length == 4); + id = obj[1]; + funcName = htmlspecialchars(obj[2]); // for displaying names like '' + parentFrameID = obj[3]; // optional + + if (parentFrameID) { + jDomElt.append('
function ' + funcName + ' [parent=f'+ parentFrameID + ']
'); + } + else { + jDomElt.append('
function ' + funcName + '
'); + } + + } + else { + // render custom data type + assert(obj.length == 3); + typeName = obj[0]; + id = obj[1]; + strRepr = obj[2]; + + // if obj[2] is like ' at 0x84760>', + // then display an abbreviated version rather than the gory details + noStrReprRE = /<.* at 0x.*>/; + if (noStrReprRE.test(strRepr)) { + jDomElt.append('' + typeName + ''); + } + else { + strRepr = htmlspecialchars(strRepr); // escape strings! + + // warning: we're overloading tuple elts for custom data types + jDomElt.append('
' + typeName + '
'); + jDomElt.append('
' + strRepr + '
'); + } + } + + compound_objects_already_rendered[oID] = 1; // add to set + } + } + } + + + function renderGlobals() { + // render all global variables IN THE ORDER they were created by the program, + // in order to ensure continuity: + if (curEntry.ordered_globals.length > 0) { + $(vizDiv + " #stack").append('
Global variables
'); + + $(vizDiv + " #stack #globals").append('
'); + + var tbl = $(vizDiv + " #global_table"); + // iterate IN ORDER (it's possible that not all vars are in curEntry.globals) + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + // (use '!==' to do an EXACT match against undefined) + if (val !== undefined) { // might not be defined at this line, which is OKAY! + tbl.append('' + varname + ''); + var curTr = tbl.find('tr:last'); + + if (renderInline(val)) { + renderData(val, curTr.find("td.stackFrameValue"), false /* don't wrap it in a .heapObject div */); + } + else{ + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + // make sure varname doesn't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = 'global__' + varnameToCssID(varname); + curTr.find("td.stackFrameValue").append('
 
'); + + assert(connectionEndpointIDs[varDivID] === undefined); + var heapObjID = 'heap_object_' + getObjectID(val); + connectionEndpointIDs[varDivID] = heapObjID; + } + } + }); + } + } + + function renderStackFrame(frame, ind, is_zombie) { + var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) + + // optional (btw, this isn't a CSS id) + var parentFrameID = null; + if (frame.parent_frame_id_list.length > 0) { + parentFrameID = frame.parent_frame_id_list[0]; + } + + var localVars = frame.encoded_locals + + // the stackFrame div's id is simply its index ("stack") + + var divClass, divID, headerDivID; + if (is_zombie) { + divClass = 'zombieStackFrame'; + divID = "zombie_stack" + ind; + headerDivID = "zombie_stack_header" + ind; + } + else { + divClass = 'stackFrame'; + divID = "stack" + ind; + headerDivID = "stack_header" + ind; + } + + $(vizDiv + " #stack").append('
'); + + var headerLabel = funcName + '()'; + if (frameID) { + headerLabel = 'f' + frameID + ': ' + headerLabel; + } + if (parentFrameID) { + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + $(vizDiv + " #stack #" + divID).append('
' + headerLabel + '
'); + + + if (frame.ordered_varnames.length > 0) { + var tableID = divID + '_table'; + $(vizDiv + " #stack #" + divID).append('
'); + + var tbl = $(vizDiv + " #" + tableID); + + $.each(frame.ordered_varnames, function(xxx, varname) { + var val = localVars[varname]; + + // don't render return values for zombie frames + if (is_zombie && varname == '__return__') { + return; + } + + // special treatment for displaying return value and indicating + // that the function is about to return to its caller + // + // DON'T do this for zombie frames + if (varname == '__return__' && !is_zombie) { + assert(curEntry.event == 'return'); // sanity check + + tbl.append('About to return'); + tbl.append('Return value:'); + } + else { + tbl.append('' + varname + ''); + } + + var curTr = tbl.find('tr:last'); + + if (renderInline(val)) { + renderData(val, curTr.find("td.stackFrameValue"), false /* don't wrap it in a .heapObject div */); + } + else { + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + // make sure varname doesn't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = divID + '__' + varnameToCssID(varname); + curTr.find("td.stackFrameValue").append('
 
'); + + assert(connectionEndpointIDs[varDivID] === undefined); + var heapObjID = 'heap_object_' + getObjectID(val); + connectionEndpointIDs[varDivID] = heapObjID; + } + }); + + } + + } + + + // first render the stack (and global vars) + renderGlobals(); + + // merge zombie_stack_locals and stack_locals into one master + // ordered list using some simple rules for aesthetics + var stack_to_render = []; + + // first push all regular stack entries backwards + if (curEntry.stack_locals) { + for (var i = curEntry.stack_locals.length - 1; i >= 0; i--) { + var entry = curEntry.stack_locals[i]; + entry.is_zombie = false; + entry.is_highlighted = (i == 0); + stack_to_render.push(entry); + } + } + + // zombie stack consists of exited functions that have returned nested functions + // push zombie stack entries at the BEGINNING of stack_to_render, + // EXCEPT put zombie entries BEHIND regular entries that are their parents + if (curEntry.zombie_stack_locals) { + + for (var i = curEntry.zombie_stack_locals.length - 1; i >= 0; i--) { + var entry = curEntry.zombie_stack_locals[i]; + entry.is_zombie = true; + entry.is_highlighted = false; // never highlight zombie entries + + // j should be 0 most of the time, so we're always inserting new + // elements to the front of stack_to_render (which is why we are + // iterating backwards over zombie_stack_locals). + var j = 0; + for (j = 0; j < stack_to_render.length; j++) { + if ($.inArray(stack_to_render[j].frame_id, entry.parent_frame_id_list) >= 0) { + continue; + } + break; + } + + stack_to_render.splice(j, 0, entry); + } + + } + + + $.each(stack_to_render, function(i, e) { + renderStackFrame(e, i, e.is_zombie); + }); + + + // then render the heap + + alreadyRenderedObjectIDs = {}; // set of object IDs that have already been rendered + + // if addToEnd is true, then APPEND to the end of the heap, + // otherwise PREPEND to the front + function renderHeapObjectDEPRECATED(obj, addToEnd) { + var objectID = getObjectID(obj); + + if (alreadyRenderedObjectIDs[objectID] === undefined) { + var toplevelHeapObjID = 'toplevel_heap_object_' + objectID; + var newDiv = '
'; + + if (addToEnd) { + $(vizDiv + ' #heap').append(newDiv); + } + else { + $(vizDiv + ' #heap').prepend(newDiv); + } + renderData(obj, $(vizDiv + ' #heap #' + toplevelHeapObjID), true); + + alreadyRenderedObjectIDs[objectID] = 1; + } + } + + + // if there are multiple aliases to the same object, we want to render + // the one deepest in the stack, so that we can hopefully prevent + // objects from jumping around as functions are called and returned. + // e.g., if a list L appears as a global variable and as a local in a + // function, we want to render L when rendering the global frame. + + // this is straightforward: just go through globals first and then + // each stack frame in order :) + + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + if (!renderInline(val)) { + renderHeapObject(val, true); // APPEND + } + }); + + + $.each(stack_to_render, function(i, frame) { + var localVars = frame.encoded_locals; + + $.each(frame.ordered_varnames, function(i2, varname) { + + // don't render return values for zombie frames + if (frame.is_zombie && varname == '__return__') { + return; + } + + var val = localVars[varname]; + if (!renderInline(val)) { + renderHeapObject(val, true); // APPEND + } + }); + }); + + + // prepend heap header after all the dust settles: + $(vizDiv + ' #heap').prepend('
Objects
'); + + + // finally connect stack variables to heap objects via connectors + for (varID in connectionEndpointIDs) { + var valueID = connectionEndpointIDs[varID]; + jsPlumb.connect({source: varID, target: valueID}); + } + + + function highlight_frame(frameID) { + var allConnections = jsPlumb.getConnections(); + for (var i = 0; i < allConnections.length; i++) { + var c = allConnections[i]; + + // this is VERY VERY fragile code, since it assumes that going up + // five layers of parent() calls will get you from the source end + // of the connector to the enclosing stack frame + var stackFrameDiv = c.source.parent().parent().parent().parent().parent(); + + // if this connector starts in the selected stack frame ... + if (stackFrameDiv.attr('id') == frameID) { + // then HIGHLIGHT IT! + c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); + c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); + c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + + // ... and move it to the VERY FRONT + $(c.canvas).css("z-index", 1000); + } + // for heap->heap connectors + else if (heapConnectionEndpointIDs[c.endpoints[0].elementId] !== undefined) { + // then HIGHLIGHT IT! + c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); // make thinner + c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); + c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + //c.setConnector([ "Bezier", {curviness: 80} ]); // make it more curvy + c.setConnector([ "StateMachine" ]); + c.addOverlay([ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]); + } + else { + // else unhighlight it + c.setPaintStyle({lineWidth:1, strokeStyle: lightGray}); + c.endpoints[0].setPaintStyle({fillStyle: lightGray}); + c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + $(c.canvas).css("z-index", 0); + } + } + + // clear everything, then just activate $(this) one ... + $(".stackFrame").removeClass("highlightedStackFrame"); + $('#' + frameID).addClass("highlightedStackFrame"); + } + + + // highlight the top-most non-zombie stack frame or, if not available, globals + var frame_already_highlighted = false; + $.each(stack_to_render, function(i, e) { + if (e.is_highlighted) { + highlight_frame('stack' + i); + frame_already_highlighted = true; + } + }); + + if (!frame_already_highlighted) { + highlight_frame('globals'); + } + +} + + +// DEPRECATED! +function renderDataStructuresV2(curEntry, vizDiv) { + + // VERY VERY IMPORTANT --- and reset ALL jsPlumb state to prevent + // weird mis-behavior!!! + jsPlumb.reset(); + + + // store a set of IDs of compound objects that have already been + // rendered in this particular call + var compound_objects_already_rendered = {}; + + + $(vizDiv).empty(); // jQuery empty() is better than .html('') + + + // create a tabular layout for stack and heap side-by-side + // TODO: figure out how to do this using CSS in a robust way! + $(vizDiv).html('
'); + + $(vizDiv + " #stack").append('
Frames
'); + + + var nonEmptyGlobals = false; + var curGlobalFields = {}; + if (curEntry.globals != undefined) { + // use plain ole' iteration rather than jQuery $.each() since + // the latter breaks when a variable is named "length" + for (varname in curEntry.globals) { + curGlobalFields[varname] = true; + nonEmptyGlobals = true; + } + } + + // Key: CSS ID of the div element representing the variable + // (or heap object, for heap->heap connections, where the + // format is: 'heap_pointer_src_') + // Value: CSS ID of the div element representing the value rendered in the heap + // (the format is: 'heap_object_') + var connectionEndpointIDs = {}; + var heapConnectionEndpointIDs = {}; // subset of connectionEndpointIDs for heap->heap connections + + var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* + + + // nested helper functions are SUPER-helpful! + + // render the JS data object obj inside of jDomElt, + // which is a jQuery wrapped DOM object + // (obj is in a format encoded by pg_encoder.py on the backend) + // isTopLevel is true only if this is a top-level heap object (rather + // than a nested sub-object) + function renderData(obj, jDomElt, isTopLevel) { + var typ = typeof obj; + var oID = getObjectID(obj); + + if (isPrimitiveType(obj)) { + // only wrap primitive types in heap objects if they are at the + // TOP-LEVEL (otherwise just render them inline within other data + // structures) + if (isTopLevel) { + jDomElt.append('
'); + jDomElt = $('#heap_object_' + oID); + } + + if (obj == null) { + jDomElt.append('None'); + } + else if (typ == "number") { + jDomElt.append('' + obj + ''); + } + else if (typ == "boolean") { + if (obj) { + jDomElt.append('True'); + } + else { + jDomElt.append('False'); + } + } + else if (typ == "string") { + // escape using htmlspecialchars to prevent HTML/script injection + var literalStr = htmlspecialchars(obj); + + // print as a double-quoted string literal + literalStr = literalStr.replace(new RegExp('\"', 'g'), '\\"'); // replace ALL + literalStr = '"' + literalStr + '"'; + + jDomElt.append('' + literalStr + ''); + } + } + else { + assert(typ == "object"); + assert($.isArray(obj)); + + if ((compound_objects_already_rendered[oID] !== undefined) || + (obj[0] == 'CIRCULAR_REF')) { + // render heap->heap connection + if (!isTopLevel) { + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + var srcDivID = 'heap_pointer_src_' + heap_pointer_src_id; + heap_pointer_src_id++; // just make sure each source has a UNIQUE ID + jDomElt.append('
 
'); + + assert(connectionEndpointIDs[srcDivID] === undefined); + connectionEndpointIDs[srcDivID] = 'heap_object_' + oID; + + assert(heapConnectionEndpointIDs[srcDivID] === undefined); + heapConnectionEndpointIDs[srcDivID] = 'heap_object_' + oID; + } + } + else { + // wrap compound objects in a heapObject div so that jsPlumb + // connectors can point to it: + jDomElt.append('
'); + jDomElt = $('#heap_object_' + oID); + + if (obj[0] == 'LIST') { + assert(obj.length >= 2); + if (obj.length == 2) { + jDomElt.append('
empty list
'); + } + else { + jDomElt.append('
list
'); + + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + var headerTr = tbl.find('tr:first'); + var contentTr = tbl.find('tr:last'); + jQuery.each(obj, function(ind, val) { + if (ind < 2) return; // skip 'LIST' tag and ID entry + + // add a new column and then pass in that newly-added column + // as jDomElt to the recursive call to child: + headerTr.append(''); + headerTr.find('td:last').append(ind - 2); + + contentTr.append(''); + + // heuristic for rendering top-level 1-D linked data structures as separate top-level objects + // (and then drawing an arrow to the next element using a regular renderData() call) + if (isTopLevel && structurallyEquivalent(obj, val)) { + var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + + var enclosingTr = jDomElt.parent().parent(); + enclosingTr.append(''); + renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); + } + + renderData(val, contentTr.find('td:last'), false); + }); + } + } + else if (obj[0] == 'TUPLE') { + assert(obj.length >= 2); + if (obj.length == 2) { + jDomElt.append('
empty tuple
'); + } + else { + jDomElt.append('
tuple
'); + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + var headerTr = tbl.find('tr:first'); + var contentTr = tbl.find('tr:last'); + jQuery.each(obj, function(ind, val) { + if (ind < 2) return; // skip 'TUPLE' tag and ID entry + + // add a new column and then pass in that newly-added column + // as jDomElt to the recursive call to child: + headerTr.append(''); + headerTr.find('td:last').append(ind - 2); + + contentTr.append(''); + + // heuristic for rendering top-level 1-D linked data structures as separate top-level objects + // (and then drawing an arrow to the next element using a regular renderData() call) + if (isTopLevel && structurallyEquivalent(obj, val)) { + var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + + var enclosingTr = jDomElt.parent().parent(); + enclosingTr.append(''); + renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); + } + + renderData(val, contentTr.find('td:last'), false); + }); + } + } + else if (obj[0] == 'SET') { + assert(obj.length >= 2); + if (obj.length == 2) { + jDomElt.append('
empty set
'); + } + else { + jDomElt.append('
set
'); + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + // create an R x C matrix: + var numElts = obj.length - 2; + // gives roughly a 3x5 rectangular ratio, square is too, err, + // 'square' and boring + var numRows = Math.round(Math.sqrt(numElts)); + if (numRows > 3) { + numRows -= 1; + } + + var numCols = Math.round(numElts / numRows); + // round up if not a perfect multiple: + if (numElts % numRows) { + numCols += 1; + } + + jQuery.each(obj, function(ind, val) { + if (ind < 2) return; // skip 'SET' tag and ID entry + + if (((ind - 2) % numCols) == 0) { + tbl.append(''); + } + + var curTr = tbl.find('tr:last'); + curTr.append(''); + renderData(val, curTr.find('td:last'), false); + }); + } + } + else if (obj[0] == 'DICT') { + assert(obj.length >= 2); + if (obj.length == 2) { + jDomElt.append('
empty dict
'); + } + else { + jDomElt.append('
dict
'); + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + $.each(obj, function(ind, kvPair) { + if (ind < 2) return; // skip 'DICT' tag and ID entry + + tbl.append(''); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + var key = kvPair[0]; + var val = kvPair[1]; + + renderData(key, keyTd, false); + + // heuristic for rendering top-level 1-D linked data structures as separate top-level objects + // (and then drawing an arrow to the next element using a regular renderData() call) + if (isTopLevel && structurallyEquivalent(obj, val)) { + var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + + var enclosingTr = jDomElt.parent().parent(); + enclosingTr.append(''); + renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); + } + + renderData(val, valTd, false); + }); + } + } + else if (obj[0] == 'INSTANCE') { + assert(obj.length >= 3); + jDomElt.append('
' + obj[1] + ' instance
'); + + if (obj.length > 3) { + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + $.each(obj, function(ind, kvPair) { + if (ind < 3) return; // skip type tag, class name, and ID entry + + tbl.append(''); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + // the keys should always be strings, so render them directly (and without quotes): + assert(typeof kvPair[0] == "string"); + var attrnameStr = htmlspecialchars(kvPair[0]); + keyTd.append('' + attrnameStr + ''); + + // values can be arbitrary objects, so recurse: + var val = kvPair[1]; + + // heuristic for rendering top-level 1-D linked data structures as separate top-level objects + // (and then drawing an arrow to the next element using a regular renderData() call) + if (isTopLevel && structurallyEquivalent(obj, val)) { + var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + + var enclosingTr = jDomElt.parent().parent(); + enclosingTr.append(''); + renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); + } + + renderData(val, valTd, false); + }); + } + } + else if (obj[0] == 'CLASS') { + assert(obj.length >= 4); + var superclassStr = ''; + if (obj[3].length > 0) { + superclassStr += ('[extends ' + obj[3].join(',') + '] '); + } + + jDomElt.append('
' + obj[1] + ' class ' + superclassStr + '
'); + + if (obj.length > 4) { + jDomElt.append('
'); + var tbl = jDomElt.children('table'); + $.each(obj, function(ind, kvPair) { + if (ind < 4) return; // skip type tag, class name, ID, and superclasses entries + + tbl.append(''); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + // the keys should always be strings, so render them directly (and without quotes): + assert(typeof kvPair[0] == "string"); + var attrnameStr = htmlspecialchars(kvPair[0]); + keyTd.append('' + attrnameStr + ''); + + // values can be arbitrary objects, so recurse: + renderData(kvPair[1], valTd, false); + }); + } + } + else if (obj[0] == 'FUNCTION') { + assert(obj.length == 4); + id = obj[1]; + funcName = htmlspecialchars(obj[2]); // for displaying names like '' + parentFrameID = obj[3]; // optional + + if (parentFrameID) { + jDomElt.append('
function ' + funcName + ' [parent=f'+ parentFrameID + ']
'); + } + else { + jDomElt.append('
function ' + funcName + '
'); + } + + } + else { + // render custom data type + assert(obj.length == 3); + typeName = obj[0]; + id = obj[1]; + strRepr = obj[2]; + + // if obj[2] is like ' at 0x84760>', + // then display an abbreviated version rather than the gory details + noStrReprRE = /<.* at 0x.*>/; + if (noStrReprRE.test(strRepr)) { + jDomElt.append('' + typeName + ''); + } + else { + strRepr = htmlspecialchars(strRepr); // escape strings! + + // warning: we're overloading tuple elts for custom data types + jDomElt.append('
' + typeName + '
'); + jDomElt.append('
' + strRepr + '
'); + } + } + + compound_objects_already_rendered[oID] = 1; // add to set + } + } + } + + + function renderGlobals() { + // render all global variables IN THE ORDER they were created by the program, + // in order to ensure continuity: + if (curEntry.ordered_globals.length > 0) { + $(vizDiv + " #stack").append('
Global variables
'); + + $(vizDiv + " #stack #globals").append('
'); + + var tbl = $(vizDiv + " #global_table"); + // iterate IN ORDER (it's possible that not all vars are in curEntry.globals) + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + // (use '!==' to do an EXACT match against undefined) + if (val !== undefined) { // might not be defined at this line, which is OKAY! + tbl.append('' + varname + ''); + var curTr = tbl.find('tr:last'); + + if (renderInline(val)) { + renderData(val, curTr.find("td.stackFrameValue"), false /* don't wrap it in a .heapObject div */); + } + else{ + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + // make sure varname doesn't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = 'global__' + varnameToCssID(varname); + curTr.find("td.stackFrameValue").append('
 
'); + + assert(connectionEndpointIDs[varDivID] === undefined); + var heapObjID = 'heap_object_' + getObjectID(val); + connectionEndpointIDs[varDivID] = heapObjID; + } + } + }); + } + } + + function renderStackFrame(frame, ind, is_zombie) { + var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) + + // optional (btw, this isn't a CSS id) + var parentFrameID = null; + if (frame.parent_frame_id_list.length > 0) { + parentFrameID = frame.parent_frame_id_list[0]; + } + + var localVars = frame.encoded_locals + + // the stackFrame div's id is simply its index ("stack") + + var divClass, divID, headerDivID; + if (is_zombie) { + divClass = 'zombieStackFrame'; + divID = "zombie_stack" + ind; + headerDivID = "zombie_stack_header" + ind; + } + else { + divClass = 'stackFrame'; + divID = "stack" + ind; + headerDivID = "stack_header" + ind; + } + + $(vizDiv + " #stack").append('
'); + + var headerLabel = funcName + '()'; + if (frameID) { + headerLabel = 'f' + frameID + ': ' + headerLabel; + } + if (parentFrameID) { + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + $(vizDiv + " #stack #" + divID).append('
' + headerLabel + '
'); + + + if (frame.ordered_varnames.length > 0) { + var tableID = divID + '_table'; + $(vizDiv + " #stack #" + divID).append('
'); + + var tbl = $(vizDiv + " #" + tableID); + + $.each(frame.ordered_varnames, function(xxx, varname) { + var val = localVars[varname]; + + // don't render return values for zombie frames + if (is_zombie && varname == '__return__') { + return; + } + + // special treatment for displaying return value and indicating + // that the function is about to return to its caller + // + // DON'T do this for zombie frames + if (varname == '__return__' && !is_zombie) { + assert(curEntry.event == 'return'); // sanity check + + tbl.append('About to return'); + tbl.append('Return value:'); + } + else { + tbl.append('' + varname + ''); + } + + var curTr = tbl.find('tr:last'); + + if (renderInline(val)) { + renderData(val, curTr.find("td.stackFrameValue"), false /* don't wrap it in a .heapObject div */); + } + else { + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + // make sure varname doesn't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = divID + '__' + varnameToCssID(varname); + curTr.find("td.stackFrameValue").append('
 
'); + + assert(connectionEndpointIDs[varDivID] === undefined); + var heapObjID = 'heap_object_' + getObjectID(val); + connectionEndpointIDs[varDivID] = heapObjID; + } + }); + + } + + } + + + // first render the stack (and global vars) + renderGlobals(); + + // merge zombie_stack_locals and stack_locals into one master + // ordered list using some simple rules for aesthetics + var stack_to_render = []; + + // first push all regular stack entries backwards + if (curEntry.stack_locals) { + for (var i = curEntry.stack_locals.length - 1; i >= 0; i--) { + var entry = curEntry.stack_locals[i]; + entry.is_zombie = false; + entry.is_highlighted = (i == 0); + stack_to_render.push(entry); + } + } + + // zombie stack consists of exited functions that have returned nested functions + // push zombie stack entries at the BEGINNING of stack_to_render, + // EXCEPT put zombie entries BEHIND regular entries that are their parents + if (curEntry.zombie_stack_locals) { + + for (var i = curEntry.zombie_stack_locals.length - 1; i >= 0; i--) { + var entry = curEntry.zombie_stack_locals[i]; + entry.is_zombie = true; + entry.is_highlighted = false; // never highlight zombie entries + + // j should be 0 most of the time, so we're always inserting new + // elements to the front of stack_to_render (which is why we are + // iterating backwards over zombie_stack_locals). + var j = 0; + for (j = 0; j < stack_to_render.length; j++) { + if ($.inArray(stack_to_render[j].frame_id, entry.parent_frame_id_list) >= 0) { + continue; + } + break; + } + + stack_to_render.splice(j, 0, entry); + } + + } + + + $.each(stack_to_render, function(i, e) { + renderStackFrame(e, i, e.is_zombie); + }); + + + // then render the heap + + alreadyRenderedObjectIDs = {}; // set of object IDs that have already been rendered + + // if addToEnd is true, then APPEND to the end of the heap, + // otherwise PREPEND to the front + function renderHeapObject(obj, addToEnd) { + var objectID = getObjectID(obj); + + if (alreadyRenderedObjectIDs[objectID] === undefined) { + var toplevelHeapObjID = 'toplevel_heap_object_' + objectID; + var newDiv = '
'; + + if (addToEnd) { + $(vizDiv + ' #heap').append(newDiv); + } + else { + $(vizDiv + ' #heap').prepend(newDiv); + } + renderData(obj, $(vizDiv + ' #heap #' + toplevelHeapObjID), true); + + alreadyRenderedObjectIDs[objectID] = 1; + } + } + + + // if there are multiple aliases to the same object, we want to render + // the one deepest in the stack, so that we can hopefully prevent + // objects from jumping around as functions are called and returned. + // e.g., if a list L appears as a global variable and as a local in a + // function, we want to render L when rendering the global frame. + + // this is straightforward: just go through globals first and then + // each stack frame in order :) + + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + if (!renderInline(val)) { + renderHeapObject(val, true); // APPEND + } + }); + + + $.each(stack_to_render, function(i, frame) { + var localVars = frame.encoded_locals; + + $.each(frame.ordered_varnames, function(i2, varname) { + + // don't render return values for zombie frames + if (frame.is_zombie && varname == '__return__') { + return; + } + + var val = localVars[varname]; + if (!renderInline(val)) { + renderHeapObject(val, true); // APPEND + } + }); + }); + + + // prepend heap header after all the dust settles: + $(vizDiv + ' #heap').prepend('
Objects
'); + + + // finally connect stack variables to heap objects via connectors + for (varID in connectionEndpointIDs) { + var valueID = connectionEndpointIDs[varID]; + jsPlumb.connect({source: varID, target: valueID}); + } + + + function highlight_frame(frameID) { + var allConnections = jsPlumb.getConnections(); + for (var i = 0; i < allConnections.length; i++) { + var c = allConnections[i]; + + // this is VERY VERY fragile code, since it assumes that going up + // five layers of parent() calls will get you from the source end + // of the connector to the enclosing stack frame + var stackFrameDiv = c.source.parent().parent().parent().parent().parent(); + + // if this connector starts in the selected stack frame ... + if (stackFrameDiv.attr('id') == frameID) { + // then HIGHLIGHT IT! + c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); + c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); + c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + + // ... and move it to the VERY FRONT + $(c.canvas).css("z-index", 1000); + } + // for heap->heap connectors + else if (heapConnectionEndpointIDs[c.endpoints[0].elementId] !== undefined) { + // then HIGHLIGHT IT! + c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); // make thinner + c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); + c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + //c.setConnector([ "Bezier", {curviness: 80} ]); // make it more curvy + c.setConnector([ "StateMachine" ]); + c.addOverlay([ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]); + } + else { + // else unhighlight it + c.setPaintStyle({lineWidth:1, strokeStyle: lightGray}); + c.endpoints[0].setPaintStyle({fillStyle: lightGray}); + c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + $(c.canvas).css("z-index", 0); + } + } + + // clear everything, then just activate $(this) one ... + $(".stackFrame").removeClass("highlightedStackFrame"); + $('#' + frameID).addClass("highlightedStackFrame"); + } + + + // highlight the top-most non-zombie stack frame or, if not available, globals + var frame_already_highlighted = false; + $.each(stack_to_render, function(i, e) { + if (e.is_highlighted) { + highlight_frame('stack' + i); + frame_already_highlighted = true; + } + }); + + if (!frame_already_highlighted) { + highlight_frame('globals'); + } + +} + +function isPrimitiveType(obj) { + var typ = typeof obj; + return ((obj == null) || (typ != "object")); +} + +function getRefID(obj) { + assert(obj[0] == 'REF'); + return obj[1]; +} + +/* +function renderInline(obj) { + return isPrimitiveType(obj) && (typeof obj != 'string'); +} +*/ + +// Key is a primitive value (e.g., 'hello', 3.14159, true) +// Value is a unique primitive ID (starting with 'p' to disambiguate +// from regular object IDs) +var primitive_IDs = {null: 'p0', true: 'p1', false: 'p2'}; +var cur_pID = 3; + +function getObjectID(obj) { + if (isPrimitiveType(obj)) { + // primitive objects get IDs starting with 'p' ... + // this renders aliases as 'interned' for simplicity + var pID = primitive_IDs[obj]; + if (pID !== undefined) { + return pID; + } + else { + var new_pID = 'p' + cur_pID; + primitive_IDs[obj] = new_pID; + cur_pID++; + return new_pID; + } + return obj; + } + else { + assert($.isArray(obj)); + + if ((obj[0] == 'INSTANCE') || (obj[0] == 'CLASS')) { + return obj[2]; + } + else { + return obj[1]; + } + } +} + + + +String.prototype.rtrim = function() { + return this.replace(/\s*$/g, ""); +} + + +function renderPyCodeOutput(codeStr) { + clearSliderBreakpoints(); // start fresh! + + var lines = codeStr.rtrim().split('\n'); + + // reset it! + codeOutputLines = []; + $.each(lines, function(i, cod) { + var n = {}; + n.text = cod; + n.lineNumber = i + 1; + n.executionPoints = []; + n.backgroundColor = null; + n.breakpointHere = false; + + + $.each(curTrace, function(i, elt) { + if (elt.line == n.lineNumber) { + n.executionPoints.push(i); + } + }); + + + // if there is a comment containing 'breakpoint' and this line was actually executed, + // then set a breakpoint on this line + var breakpointInComment = false; + toks = cod.split('#'); + for (var j = 1 /* start at index 1, not 0 */; j < toks.length; j++) { + if (toks[j].indexOf('breakpoint') != -1) { + breakpointInComment = true; + } + } + + if (breakpointInComment && n.executionPoints.length > 0) { + n.breakpointHere = true; + addToBreakpoints(n.executionPoints); + } + + codeOutputLines.push(n); + }); + + + $("#pyCodeOutputDiv").empty(); // jQuery empty() is better than .html('') + + + // maps codeOutputLines to both table columns + d3.select('#pyCodeOutputDiv') + .append('table') + .attr('id', 'pyCodeOutput') + .selectAll('tr') + .data(codeOutputLines) + .enter().append('tr') + .selectAll('td') + .data(function(e, i){return [e, e];}) // bind an alias of the element to both table columns + .enter().append('td') + .attr('class', function(d, i) {return (i == 0) ? 'lineNo' : 'cod';}) + .style('cursor', function(d, i) {return 'pointer'}) + .html(function(d, i) { + if (i == 0) { + return d.lineNumber; + } + else { + return htmlspecialchars(d.text); + } + }) + .on('mouseover', function() { + setBreakpoint(this); + }) + .on('mouseout', function() { + var breakpointHere = d3.select(this).datum().breakpointHere; + + if (!breakpointHere) { + unsetBreakpoint(this); + } + }) + .on('mousedown', function() { + // don't do anything if exePts is empty + // (i.e., this line was never executed) + var exePts = d3.select(this).datum().executionPoints; + if (!exePts || exePts.length == 0) { + return; + } + + // toggle breakpoint + d3.select(this).datum().breakpointHere = !d3.select(this).datum().breakpointHere; + + var breakpointHere = d3.select(this).datum().breakpointHere; + if (breakpointHere) { + setBreakpoint(this); + } + else { + unsetBreakpoint(this); + } + }); + + renderSliderBreakpoints(); // renders breakpoints written in as code comments +} + + + +var breakpointLines = {}; // set of lines to set as breakpoints +var sortedBreakpointsList = []; // sorted and synced with breakpointLines + + +function _getSortedBreakpointsList() { + var ret = []; + for (var k in breakpointLines) { + ret.push(Number(k)); // these should be NUMBERS, not strings + } + ret.sort(function(x,y){return x-y}); // WTF, javascript sort is lexicographic by default! + return ret; +} + +function addToBreakpoints(executionPoints) { + $.each(executionPoints, function(i, e) { + breakpointLines[e] = 1; + }); + + sortedBreakpointsList = _getSortedBreakpointsList(); +} + +function removeFromBreakpoints(executionPoints) { + $.each(executionPoints, function(i, e) { + delete breakpointLines[e]; + }); + + sortedBreakpointsList = _getSortedBreakpointsList(); +} + +// find the previous/next breakpoint to c or return -1 if it doesn't exist +function findPrevBreakpoint(c) { + if (sortedBreakpointsList.length == 0) { + return -1; + } + else { + for (var i = 1; i < sortedBreakpointsList.length; i++) { + var prev = sortedBreakpointsList[i-1]; + var cur = sortedBreakpointsList[i]; + + if (c <= prev) { + return -1; + } + + if (cur >= c) { + return prev; + } + } + + // final edge case: + var lastElt = sortedBreakpointsList[sortedBreakpointsList.length - 1]; + return (lastElt < c) ? lastElt : -1; + } +} + +function findNextBreakpoint(c) { + if (sortedBreakpointsList.length == 0) { + return -1; + } + else { + for (var i = 0; i < sortedBreakpointsList.length - 1; i++) { + var cur = sortedBreakpointsList[i]; + var next = sortedBreakpointsList[i+1]; + + if (c < cur) { + return cur; + } + + if (cur <= c && c < next) { // subtle + return next; + } + } + + // final edge case: + var lastElt = sortedBreakpointsList[sortedBreakpointsList.length - 1]; + return (lastElt > c) ? lastElt : -1; + } +} + + +function setBreakpoint(t) { + var exePts = d3.select(t).datum().executionPoints; + + // don't do anything if exePts is empty + // (i.e., this line was never executed) + if (!exePts || exePts.length == 0) { + return; + } + + addToBreakpoints(exePts); + + d3.select(t.parentNode).select('td.lineNo').style('color', breakpointColor); + d3.select(t.parentNode).select('td.lineNo').style('font-weight', 'bold'); + + renderSliderBreakpoints(); +} + +function unsetBreakpoint(t) { + var exePts = d3.select(t).datum().executionPoints; + + // don't do anything if exePts is empty + // (i.e., this line was never executed) + if (!exePts || exePts.length == 0) { + return; + } + + removeFromBreakpoints(exePts); + + + var lineNo = d3.select(t).datum().lineNumber; + + if (visitedLinesSet[lineNo]) { + d3.select(t.parentNode).select('td.lineNo').style('color', visitedLineColor); + d3.select(t.parentNode).select('td.lineNo').style('font-weight', 'bold'); + } + else { + d3.select(t.parentNode).select('td.lineNo').style('color', ''); + d3.select(t.parentNode).select('td.lineNo').style('font-weight', ''); + } + + renderSliderBreakpoints(); +} + + +// depends on sortedBreakpointsList global +function renderSliderBreakpoints() { + $("#executionSliderFooter").empty(); // jQuery empty() is better than .html('') + + // I originally didn't want to delete and re-create this overlay every time, + // but if I don't do so, there are weird flickering artifacts with clearing + // the SVG container; so it's best to just delete and re-create the container each time + var sliderOverlay = d3.select('#executionSliderFooter') + .append('svg') + .attr('id', 'sliderOverlay') + .attr('width', $('#executionSlider').width()) + .attr('height', 12); + + var xrange = d3.scale.linear() + .domain([0, curTrace.length - 1]) + .range([0, $('#executionSlider').width()]); + + sliderOverlay.selectAll('rect') + .data(sortedBreakpointsList) + .enter().append('rect') + .attr('x', function(d, i) { + // make the edge cases look decent + if (d == 0) { + return 0; + } + else { + return xrange(d) - 3; + } + }) + .attr('y', 0) + .attr('width', 2) + .attr('height', 12); +} + + +function clearSliderBreakpoints() { + breakpointLines = {}; + sortedBreakpointsList = []; + renderSliderBreakpoints(); +} + + + +// initialization function that should be called when the page is loaded +function eduPythonCommonInit() { + // set some sensible jsPlumb defaults + jsPlumb.Defaults.Endpoint = ["Dot", {radius:3}]; + //jsPlumb.Defaults.Endpoint = ["Rectangle", {width:3, height:3}]; + jsPlumb.Defaults.EndpointStyle = {fillStyle: lightGray}; + + jsPlumb.Defaults.Anchors = ["RightMiddle", "LeftMiddle"]; // for aesthetics! + + jsPlumb.Defaults.PaintStyle = {lineWidth:1, strokeStyle: lightGray}; + + // bezier curve style: + //jsPlumb.Defaults.Connector = [ "Bezier", { curviness:15 }]; /* too much 'curviness' causes lines to run together */ + //jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 14, width:10, foldback:0.55, location:0.35 }]] + + // state machine curve style: + jsPlumb.Defaults.Connector = [ "StateMachine" ]; + jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]]; + + + jsPlumb.Defaults.EndpointHoverStyle = {fillStyle: pinkish}; + jsPlumb.Defaults.HoverPaintStyle = {lineWidth:2, strokeStyle: pinkish}; + + + // set keyboard event listeners ... + $(document).keydown(function(k) { + // ONLY capture keys if we're in 'visualize code' mode: + if (appMode == 'visualize' && !keyStuckDown) { + if (k.keyCode == 37) { // left arrow + if (curInstr > 0) { + // if there is a prev breakpoint, then jump to it ... + if (sortedBreakpointsList.length > 0) { + var prevBreakpoint = findPrevBreakpoint(curInstr); + if (prevBreakpoint != -1) { + curInstr = prevBreakpoint; + } + } + else { + curInstr -= 1; + } + updateOutput(); + } + + k.preventDefault(); // don't horizontally scroll the display + + keyStuckDown = true; + } + else if (k.keyCode == 39) { // right arrow + if (curInstr < curTrace.length - 1) { + // if there is a next breakpoint, then jump to it ... + if (sortedBreakpointsList.length > 0) { + var nextBreakpoint = findNextBreakpoint(curInstr); + if (nextBreakpoint != -1) { + curInstr = nextBreakpoint; + } + } + else { + curInstr += 1; + } + updateOutput(); + } + + k.preventDefault(); // don't horizontally scroll the display + + keyStuckDown = true; + } + } + }); + + $(document).keyup(function(k) { + keyStuckDown = false; + }); + + + // redraw everything on window resize so that connectors are in the + // right place + // TODO: can be SLOW on older browsers!!! + $(window).resize(function() { + if (appMode == 'visualize') { + updateOutput(); + } + }); + + $("#classicModeCheckbox").click(function() { + if (appMode == 'visualize') { + updateOutput(); + } + }); + + + // log a generic AJAX error handler + $(document).ajaxError(function() { + alert("Uh oh, the server returned an error, boo :( Please reload the page and try executing a different Python script."); + }); + +} + diff --git a/PyTutorGAE/js/jquery-1.3.2.min.js b/PyTutorGAE/js/jquery-1.3.2.min.js new file mode 100644 index 000000000..b1ae21d8b --- /dev/null +++ b/PyTutorGAE/js/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("",""]||!O.indexOf("",""]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"","
"]||!O.indexOf("",""]||(!O.indexOf("",""]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="
";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/PyTutorGAE/js/jquery-ui-1.8.21.custom.min.js b/PyTutorGAE/js/jquery-ui-1.8.21.custom.min.js new file mode 100644 index 000000000..e060fdcf4 --- /dev/null +++ b/PyTutorGAE/js/jquery-ui-1.8.21.custom.min.js @@ -0,0 +1,21 @@ +/*! jQuery UI - v1.8.21 - 2012-06-05 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.core.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.21",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.position.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?a.isFunction(b)?this.each(function(c){a(this).offset(b.call(this,c,a(this).offset()))}):this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);;/*! jQuery UI - v1.8.21 - 2012-06-05 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.slider.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("
").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;ic&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i),j===!1?!1:(this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0,!0))},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c1){this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);return}if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;return Math.abs(c)*2>=b&&(d+=c>0?b:-b),parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.21"})})(jQuery);; \ No newline at end of file diff --git a/PyTutorGAE/js/jquery.ba-bbq.min.js b/PyTutorGAE/js/jquery.ba-bbq.min.js new file mode 100644 index 000000000..bcbf24834 --- /dev/null +++ b/PyTutorGAE/js/jquery.ba-bbq.min.js @@ -0,0 +1,18 @@ +/* + * jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010 + * http://benalman.com/projects/jquery-bbq-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this); \ No newline at end of file diff --git a/PyTutorGAE/js/jquery.jsPlumb-1.3.10-all-min.js b/PyTutorGAE/js/jquery.jsPlumb-1.3.10-all-min.js new file mode 100644 index 000000000..3171abe1b --- /dev/null +++ b/PyTutorGAE/js/jquery.jsPlumb-1.3.10-all-min.js @@ -0,0 +1 @@ +jsPlumbUtil={isArray:function(b){return Object.prototype.toString.call(b)==="[object Array]"},isString:function(a){return typeof a==="string"},isObject:function(a){return Object.prototype.toString.call(a)==="[object Object]"},convertStyle:function(b,a){if("transparent"===b){return b}var g=b,f=function(h){return h.length==1?"0"+h:h},c=function(h){return f(Number(h).toString(16))},d=/(rgb[a]?\()(.*)(\))/;if(b.match(d)){var e=b.match(d)[2].split(",");g="#"+c(e[0])+c(e[1])+c(e[2]);if(!a&&e.length==4){g=g+c(e[3])}}return g},gradient:function(b,a){b=jsPlumbUtil.isArray(b)?b:[b.x,b.y];a=jsPlumbUtil.isArray(a)?a:[a.x,a.y];return(a[1]-b[1])/(a[0]-b[0])},normal:function(b,a){return -1/jsPlumbUtil.gradient(b,a)},lineLength:function(b,a){b=jsPlumbUtil.isArray(b)?b:[b.x,b.y];a=jsPlumbUtil.isArray(a)?a:[a.x,a.y];return Math.sqrt(Math.pow(a[1]-b[1],2)+Math.pow(a[0]-b[0],2))},segment:function(b,a){b=jsPlumbUtil.isArray(b)?b:[b.x,b.y];a=jsPlumbUtil.isArray(a)?a:[a.x,a.y];if(a[0]>b[0]){return(a[1]>b[1])?2:1}else{return(a[1]>b[1])?3:4}},intersects:function(f,e){var c=f.x,a=f.x+f.w,k=f.y,h=f.y+f.h,d=e.x,b=e.x+e.w,i=e.y,g=e.y+e.h;return((c<=d&&d<=a)&&(k<=i&&i<=h))||((c<=b&&b<=a)&&(k<=i&&i<=h))||((c<=d&&d<=a)&&(k<=g&&g<=h))||((c<=b&&d<=a)&&(k<=g&&g<=h))||((d<=c&&c<=b)&&(i<=k&&k<=g))||((d<=a&&a<=b)&&(i<=k&&k<=g))||((d<=c&&c<=b)&&(i<=h&&h<=g))||((d<=a&&c<=b)&&(i<=h&&h<=g))},segmentMultipliers:[null,[1,-1],[1,1],[-1,1],[-1,-1]],inverseSegmentMultipliers:[null,[-1,-1],[-1,1],[1,1],[1,-1]],pointOnLine:function(a,e,b){var d=jsPlumbUtil.gradient(a,e),i=jsPlumbUtil.segment(a,e),h=b>0?jsPlumbUtil.segmentMultipliers[i]:jsPlumbUtil.inverseSegmentMultipliers[i],c=Math.atan(d),f=Math.abs(b*Math.sin(c))*h[1],g=Math.abs(b*Math.cos(c))*h[0];return{x:a.x+g,y:a.y+f}},perpendicularLineTo:function(c,d,e){var b=jsPlumbUtil.gradient(c,d),f=Math.atan(-1/b),g=e/2*Math.sin(f),a=e/2*Math.cos(f);return[{x:d.x+a,y:d.y+g},{x:d.x-a,y:d.y-g}]},findWithFunction:function(b,d){if(b){for(var c=0;c-1){c.splice(b,1)}return b!=-1},remove:function(b,c){var a=jsPlumbUtil.indexOf(b,c);if(a>-1){b.splice(a,1)}return a!=-1},addWithFunction:function(c,b,a){if(jsPlumbUtil.findWithFunction(c,a)==-1){c.push(b)}},addToList:function(d,b,c){var a=d[b];if(a==null){a=[],d[b]=a}a.push(c);return a},EventGenerator:function(){var c={},b=this;var a=["ready"];this.bind=function(d,e){jsPlumbUtil.addToList(c,d,e);return b};this.fire=function(g,h,d){if(c[g]){for(var f=0;f';var K=L.firstChild;K.style.behavior="url(#default#VML)";b.vml=K?typeof K.adj=="object":true;L.parentNode.removeChild(L)}return b.vml};var i=jsPlumbUtil.findWithFunction,J=jsPlumbUtil.indexOf,D=jsPlumbUtil.removeWithFunction,m=jsPlumbUtil.remove,u=jsPlumbUtil.addWithFunction,l=jsPlumbUtil.addToList,n=jsPlumbUtil.isArray,C=jsPlumbUtil.isString,w=jsPlumbUtil.isObject;if(!window.console){window.console={time:function(){},timeEnd:function(){},group:function(){},groupEnd:function(){},log:function(){}}}var x=null,d=function(K,L){return p.CurrentLibrary.getAttribute(F(K),L)},f=function(L,M,K){p.CurrentLibrary.setAttribute(F(L),M,K)},B=function(L,K){p.CurrentLibrary.addClass(F(L),K)},k=function(L,K){return p.CurrentLibrary.hasClass(F(L),K)},o=function(L,K){p.CurrentLibrary.removeClass(F(L),K)},F=function(K){return p.CurrentLibrary.getElementObject(K)},t=function(K){return p.CurrentLibrary.getOffset(F(K))},a=function(K){return p.CurrentLibrary.getSize(F(K))},q=jsPlumbUtil.log,I=jsPlumbUtil.group,h=jsPlumbUtil.groupEnd,H=jsPlumbUtil.time,v=jsPlumbUtil.timeEnd,r=function(){return""+(new Date()).getTime()},E=function(Z){var U=this,aa=arguments,R=false,O=Z.parameters||{},M=U.idPrefix,W=M+(new Date()).getTime(),V=null,ab=null;U._jsPlumb=Z._jsPlumb;U.getId=function(){return W};U.tooltip=Z.tooltip;U.hoverClass=Z.hoverClass||U._jsPlumb.Defaults.HoverClass||p.Defaults.HoverClass;jsPlumbUtil.EventGenerator.apply(this);this.clone=function(){var ac=new Object();U.constructor.apply(ac,aa);return ac};this.getParameter=function(ac){return O[ac]},this.getParameters=function(){return O},this.setParameter=function(ac,ad){O[ac]=ad},this.setParameters=function(ac){O=ac},this.overlayPlacements=[];var N=Z.beforeDetach;this.isDetachAllowed=function(ac){var ad=U._jsPlumb.checkCondition("beforeDetach",ac);if(N){try{ad=N(ac)}catch(ae){q("jsPlumb: beforeDetach callback failed",ae)}}return ad};var Q=Z.beforeDrop;this.isDropAllowed=function(ah,ae,af,ac,ad){var ag=U._jsPlumb.checkCondition("beforeDrop",{sourceId:ah,targetId:ae,scope:af,connection:ac,dropEndpoint:ad});if(Q){try{ag=Q({sourceId:ah,targetId:ae,scope:af,connection:ac,dropEndpoint:ad})}catch(ai){q("jsPlumb: beforeDrop callback failed",ai)}}return ag};var X=function(){if(V&&ab){var ac={};p.extend(ac,V);p.extend(ac,ab);delete U.hoverPaintStyle;if(ac.gradient&&V.fillStyle){delete ac.gradient}ab=ac}};this.setPaintStyle=function(ac,ad){V=ac;U.paintStyleInUse=V;X();if(!ad){U.repaint()}};this.getPaintStyle=function(){return V};this.setHoverPaintStyle=function(ac,ad){ab=ac;X();if(!ad){U.repaint()}};this.getHoverPaintStyle=function(){return ab};this.setHover=function(ac,ae,ad){if(!U._jsPlumb.currentlyDragging&&!U._jsPlumb.isHoverSuspended()){R=ac;if(U.hoverClass!=null&&U.canvas!=null){if(ac){L.addClass(U.canvas,U.hoverClass)}else{L.removeClass(U.canvas,U.hoverClass)}}if(ab!=null){U.paintStyleInUse=ac?ab:V;ad=ad||r();U.repaint({timestamp:ad,recalc:false})}if(U.getAttachedElements&&!ae){Y(ac,r(),U)}}};this.isHover=function(){return R};var L=p.CurrentLibrary,K=["click","dblclick","mouseenter","mouseout","mousemove","mousedown","mouseup","contextmenu"],T={mouseout:"mouseexit"},P=function(ae,af,ad){var ac=T[ad]||ad;L.bind(ae,ad,function(ag){af.fire(ac,af,ag)})},S=function(ae,ad){var ac=T[ad]||ad;L.unbind(ae,ad)};this.attachListeners=function(ad,ae){for(var ac=0;ac1){for(var ac=0;ac=0?U.overlays[V]:null};this.getOverlays=function(){return U.overlays};this.hideOverlay=function(W){var V=U.getOverlay(W);if(V){V.hide()}};this.hideOverlays=function(){for(var V=0;V0){try{for(var bw=0;bw0?J(bJ,bI)!=-1:true},bA=(!bw&&bD.length>1)?{}:[],bG=function(bJ,bK){if(!bw&&bD.length>1){var bI=bA[bJ];if(bI==null){bI=[];bA[bJ]=bI}bI.push(bK)}else{bA.push(bK)}};for(var bz in aY){if(bx(bD,bz)){for(var by=0;by=4)?[bA[2],bA[3]]:[0,0],offsets:(bA.length==6)?[bA[4],bA[5]]:[0,0],elementId:bx};by=new aa(bz);by.clone=function(){return new aa(bz)}}}}}if(!by.id){by.id="anchor_"+ak()}return by};this.makeAnchors=function(by,bw,bv){var bz=[];for(var bx=0;bx0&&bP>=ap[bI]){console.log("target element "+bI+" is full.");return false}bn.currentlyDragging=false;var bZ=F(bD.getDragObject(arguments)),bO=d(bZ,"dragId"),bX=d(bZ,"originalScope"),bU=bf[bO],bM=bU.endpoints[0],bL=bw.endpoint?p.extend({},bw.endpoint):{};bM.anchor.locked=false;if(bX){bD.setDragScope(bZ,bX)}var bS=proxyComponent.isDropAllowed(bU.sourceId,K(bK),bU.scope,bU,null);if(bU.endpointsToDeleteOnDetach){if(bM===bU.endpointsToDeleteOnDetach[0]){bU.endpointsToDeleteOnDetach[0]=null}else{if(bM===bU.endpointsToDeleteOnDetach[1]){bU.endpointsToDeleteOnDetach[1]=null}}}if(bU.suspendedEndpoint){bU.targetId=bU.suspendedEndpoint.elementId;bU.target=bD.getElementObject(bU.suspendedEndpoint.elementId);bU.endpoints[1]=bU.suspendedEndpoint}if(bS){bM.detach(bU,false,true,false);var bY=aH[bI]||bn.addEndpoint(bK,bw);if(bw.uniqueEndpoint){aH[bI]=bY}bY._makeTargetCreator=true;if(bY.anchor.positionFinder!=null){var bV=bD.getUIPosition(arguments),bR=bD.getOffset(bK),bW=bD.getSize(bK),bQ=bY.anchor.positionFinder(bV,bR,bW,bY.anchor.constructorParams);bY.anchor.x=bQ[0];bY.anchor.y=bQ[1]}var bT=bn.connect({source:bM,target:bY,scope:bX,previousConnection:bU,container:bU.parent,deleteEndpointsOnDetach:bA,doNotFireConnectionEvent:bM.endpointWillMoveAfterConnection});if(bU.endpoints[1]._makeTargetCreator&&bU.endpoints[1].connections.length<2){bn.deleteEndpoint(bU.endpoints[1])}if(bA){bT.endpointsToDeleteOnDetach=[bM,bY]}bT.repaint()}else{if(bU.suspendedEndpoint){if(bM.isReattach){bU.setHover(false);bU.floatingAnchorIndex=null;bU.suspendedEndpoint.addConnection(bU);bn.repaint(bM.elementId)}else{bM.detach(bU,false,true,true,bN)}}}};var bJ=bD.dragEvents.drop;bH.scope=bH.scope||bE;bH[bJ]=am(bH[bJ],bG);bD.initDroppable(bK,bH,true)};by=aI(by);var bC=by.length&&by.constructor!=String?by:[by];for(var bB=0;bB0?bF[0]:null,bA=bF.length>0?0:-1,bE=this,bz=function(bI,bG,bM,bL,bH){var bK=bL[0]+(bI.x*bH[0]),bJ=bL[1]+(bI.y*bH[1]);return Math.sqrt(Math.pow(bG-bK,2)+Math.pow(bM-bJ,2))},bv=bw||function(bQ,bH,bI,bJ,bG){var bL=bI[0]+(bJ[0]/2),bK=bI[1]+(bJ[1]/2);var bN=-1,bP=Infinity;for(var bM=0;bM=by.left)||(bB.left<=by.right&&bB.right>=by.right)||(bB.left<=by.left&&bB.right>=by.right)||(by.left<=bB.left&&by.right>=bB.right)),bG=((bB.top<=by.top&&bB.bottom>=by.top)||(bB.top<=by.bottom&&bB.bottom>=by.bottom)||(bB.top<=by.top&&bB.bottom>=by.bottom)||(by.top<=bB.top&&by.bottom>=bB.bottom));if(!(bA||bG)){var bD=null,bx=false,bv=false,bC=null;if(by.left>bB.left&&by.top>bB.top){bD=["right","top"]}else{if(by.left>bB.left&&bB.top>by.top){bD=["top","left"]}else{if(by.leftbB.top){bD=["left","top"]}}}}return{orientation:T.DIAGONAL,a:bD,theta:bw,theta2:bz}}else{if(bA){return{orientation:T.HORIZONTAL,a:bB.topbv[0]?1:-1},Z=function(bv){return function(bx,bw){var by=true;if(bv){if(bx[0][0]bw[0][1]}}else{if(bx[0][0]>bw[0][0]){by=true}else{by=bx[0][1]>bw[0][1]}}return by===false?-1:1}},O=function(bw,bv){var by=bw[0][0]<0?-Math.PI-bw[0][0]:Math.PI-bw[0][0],bx=bv[0][0]<0?-Math.PI-bv[0][0]:Math.PI-bv[0][0];if(by>bx){return 1}else{return bw[0][1]>bv[0][1]?1:-1}},a0={top:a8,right:Z(true),bottom:Z(true),left:O},ao=function(bv,bw){return bv.sort(bw)},al=function(bw,bv){var by=ae[bw],bz=ah[bw],bx=function(bG,bN,bC,bF,bL,bK,bB){if(bF.length>0){var bJ=ao(bF,a0[bG]),bH=bG==="right"||bG==="top",bA=a2(bG,bN,bC,bJ,bL,bK,bH);var bO=function(bR,bQ){var bP=bo([bQ[0],bQ[1]],bR.canvas);ai[bR.id]=[bP[0],bP[1],bQ[2],bQ[3]];aJ[bR.id]=bB};for(var bD=0;bD0){var bF=bA.getOffset(bG);bw[bD][bI]={id:bI,offset:{left:bF.left-bJ.left,top:bF.top-bJ.top}}}}}};bC(bz)};this.endpointAdded=function(bB){var bF=p.CurrentLibrary,bI=document.body,bz=bn.getId(bB),bH=bF.getDOMElement(bB),bA=bH.parentNode,bD=bA==bI;bv[bz]=bv[bz]?bv[bz]+1:1;while(bA!=bI){var bE=bn.getId(bA);if(by[bE]){var bK=-1,bG=bF.getElementObject(bA),bC=bF.getOffset(bG);if(bw[bE][bz]==null){var bJ=p.CurrentLibrary.getOffset(bB);bw[bE][bz]={id:bz,offset:{left:bJ.left-bC.left,top:bJ.top-bC.top}}}break}bA=bA.parentNode}};this.endpointDeleted=function(bA){if(bv[bA.elementId]){bv[bA.elementId]--;if(bv[bA.elementId]<=0){for(var bz in bw){delete bw[bz][bA.elementId]}}}};this.getElementsForDraggable=function(bz){return bw[bz]};this.reset=function(){by={};bx=[];bw={};bv={}}};bn.dragManager=new aV();var ax=function(bN){var bG=this,bx=true;bG.idPrefix="_jsplumb_c_";bG.defaultLabelLocation=0.5;bG.defaultOverlayKeys=["Overlays","ConnectionOverlays"];this.parent=bN.parent;z.apply(this,arguments);this.isVisible=function(){return bx};this.setVisible=function(bP){bx=bP;bG[bP?"showOverlays":"hideOverlays"]();if(bG.connector&&bG.connector.canvas){bG.connector.canvas.style.display=bP?"block":"none"}};this.source=F(bN.source);this.target=F(bN.target);if(bN.sourceEndpoint){this.source=bN.sourceEndpoint.endpointWillMoveTo||bN.sourceEndpoint.getElement()}if(bN.targetEndpoint){this.target=bN.targetEndpoint.getElement()}bG.previousConnection=bN.previousConnection;var bD=bN.cost;bG.getCost=function(){return bD};bG.setCost=function(bP){bD=bP};var bB=bN.bidirectional===false?false:true;bG.isBidirectional=function(){return bB};this.sourceId=d(this.source,"id");this.targetId=d(this.target,"id");this.getAttachedElements=function(){return bG.endpoints};this.scope=bN.scope;this.endpoints=[];this.endpointStyles=[];var bM=function(bQ,bP){if(bQ){return bn.makeAnchor(bQ,bP,bn)}},bK=function(bP,bV,bQ,bS,bT,bR,bU){if(bP){bG.endpoints[bV]=bP;bP.addConnection(bG)}else{if(!bQ.endpoints){bQ.endpoints=[null,null]}var b1=bQ.endpoints[bV]||bQ.endpoint||bn.Defaults.Endpoints[bV]||p.Defaults.Endpoints[bV]||bn.Defaults.Endpoint||p.Defaults.Endpoint;if(!bQ.endpointStyles){bQ.endpointStyles=[null,null]}if(!bQ.endpointHoverStyles){bQ.endpointHoverStyles=[null,null]}var bZ=bQ.endpointStyles[bV]||bQ.endpointStyle||bn.Defaults.EndpointStyles[bV]||p.Defaults.EndpointStyles[bV]||bn.Defaults.EndpointStyle||p.Defaults.EndpointStyle;if(bZ.fillStyle==null&&bR!=null){bZ.fillStyle=bR.strokeStyle}if(bZ.outlineColor==null&&bR!=null){bZ.outlineColor=bR.outlineColor}if(bZ.outlineWidth==null&&bR!=null){bZ.outlineWidth=bR.outlineWidth}var bY=bQ.endpointHoverStyles[bV]||bQ.endpointHoverStyle||bn.Defaults.EndpointHoverStyles[bV]||p.Defaults.EndpointHoverStyles[bV]||bn.Defaults.EndpointHoverStyle||p.Defaults.EndpointHoverStyle;if(bU!=null){if(bY==null){bY={}}if(bY.fillStyle==null){bY.fillStyle=bU.strokeStyle}}var bX=bQ.anchors?bQ.anchors[bV]:bQ.anchor?bQ.anchor:bM(bn.Defaults.Anchors[bV],bT)||bM(p.Defaults.Anchors[bV],bT)||bM(bn.Defaults.Anchor,bT)||bM(p.Defaults.Anchor,bT),b0=bQ.uuids?bQ.uuids[bV]:null,bW=aF({paintStyle:bZ,hoverPaintStyle:bY,endpoint:b1,connections:[bG],uuid:b0,anchor:bX,source:bS,scope:bQ.scope,container:bQ.container,reattach:bQ.reattach,detachable:bQ.detachable});bG.endpoints[bV]=bW;if(bQ.drawEndpoints===false){bW.setVisible(false,true,true)}return bW}};var bI=bK(bN.sourceEndpoint,0,bN,bG.source,bG.sourceId,bN.paintStyle,bN.hoverPaintStyle);if(bI){V(aT,this.sourceId,bI)}var by=((bG.sourceId==bG.targetId)&&bN.targetEndpoint==null)?bI:bN.targetEndpoint,bH=bK(by,1,bN,bG.target,bG.targetId,bN.paintStyle,bN.hoverPaintStyle);if(bH){V(aT,this.targetId,bH)}if(!this.scope){this.scope=this.endpoints[0].scope}if(bN.deleteEndpointsOnDetach){bG.endpointsToDeleteOnDetach=[bI,bH]}var bw=bn.Defaults.ConnectionsDetachable;if(bN.detachable===false){bw=false}if(bG.endpoints[0].connectionsDetachable===false){bw=false}if(bG.endpoints[1].connectionsDetachable===false){bw=false}if(bD==null){bD=bG.endpoints[0].getConnectionCost()}if(bN.bidirectional==null){bB=bG.endpoints[0].areConnectionsBidirectional()}this.isDetachable=function(){return bw===true};this.setDetachable=function(bP){bw=bP===true};var bO=p.extend({},this.endpoints[0].getParameters());p.extend(bO,this.endpoints[1].getParameters());p.extend(bO,bG.getParameters());bG.setParameters(bO);var bE=bG.setHover;bG.setHover=function(bP){bG.connector.setHover.apply(bG.connector,arguments);bE.apply(bG,arguments)};var bL=function(bP){if(x==null){bG.setHover(bP,false)}};this.setConnector=function(bP,bQ){if(bG.connector!=null){aX(bG.connector.getDisplayElements(),bG.parent)}var bR={_jsPlumb:bG._jsPlumb,parent:bN.parent,cssClass:bN.cssClass,container:bN.container,tooltip:bG.tooltip};if(C(bP)){this.connector=new p.Connectors[X][bP](bR)}else{if(n(bP)){this.connector=new p.Connectors[X][bP[0]](p.extend(bP[1],bR))}}bG.canvas=bG.connector.canvas;G(bG.connector,bG,bL);if(!bQ){bG.repaint()}};bG.setConnector(this.endpoints[0].connector||this.endpoints[1].connector||bN.connector||bn.Defaults.Connector||p.Defaults.Connector,true);this.setPaintStyle(this.endpoints[0].connectorStyle||this.endpoints[1].connectorStyle||bN.paintStyle||bn.Defaults.PaintStyle||p.Defaults.PaintStyle,true);this.setHoverPaintStyle(this.endpoints[0].connectorHoverStyle||this.endpoints[1].connectorHoverStyle||bN.hoverPaintStyle||bn.Defaults.HoverPaintStyle||p.Defaults.HoverPaintStyle,true);this.paintStyleInUse=this.getPaintStyle();this.moveParent=function(bS){var bR=p.CurrentLibrary,bQ=bR.getParent(bG.connector.canvas);if(bG.connector.bgCanvas){bR.removeElement(bG.connector.bgCanvas,bQ);bR.appendElement(bG.connector.bgCanvas,bS)}bR.removeElement(bG.connector.canvas,bQ);bR.appendElement(bG.connector.canvas,bS);for(var bP=0;bP0){bO.connections[0].setHover(b2,false)}else{bO.setHover(b2)}};G(bO.endpoint,bO,b1);this.setPaintStyle(b0.paintStyle||b0.style||bn.Defaults.EndpointStyle||p.Defaults.EndpointStyle,true);this.setHoverPaintStyle(b0.hoverPaintStyle||bn.Defaults.EndpointHoverStyle||p.Defaults.EndpointHoverStyle,true);this.paintStyleInUse=this.getPaintStyle();var bJ=this.getPaintStyle();this.connectorStyle=b0.connectorStyle;this.connectorHoverStyle=b0.connectorHoverStyle;this.connectorOverlays=b0.connectorOverlays;this.connector=b0.connector;this.connectorTooltip=b0.connectorTooltip;this.isSource=b0.isSource||false;this.isTarget=b0.isTarget||false;var bU=b0.maxConnections||bn.Defaults.MaxConnections;this.getAttachedElements=function(){return bO.connections};this.canvas=this.endpoint.canvas;this.connections=b0.connections||[];this.scope=b0.scope||Q;this.timestamp=null;bO.isReattach=b0.reattach||false;bO.connectionsDetachable=bn.Defaults.ConnectionsDetachable;if(b0.connectionsDetachable===false||b0.detachable===false){bO.connectionsDetachable=false}var bI=b0.dragAllowedWhenFull||true;this.computeAnchor=function(b2){return bO.anchor.compute(b2)};this.addConnection=function(b2){bO.connections.push(b2)};this.detach=function(b3,b8,b4,cb,b2){var ca=i(bO.connections,function(cd){return cd.id==b3.id}),b9=false;cb=(cb!==false);if(ca>=0){if(b4||b3._forceDetach||b3.isDetachable()||b3.isDetachAllowed(b3)){var cc=b3.endpoints[0]==bO?b3.endpoints[1]:b3.endpoints[0];if(b4||b3._forceDetach||(bO.isDetachAllowed(b3))){bO.connections.splice(ca,1);if(!b8){cc.detach(b3,true,b4);if(b3.endpointsToDeleteOnDetach){for(var b7=0;b70){bO.detach(bO.connections[0],false,true,b3,b2)}};this.detachFrom=function(b5,b4,b2){var b6=[];for(var b3=0;b3=0){bO.connections.splice(b2,1)}};this.getElement=function(){return bN};this.setElement=function(b5,b2){var b7=K(b5);D(aT[bO.elementId],function(b8){return b8.id==bO.id});bN=F(b5);bF=K(bN);bO.elementId=bF;var b6=aw({source:b7,container:b2}),b4=bz.getParent(bO.canvas);bz.removeElement(bO.canvas,b4);bz.appendElement(bO.canvas,b6);for(var b3=0;b30){var ce=bK(b5.elementWithPrecedence),cg=ce.endpoints[0]==bO?1:0,b7=cg==0?ce.sourceId:ce.targetId,cd=ah[b7],cf=ae[b7];b4.txy=[cd.left,cd.top];b4.twh=cf;b4.tElement=ce.endpoints[cg]}b8=bO.anchor.compute(b4)}var cc=bL.compute(b8,bO.anchor.getOrientation(bO),bO.paintStyleInUse,b6||bO.paintStyleInUse);bL.paint(cc,bO.paintStyleInUse,bO.anchor);bO.timestamp=cb;for(var b9=0;b90?t:m+t:t*m;return jsPlumbUtil.pointOnLine({x:h,y:g},{x:d,y:c},s)}}};this.gradientAtPoint=function(s){return e};this.pointAlongPathFrom=function(s,w,v){var u=r.pointOnPath(s,v),t=s==1?{x:h+((d-h)*10),y:g+((g-c)*10)}:{x:d,y:c};return jsPlumbUtil.pointOnLine(u,t,w)}};jsPlumb.Connectors.Bezier=function(v){var p=this;v=v||{};this.majorAnchor=v.curviness||150;this.minorAnchor=10;var t=null;this.type="Bezier";this._findControlPoint=function(H,w,C,x,A,F,y){var E=F.getOrientation(x),G=y.getOrientation(A),B=E[0]!=G[0]||E[1]==G[1],z=[],I=p.majorAnchor,D=p.minorAnchor;if(!B){if(E[0]==0){z.push(w[0]u){u=C}if(F<0){s+=F;var H=Math.abs(F);u+=H;q[0]+=H;f+=H;o+=H;l[0]+=H}var P=Math.min(e,n),N=Math.min(q[1],l[1]),B=Math.min(P,N),G=Math.max(e,n),E=Math.max(q[1],l[1]),y=Math.max(G,E);if(y>d){d=y}if(B<0){r+=B;var D=Math.abs(B);d+=D;q[1]+=D;e+=D;n+=D;l[1]+=D}if(L&&u0?0:1,w)}return w};this.pointOnPath=function(w,y){var x=c();w=m(x,w,y);return jsBezier.pointOnCurve(x,w)};this.gradientAtPoint=function(w,y){var x=c();w=m(x,w,y);return jsBezier.gradientAtPoint(x,w)};this.pointAlongPathFrom=function(w,z,y){var x=c();w=m(x,w,y);return jsBezier.pointAlongCurveFrom(x,w,z)}};jsPlumb.Connectors.Flowchart=function(v){this.type="Flowchart";v=v||{};var n=this,c=v.stub||v.minStubLength||30,f=jsPlumbUtil.isArray(c)?c[0]:c,k=jsPlumbUtil.isArray(c)?c[1]:c,p=v.gap||0,q=[],i=0,d=[],m=[],r=[],o,l,u=-Infinity,s=-Infinity,w=Infinity,t=Infinity,x=function(z,y,D,C){var B=0;for(var A=0;A0?A/i:(i+A)/i}var y=d.length-1,z=1;for(var B=0;B=A){y=B;z=(A-d[B][0])/m[B];break}}return{segment:q[y],proportion:z,index:y}};this.compute=function(W,ak,z,Q,av,K,U,P,ap,am){q=[];d=[];i=0;m=[];u=s=-Infinity;w=t=Infinity;o=ak[0]au?0:1,ae=[1,0][ac];N=[];aw=[];N[ac]=W[ac]>ak[ac]?-1:1;aw[ac]=W[ac]>ak[ac]?1:-1;N[ae]=0;aw[ae]=0}if(al(f+k),X=Math.abs(H-aq)>(f+k),ah=Z+((L-Z)/2),af=Y+((J-Y)/2),O=((N[0]*aw[0])+(N[1]*aw[1])),ab=O==-1,ad=O==0,C=O==1;aj-=E;ai-=D;r=[aj,ai,al,au,I,H,ar,aq];var ao=[];var S=N[0]==0?"y":"x",M=ab?"opposite":C?"orthogonal":"perpendicular",F=jsPlumbUtil.segment([I,H],[ar,aq]),ag=N[S=="x"?0:1]==-1,R={x:[null,4,3,2,1],y:[null,2,1,4,3]};if(ag){F=R[S][F]}g(Z,Y,I,H,ar,aq);var T=function(az,ay,y,ax){return az+(ay*((1-y)*ax)+Math.max(f,k))},G={oppositex:function(){if(z.elementId==Q.elementId){var y=Y+((1-av.y)*ap.height)+Math.max(f,k);return[[Z,y],[L,y]]}else{if(V&&(F==1||F==2)){return[[ah,H],[ah,aq]]}else{return[[Z,af],[L,af]]}}},orthogonalx:function(){if(F==1||F==2){return[[L,Y]]}else{return[[Z,J]]}},perpendicularx:function(){var y=(aq+H)/2;if((F==1&&aw[1]==1)||(F==2&&aw[1]==-1)){if(Math.abs(ar-I)>Math.max(f,k)){return[[L,Y]]}else{return[[Z,Y],[Z,y],[L,y]]}}else{if((F==3&&aw[1]==-1)||(F==4&&aw[1]==1)){return[[Z,y],[L,y]]}else{if((F==3&&aw[1]==1)||(F==4&&aw[1]==-1)){return[[Z,J]]}else{if((F==1&&aw[1]==-1)||(F==2&&aw[1]==1)){if(Math.abs(ar-I)>Math.max(f,k)){return[[ah,Y],[ah,J]]}else{return[[Z,J]]}}}}}},oppositey:function(){if(z.elementId==Q.elementId){var y=Z+((1-av.x)*ap.width)+Math.max(f,k);return[[y,Y],[y,J]]}else{if(X&&(F==2||F==3)){return[[I,af],[ar,af]]}else{return[[ah,Y],[ah,J]]}}},orthogonaly:function(){if(F==2||F==3){return[[Z,J]]}else{return[[L,Y]]}},perpendiculary:function(){var y=(ar+I)/2;if((F==2&&aw[0]==-1)||(F==3&&aw[0]==1)){if(Math.abs(ar-I)>Math.max(f,k)){return[[Z,J]]}else{return[[Z,af],[L,af]]}}else{if((F==1&&aw[0]==-1)||(F==4&&aw[0]==1)){var y=(ar+I)/2;return[[y,Y],[y,J]]}else{if((F==1&&aw[0]==1)||(F==4&&aw[0]==-1)){return[[L,Y]]}else{if((F==2&&aw[0]==1)||(F==3&&aw[0]==-1)){if(Math.abs(aq-H)>Math.max(f,k)){return[[Z,af],[L,af]]}else{return[[L,Y]]}}}}}}};var an=G[M+S]();if(an){for(var at=0;atr[3]){r[3]=s+(U*2)}if(u>r[2]){r[2]=u+(U*2)}return r};this.pointOnPath=function(y,z){return n.pointAlongPathFrom(y,0,z)};this.gradientAtPoint=function(y,z){return q[e(y,z)["index"]][4]};this.pointAlongPathFrom=function(F,y,E){var G=e(F,E),C=G.segment,z=G.proportion,B=q[G.index][5],A=q[G.index][4];var D={x:A==Infinity?C[2]:C[2]>C[0]?C[0]+((1-z)*B)-y:C[2]+(z*B)+y,y:A==0?C[3]:C[3]>C[1]?C[1]+((1-z)*B)-y:C[3]+(z*B)+y,segmentInfo:G};return D}};jsPlumb.Endpoints.Dot=function(d){this.type="Dot";var c=this;d=d||{};this.radius=d.radius||10;this.defaultOffset=0.5*this.radius;this.defaultInnerRadius=this.radius/3;this.compute=function(i,f,l,h){var g=l.radius||c.radius,e=i[0]-g,k=i[1]-g;return[e,k,g*2,g*2,g]}};jsPlumb.Endpoints.Rectangle=function(d){this.type="Rectangle";var c=this;d=d||{};this.width=d.width||20;this.height=d.height||20;this.compute=function(k,g,m,i){var h=m.width||c.width,f=m.height||c.height,e=k[0]-(h/2),l=k[1]-(f/2);return[e,l,h,f]}};var a=function(e){jsPlumb.DOMElementComponent.apply(this,arguments);var c=this;var d=[];this.getDisplayElements=function(){return d};this.appendDisplayElement=function(f){d.push(f)}};jsPlumb.Endpoints.Image=function(g){this.type="Image";a.apply(this,arguments);var l=this,f=false,e=g.width,d=g.height,i=null,c=g.endpoint;this.img=new Image();l.ready=false;this.img.onload=function(){l.ready=true;e=e||l.img.width;d=d||l.img.height;if(i){i(l)}};c.setImage=function(m,o){var n=m.constructor==String?m:m.src;i=o;l.img.src=m;if(l.canvas!=null){l.canvas.setAttribute("src",m)}};c.setImage(g.src||g.url,g.onload);this.compute=function(o,m,p,n){l.anchorPoint=o;if(l.ready){return[o[0]-e/2,o[1]-d/2,e,d]}else{return[0,0,0,0]}};l.canvas=document.createElement("img"),f=false;l.canvas.style.margin=0;l.canvas.style.padding=0;l.canvas.style.outline=0;l.canvas.style.position="absolute";var h=g.cssClass?" "+g.cssClass:"";l.canvas.className=jsPlumb.endpointClass+h;if(e){l.canvas.setAttribute("width",e)}if(d){l.canvas.setAttribute("height",d)}jsPlumb.appendElement(l.canvas,g.parent);l.attachListeners(l.canvas,l);var k=function(p,o,n){if(!f){l.canvas.setAttribute("src",l.img.src);l.appendDisplayElement(l.canvas);f=true}var m=l.anchorPoint[0]-(e/2),q=l.anchorPoint[1]-(d/2);jsPlumb.sizeCanvas(l.canvas,m,q,e,d)};this.paint=function(o,n,m){if(l.ready){k(o,n,m)}else{window.setTimeout(function(){l.paint(o,n,m)},200)}}};jsPlumb.Endpoints.Blank=function(d){var c=this;this.type="Blank";a.apply(this,arguments);this.compute=function(g,e,h,f){return[g[0],g[1],10,0]};c.canvas=document.createElement("div");c.canvas.style.display="block";c.canvas.style.width="1px";c.canvas.style.height="1px";c.canvas.style.background="transparent";c.canvas.style.position="absolute";c.canvas.className=c._jsPlumb.endpointClass;jsPlumb.appendElement(c.canvas,d.parent);this.paint=function(g,f,e){jsPlumb.sizeCanvas(c.canvas,g[0],g[1],g[2],g[3])}};jsPlumb.Endpoints.Triangle=function(c){this.type="Triangle";c=c||{};c.width=c.width||55;c.height=c.height||55;this.width=c.width;this.height=c.height;this.compute=function(i,f,l,h){var g=l.width||self.width,e=l.height||self.height,d=i[0]-(g/2),k=i[1]-(e/2);return[d,k,g,e]}};var b=function(e){var d=true,c=this;this.isAppendedAtTopLevel=true;this.component=e.component;this.loc=e.location==null?0.5:e.location;this.endpointLoc=e.endpointLocation==null?[0.5,0.5]:e.endpointLocation;this.setVisible=function(f){d=f;c.component.repaint()};this.isVisible=function(){return d};this.hide=function(){c.setVisible(false)};this.show=function(){c.setVisible(true)};this.incrementLocation=function(f){c.loc+=f;c.component.repaint()};this.setLocation=function(f){c.loc=f;c.component.repaint()};this.getLocation=function(){return c.loc}};jsPlumb.Overlays.Arrow=function(g){this.type="Arrow";b.apply(this,arguments);this.isAppendedAtTopLevel=false;g=g||{};var d=this;this.length=g.length||20;this.width=g.width||20;this.id=g.id;var f=(g.direction||1)<0?-1:1,e=g.paintStyle||{lineWidth:1},c=g.foldback||0.623;this.computeMaxSize=function(){return d.width*1.5};this.cleanup=function(){};this.draw=function(k,z,u){var o,v,h,p,n;if(k.pointAlongPathFrom){if(jsPlumbUtil.isString(d.loc)||d.loc>1||d.loc<0){var i=parseInt(d.loc);o=k.pointAlongPathFrom(i,f*d.length/2,true),v=k.pointOnPath(i,true),h=jsPlumbUtil.pointOnLine(o,v,d.length)}else{if(d.loc==1){o=k.pointOnPath(d.loc);v=k.pointAlongPathFrom(d.loc,-1);h=jsPlumbUtil.pointOnLine(o,v,d.length)}else{if(d.loc==0){h=k.pointOnPath(d.loc);v=k.pointAlongPathFrom(d.loc,1);o=jsPlumbUtil.pointOnLine(h,v,d.length)}else{o=k.pointAlongPathFrom(d.loc,f*d.length/2),v=k.pointOnPath(d.loc),h=jsPlumbUtil.pointOnLine(o,v,d.length)}}}p=jsPlumbUtil.perpendicularLineTo(o,h,d.width);n=jsPlumbUtil.pointOnLine(o,h,c*d.length);var y=Math.min(o.x,p[0].x,p[1].x),s=Math.max(o.x,p[0].x,p[1].x),x=Math.min(o.y,p[0].y,p[1].y),r=Math.max(o.y,p[0].y,p[1].y);var q={hxy:o,tail:p,cxy:n},t=e.strokeStyle||z.strokeStyle,w=e.fillStyle||z.strokeStyle,m=e.lineWidth||z.lineWidth;d.paint(k,q,m,t,w,u);return[y,s,x,r]}else{return[0,0,0,0]}}};jsPlumb.Overlays.PlainArrow=function(d){d=d||{};var c=jsPlumb.extend(d,{foldback:1});jsPlumb.Overlays.Arrow.call(this,c);this.type="PlainArrow"};jsPlumb.Overlays.Diamond=function(e){e=e||{};var c=e.length||40,d=jsPlumb.extend(e,{length:c/2,foldback:2});jsPlumb.Overlays.Arrow.call(this,d);this.type="Diamond"};jsPlumb.Overlays.Label=function(i){this.type="Label";jsPlumb.DOMElementComponent.apply(this,arguments);b.apply(this,arguments);this.labelStyle=i.labelStyle||jsPlumb.Defaults.LabelStyle;this.id=i.id;this.cachedDimensions=null;var e=i.label||"",c=this,f=false,k=document.createElement("div"),g=null;k.style.position="absolute";var d=i._jsPlumb.overlayClass+" "+(c.labelStyle.cssClass?c.labelStyle.cssClass:i.cssClass?i.cssClass:"");k.className=d;jsPlumb.appendElement(k,i.component.parent);jsPlumb.getId(k);c.attachListeners(k,c);c.canvas=k;var h=c.setVisible;c.setVisible=function(l){h(l);k.style.display=l?"block":"none"};this.getElement=function(){return k};this.cleanup=function(){if(k!=null){jsPlumb.CurrentLibrary.removeElement(k)}};this.setLabel=function(m){e=m;g=null;c.component.repaint()};this.getLabel=function(){return e};this.paint=function(l,n,m){if(!f){l.appendDisplayElement(k);c.attachListeners(k,l);f=true}k.style.left=(m[0]+n.minx)+"px";k.style.top=(m[1]+n.miny)+"px"};this.getTextDimensions=function(){if(typeof e=="function"){var l=e(c);k.innerHTML=l.replace(/\r\n/g,"
")}else{if(g==null){g=e;k.innerHTML=g.replace(/\r\n/g,"
")}}var n=jsPlumb.CurrentLibrary.getElementObject(k),m=jsPlumb.CurrentLibrary.getSize(n);return{width:m[0],height:m[1]}};this.computeMaxSize=function(l){var m=c.getTextDimensions(l);return m.width?Math.max(m.width,m.height)*1.5:0};this.draw=function(m,n,o){var s=c.getTextDimensions(m);if(s.width!=null){var p={x:0,y:0};if(m.pointOnPath){var q=c.loc,r=false;if(jsPlumbUtil.isString(c.loc)||c.loc<0||c.loc>1){q=parseInt(c.loc);r=true}p=m.pointOnPath(q,r)}else{var l=c.loc.constructor==Array?c.loc:c.endpointLoc;p={x:l[0]*o[2],y:l[1]*o[3]}}minx=p.x-(s.width/2),miny=p.y-(s.height/2);c.paint(m,{minx:minx,miny:miny,td:s,cxy:p},o);return[minx,minx+s.width,miny,miny+s.height]}else{return[0,0,0,0]}};this.reattachListeners=function(l){if(k){c.reattachListenersForElement(k,c,l)}}};jsPlumb.Overlays.GuideLines=function(){var c=this;c.length=50;c.lineWidth=5;this.type="GuideLines";b.apply(this,arguments);jsPlumb.jsPlumbUIComponent.apply(this,arguments);this.draw=function(e,l,k){var i=e.pointAlongPathFrom(c.loc,c.length/2),h=e.pointOnPath(c.loc),g=jsPlumbUtil.pointOnLine(i,h,c.length),f=jsPlumbUtil.perpendicularLineTo(i,g,40),d=jsPlumbUtil.perpendicularLineTo(g,i,20);c.paint(e,[i,g,f,d],c.lineWidth,"red",null,k);return[Math.min(i.x,g.x),Math.min(i.y,g.y),Math.max(i.x,g.x),Math.max(i.y,g.y)]};this.computeMaxSize=function(){return 50};this.cleanup=function(){}}})();(function(){var c=function(e,g,d,f){this.m=(f-g)/(d-e);this.b=-1*((this.m*e)-g);this.rectIntersect=function(q,p,s,o){var n=[];var k=(p-this.b)/this.m;if(k>=q&&k<=(q+s)){n.push([k,(this.m*k)+this.b])}var t=(this.m*(q+s))+this.b;if(t>=p&&t<=(p+o)){n.push([(t-this.b)/this.m,t])}var k=((p+o)-this.b)/this.m;if(k>=q&&k<=(q+s)){n.push([k,(this.m*k)+this.b])}var t=(this.m*q)+this.b;if(t>=p&&t<=(p+o)){n.push([(t-this.b)/this.m,t])}if(n.length==2){var m=(n[0][0]+n[1][0])/2,l=(n[0][1]+n[1][1])/2;n.push([m,l]);var i=m<=q+(s/2)?-1:1,r=l<=p+(o/2)?-1:1;n.push([i,r]);return n}return null}},a=function(e,g,d,f){if(e<=d&&f<=g){return 1}else{if(e<=d&&g<=f){return 2}else{if(d<=e&&f>=g){return 3}}}return 4},b=function(g,f,i,e,h,m,l,d,k){if(d<=k){return[g,f]}if(i==1){if(e[3]<=0&&h[3]>=1){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]>=1&&h[2]<=0){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(-1*m),f+(-1*l)]}}}else{if(i==2){if(e[3]>=1&&h[3]<=0){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]>=1&&h[2]<=0){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(1*m),f+(-1*l)]}}}else{if(i==3){if(e[3]>=1&&h[3]<=0){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]<=0&&h[2]>=1){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(-1*m),f+(-1*l)]}}}else{if(i==4){if(e[3]<=0&&h[3]>=1){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]<=0&&h[2]>=1){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(1*m),f+(-1*l)]}}}}}}};jsPlumb.Connectors.StateMachine=function(l){var u=this,n=null,o,m,g,e,p=[],d=l.curviness||10,k=l.margin||5,q=l.proximityLimit||80,f=l.orientation&&l.orientation=="clockwise",i=l.loopbackRadius||25,h=false,t=l.showLoopback!==false;this.type="StateMachine";l=l||{};this.compute=function(ad,H,W,I,ac,z,v,U){var Q=Math.abs(ad[0]-H[0]),Y=Math.abs(ad[1]-H[1]),S=0.45*Q,ab=0.45*Y;Q*=1.9;Y*=1.9;v=v||1;var O=Math.min(ad[0],H[0])-S,M=Math.min(ad[1],H[1])-ab;if(!t||(W.elementId!=I.elementId)){h=false;o=ad[0]0?0:1,v)}return v};this.pointOnPath=function(x,B){if(h){if(B){var y=Math.PI*2*i;x=x/y}if(x>0&&x<1){x=1-x}var z=(x*2*Math.PI)+(Math.PI/2),w=n[4]+(n[6]*Math.cos(z)),v=n[5]+(n[6]*Math.sin(z));return{x:w,y:v}}else{var A=r();x=s(A,x,B);return jsBezier.pointOnCurve(A,x)}};this.gradientAtPoint=function(v,y){if(h){if(y){var w=Math.PI*2*i;v=v/w}return Math.atan(v*2*Math.PI)}else{var x=r();v=s(x,v,y);return jsBezier.gradientAtPoint(x,v)}};this.pointAlongPathFrom=function(D,v,C){if(h){if(C){var B=Math.PI*2*i;D=D/B}if(D>0&&D<1){D=1-D}var B=2*Math.PI*n[6],w=v/B*2*Math.PI,z=(D*2*Math.PI)-w+(Math.PI/2),y=n[4]+(n[6]*Math.cos(z)),x=n[5]+(n[6]*Math.sin(z));return{x:y,y:x}}else{var A=r();D=s(A,D,C);return jsBezier.pointAlongCurveFrom(A,D,v)}}};jsPlumb.Connectors.canvas.StateMachine=function(f){f=f||{};var d=this,g=f.drawGuideline||true,e=f.avoidSelector;jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.CanvasConnector.apply(this,arguments);this._paint=function(l){if(l.length==10){d.ctx.beginPath();d.ctx.moveTo(l[4],l[5]);d.ctx.bezierCurveTo(l[8],l[9],l[8],l[9],l[6],l[7]);d.ctx.stroke()}else{d.ctx.save();d.ctx.beginPath();var k=0,i=2*Math.PI,h=l[7];d.ctx.arc(l[4],l[5],l[6],0,i,h);d.ctx.stroke();d.ctx.closePath();d.ctx.restore()}};this.createGradient=function(i,h){return h.createLinearGradient(i[4],i[5],i[6],i[7])}};jsPlumb.Connectors.svg.StateMachine=function(){var d=this;jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.SvgConnector.apply(this,arguments);this.getPath=function(e){if(e.length==10){return"M "+e[4]+" "+e[5]+" C "+e[8]+" "+e[9]+" "+e[8]+" "+e[9]+" "+e[6]+" "+e[7]}else{return"M"+(e[8]+4)+" "+e[9]+" A "+e[6]+" "+e[6]+" 0 1,0 "+(e[8]-4)+" "+e[9]}}};jsPlumb.Connectors.vml.StateMachine=function(){jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.VmlConnector.apply(this,arguments);var d=jsPlumb.vml.convertValue;this.getPath=function(k){if(k.length==10){return"m"+d(k[4])+","+d(k[5])+" c"+d(k[8])+","+d(k[9])+","+d(k[8])+","+d(k[9])+","+d(k[6])+","+d(k[7])+" e"}else{var h=d(k[8]-k[6]),g=d(k[9]-(2*k[6])),f=h+d(2*k[6]),e=g+d(2*k[6]),l=h+","+g+","+f+","+e;var i="ar "+l+","+d(k[8])+","+d(k[9])+","+d(k[8])+","+d(k[9])+" e";return i}}}})();(function(){var h={"stroke-linejoin":"joinstyle",joinstyle:"joinstyle",endcap:"endcap",miterlimit:"miterlimit"},c=null;if(document.createStyleSheet&&document.namespaces){var m=[".jsplumb_vml","jsplumb\\:textbox","jsplumb\\:oval","jsplumb\\:rect","jsplumb\\:stroke","jsplumb\\:shape","jsplumb\\:group"],g="behavior:url(#default#VML);position:absolute;";c=document.createStyleSheet();for(var r=0;r0&&C>0&&u=u&&w[2]<=C&&w[3]>=C)){return true}}var A=q.canvas.getContext("2d").getImageData(parseInt(u),parseInt(C),1,1);return A.data[0]!=0||A.data[1]!=0||A.data[2]!=0||A.data[3]!=0}return false};var p=false,o=false,t=null,s=false,r=function(v,u){return v!=null&&i(v,u)};this.mousemove=function(x){var z=n(x),w=f(x),v=document.elementFromPoint(w[0],w[1]),y=r(v,"_jsPlumb_overlay");var u=d==null&&(r(v,"_jsPlumb_endpoint")||r(v,"_jsPlumb_connector"));if(!p&&u&&q._over(x)){p=true;q.fire("mouseenter",q,x);return true}else{if(p&&(!q._over(x)||!u)&&!y){p=false;q.fire("mouseexit",q,x)}}q.fire("mousemove",q,x)};this.click=function(u){if(p&&q._over(u)&&!s){q.fire("click",q,u)}s=false};this.dblclick=function(u){if(p&&q._over(u)&&!s){q.fire("dblclick",q,u)}s=false};this.mousedown=function(u){if(q._over(u)&&!o){o=true;t=m(a(q.canvas));q.fire("mousedown",q,u)}};this.mouseup=function(u){o=false;q.fire("mouseup",q,u)};this.contextmenu=function(u){if(p&&q._over(u)&&!s){q.fire("contextmenu",q,u)}s=false}};var c=function(p){var o=document.createElement("canvas");p._jsPlumb.appendElement(o,p.parent);o.style.position="absolute";if(p["class"]){o.className=p["class"]}p._jsPlumb.getId(o,p.uuid);if(p.tooltip){o.setAttribute("title",p.tooltip)}return o};var l=function(p){k.apply(this,arguments);var o=[];this.getDisplayElements=function(){return o};this.appendDisplayElement=function(q){o.push(q)}};var h=jsPlumb.CanvasConnector=function(r){l.apply(this,arguments);var o=function(v,t){p.ctx.save();jsPlumb.extend(p.ctx,t);if(t.gradient){var u=p.createGradient(v,p.ctx);for(var s=0;s0?c[0].tagName:null},getUIPosition:function(c){if(c.length==1){ret={left:c[0].pageX,top:c[0].pageY}}else{var d=c[1],b=d.offset;ret=b||d.absolutePosition}return ret},hasClass:function(c,b){return c.hasClass(b)},initDraggable:function(c,b,d){b=b||{};b.helper=null;if(d){b.scope=b.scope||jsPlumb.Defaults.Scope}c.draggable(b)},initDroppable:function(c,b){b.scope=b.scope||jsPlumb.Defaults.Scope;c.droppable(b)},isAlreadyDraggable:function(b){b=jsPlumb.CurrentLibrary.getElementObject(b);return b.hasClass("ui-draggable")},isDragSupported:function(c,b){return c.draggable},isDropSupported:function(c,b){return c.droppable},removeClass:function(c,b){c=jsPlumb.CurrentLibrary.getElementObject(c);try{if(c[0].className.constructor==SVGAnimatedString){jsPlumb.util.svg.removeClass(c[0],b)}}catch(d){}c.removeClass(b)},removeElement:function(b,c){jsPlumb.CurrentLibrary.getElementObject(b).remove()},setAttribute:function(c,d,b){c.attr(d,b)},setDraggable:function(c,b){c.draggable("option","disabled",!b)},setDragScope:function(c,b){c.draggable("option","scope",b)},setOffset:function(b,c){jsPlumb.CurrentLibrary.getElementObject(b).offset(c)},trigger:function(d,e,b){var c=jQuery._data(jsPlumb.CurrentLibrary.getElementObject(d)[0],"handle");c(b)},unbind:function(b,c,d){b=jsPlumb.CurrentLibrary.getElementObject(b);b.unbind(c,d)}};a(document).ready(jsPlumb.init)})(jQuery);(function(){"undefined"==typeof Math.sgn&&(Math.sgn=function(l){return 0==l?0:0=64){x[0]=(C[0].x+C[B].x)/2;return 1}var p,u=C[0].y-C[B].y;y=C[B].x-C[0].x;q=C[0].x*C[B].y-C[B].x*C[0].y;s=max_distance_below=0;for(p=1;ps?s=r:r0?1:-1,r=null;n1){l.location=1}if(l.location<0){l.location=0}return i(m,l.location)},nearestPointOnCurve:function(m,l){var n=h(m,l);return{point:k(l,l.length-1,n.location,null,null),location:n.location}},pointOnCurve:c,pointAlongCurveFrom:function(m,l,n){return b(m,l,n).point},perpendicularToCurveAt:function(m,l,n,o){l=b(m,l,o==null?0:o);m=i(m,l.location);o=Math.atan(-1/m);m=n/2*Math.sin(o);n=n/2*Math.cos(o);return[{x:l.point.x+n,y:l.point.y+m},{x:l.point.x-n,y:l.point.y-m}]},locationAlongCurveFrom:function(m,l,n){return b(m,l,n).location}}})(); \ No newline at end of file diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py new file mode 100644 index 000000000..0445ae03c --- /dev/null +++ b/PyTutorGAE/pg_encoder.py @@ -0,0 +1,174 @@ +# Online Python Tutor +# https://github.com/pgbovine/OnlinePythonTutor/ +# +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +# Given an arbitrary piece of Python data, encode it in such a manner +# that it can be later encoded into JSON. +# http://json.org/ +# +# We use this function to encode run-time traces of data structures +# to send to the front-end. +# +# Format: +# Primitives: +# * None, int, long, float, str, bool - unchanged +# (json.dumps encodes these fine verbatim) +# +# Compound objects: +# * list - ['LIST', elt1, elt2, elt3, ..., eltN] +# * tuple - ['TUPLE', elt1, elt2, elt3, ..., eltN] +# * set - ['SET', elt1, elt2, elt3, ..., eltN] +# * dict - ['DICT', [key1, value1], [key2, value2], ..., [keyN, valueN]] +# * instance - ['INSTANCE', class name, [attr1, value1], [attr2, value2], ..., [attrN, valueN]] +# * class - ['CLASS', class name, [list of superclass names], [attr1, value1], [attr2, value2], ..., [attrN, valueN]] +# * function - ['FUNCTION', function name, parent frame ID (for nested functions)] +# * other - [, string representation of object] +# * compound object reference - ['REF', target object's unique_id] +# +# the unique_id is derived from id(), which allows us to capture aliasing + + +import re, types +typeRE = re.compile("") +classRE = re.compile("") + +import inspect + + +# Note that this might BLOAT MEMORY CONSUMPTION since we're holding on +# to every reference ever created by the program without ever releasing +# anything! +class ObjectEncoder: + def __init__(self): + # Key: canonicalized small ID + # Value: encoded (compound) heap object + self.encoded_heap_objects = {} + + self.id_to_small_IDs = {} + self.cur_small_ID = 1 + + + def get_heap(self): + return self.encoded_heap_objects + + + def reset_heap(self): + # VERY IMPORTANT to reassign to an empty dict rather than just + # clearing the existing dict, since get_heap() could have been + # called earlier to return a reference to a previous heap state + self.encoded_heap_objects = {} + + def set_function_parent_frame_ID(self, ref_obj, enclosing_frame_id): + assert ref_obj[0] == 'REF' + func_obj = self.encoded_heap_objects[ref_obj[1]] + assert func_obj[0] == 'FUNCTION' + func_obj[-1] = enclosing_frame_id + + + # return either a primitive object or an object reference; + # and as a side effect, update encoded_heap_objects + def encode(self, dat): + # primitive type + if dat is None or \ + type(dat) in (int, long, float, str, bool): + return dat + + # compound type - return an object reference and update encoded_heap_objects + else: + my_id = id(dat) + + try: + my_small_id = self.id_to_small_IDs[my_id] + except KeyError: + my_small_id = self.cur_small_ID + self.id_to_small_IDs[my_id] = self.cur_small_ID + self.cur_small_ID += 1 + + del my_id # to prevent bugs later in this function + + ret = ['REF', my_small_id] + + # punt early if you've already encoded this object + if my_small_id in self.encoded_heap_objects: + return ret + + + # major side-effect! + new_obj = [] + self.encoded_heap_objects[my_small_id] = new_obj + + typ = type(dat) + + if typ == list: + new_obj.append('LIST') + for e in dat: new_obj.append(self.encode(e)) + elif typ == tuple: + new_obj.append('TUPLE') + for e in dat: new_obj.append(self.encode(e)) + elif typ == set: + new_obj.append('SET') + for e in dat: new_obj.append(self.encode(e)) + elif typ == dict: + new_obj.append('DICT') + for (k, v) in dat.iteritems(): + # don't display some built-in locals ... + if k not in ('__module__', '__return__'): + new_obj.append([self.encode(k), self.encode(v)]) + + elif typ in (types.InstanceType, types.ClassType, types.TypeType) or \ + classRE.match(str(typ)): + # ugh, classRE match is a bit of a hack :( + if typ == types.InstanceType or classRE.match(str(typ)): + new_obj.extend(['INSTANCE', dat.__class__.__name__]) + else: + superclass_names = [e.__name__ for e in dat.__bases__] + new_obj.extend(['CLASS', dat.__name__, superclass_names]) + + # traverse inside of its __dict__ to grab attributes + # (filter out useless-seeming ones): + user_attrs = sorted([e for e in dat.__dict__.keys() + if e not in ('__doc__', '__module__', '__return__')]) + + for attr in user_attrs: + new_obj.append([self.encode(attr), self.encode(dat.__dict__[attr])]) + elif typ in (types.FunctionType, types.MethodType): + # NB: In Python 3.0, getargspec is deprecated in favor of getfullargspec + argspec = inspect.getargspec(dat) + + printed_args = [e for e in argspec.args] + if argspec.varargs: + printed_args.extend(['*' + e for e in argspec.varargs]) + if argspec.keywords: + printed_args.extend(['**' + e for e in argspec.keywords]) + + pretty_name = dat.__name__ + '(' + ', '.join(printed_args) + ')' + new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later + else: + typeStr = str(typ) + m = typeRE.match(typeStr) + assert m, typ + new_obj.extend([m.group(1), str(dat)]) + + return ret + diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py new file mode 100644 index 000000000..c5608218c --- /dev/null +++ b/PyTutorGAE/pg_logger.py @@ -0,0 +1,516 @@ +# Online Python Tutor +# https://github.com/pgbovine/OnlinePythonTutor/ +# +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +# This is the meat of the Online Python Tutor back-end. It implements a +# full logger for Python program execution (based on pdb, the standard +# Python debugger imported via the bdb module), printing out the values +# of all in-scope data structures after each executed instruction. + + + +import sys +import bdb # the KEY import here! +import re +import traceback +import types + +import cStringIO +import pg_encoder + + +# TODO: not threadsafe: + +# upper-bound on the number of executed lines, in order to guard against +# infinite loops +MAX_EXECUTED_LINES = 300 + +#DEBUG = False +DEBUG = True + + +IGNORE_VARS = set(('__user_stdout__', '__builtins__', '__name__', '__exception__', '__doc__')) + +def get_user_stdout(frame): + return frame.f_globals['__user_stdout__'].getvalue() + +def get_user_globals(frame): + d = filter_var_dict(frame.f_globals) + # also filter out __return__ for globals only, but NOT for locals + if '__return__' in d: + del d['__return__'] + return d + +def get_user_locals(frame): + return filter_var_dict(frame.f_locals) + +def filter_var_dict(d): + ret = {} + for (k,v) in d.iteritems(): + if k not in IGNORE_VARS: + ret[k] = v + return ret + + +class PGLogger(bdb.Bdb): + + def __init__(self, finalizer_func): + bdb.Bdb.__init__(self) + self.mainpyfile = '' + self._wait_for_mainpyfile = 0 + + # a function that takes the output trace as a parameter and + # processes it + self.finalizer_func = finalizer_func + + # each entry contains a dict with the information for a single + # executed line + self.trace = [] + + #http://stackoverflow.com/questions/2112396/in-python-in-google-app-engine-how-do-you-capture-output-produced-by-the-print + self.GAE_STDOUT = sys.stdout + + # Key: function object + # Value: parent frame + self.closures = {} + + # List of frames to KEEP AROUND after the function exits, + # because nested functions were defined in those frames. + # ORDER matters for aesthetics. + self.zombie_frames = [] + + # all globals that ever appeared in the program, in the order in + # which they appeared. note that this might be a superset of all + # the globals that exist at any particular execution point, + # since globals might have been deleted (using, say, 'del') + self.all_globals_in_order = [] + + # very important for this single object to persist throughout + # execution, or else canonical small IDs won't be consistent. + self.encoder = pg_encoder.ObjectEncoder() + + + # Returns the (lexical) parent frame of the function that was called + # to create the stack frame 'frame'. + # + # OKAY, this is a SUPER hack, but I don't see a way around it + # since it's impossible to tell exactly which function + # ('closure') object was called to create 'frame'. + # + # The Python interpreter doesn't maintain this information, + # so unless we hack the interpreter, we will simply have + # to make an educated guess based on the contents of local + # variables inherited from possible parent frame candidates. + def get_parent_frame(self, frame): + for (func_obj, parent_frame) in self.closures.iteritems(): + # ok, there's a possible match, but let's compare the + # local variables in parent_frame to those of frame + # to make sure. this is a hack that happens to work because in + # Python, each stack frame inherits ('inlines') a copy of the + # variables from its (lexical) parent frame. + if func_obj.__code__ == frame.f_code: + all_matched = True + for k in parent_frame.f_locals: + if k != '__return__' and k in frame.f_locals: + if parent_frame.f_locals[k] != frame.f_locals[k]: + all_matched = False + break + + if all_matched: + return parent_frame + + return None + + + def get_zombie_frame_id(self, f): + # should be None unless this is a zombie frame + try: + # make the frame id's one-indexed for clarity + # (and to prevent possible confusion with None) + return self.zombie_frames.index(f) + 1 + except ValueError: + pass + return None + + def lookup_zombie_frame_by_id(self, idx): + # remember this is one-indexed + return self.zombie_frames[idx - 1] + + + # unused ... + #def reset(self): + # bdb.Bdb.reset(self) + # self.forget() + + + def forget(self): + self.lineno = None + self.stack = [] + self.curindex = 0 + self.curframe = None + + def setup(self, f, t): + self.forget() + self.stack, self.curindex = self.get_stack(f, t) + self.curframe = self.stack[self.curindex][0] + + + # Override Bdb methods + + def user_call(self, frame, argument_list): + """This method is called when there is the remote possibility + that we ever need to stop in this function.""" + if self._wait_for_mainpyfile: + return + if self.stop_here(frame): + self.interaction(frame, None, 'call') + + def user_line(self, frame): + """This function is called when we stop or break at this line.""" + if self._wait_for_mainpyfile: + if (self.canonic(frame.f_code.co_filename) != "" or + frame.f_lineno <= 0): + return + self._wait_for_mainpyfile = 0 + self.interaction(frame, None, 'step_line') + + def user_return(self, frame, return_value): + """This function is called when a return trap is set here.""" + frame.f_locals['__return__'] = return_value + self.interaction(frame, None, 'return') + + def user_exception(self, frame, exc_info): + exc_type, exc_value, exc_traceback = exc_info + """This function is called if an exception occurs, + but only if we are to stop at or just below this level.""" + frame.f_locals['__exception__'] = exc_type, exc_value + if type(exc_type) == type(''): + exc_type_name = exc_type + else: exc_type_name = exc_type.__name__ + self.interaction(frame, exc_traceback, 'exception') + + + # General interaction function + + def interaction(self, frame, traceback, event_type): + self.setup(frame, traceback) + tos = self.stack[self.curindex] + top_frame = tos[0] + lineno = tos[1] + + self.encoder.reset_heap() # VERY VERY VERY IMPORTANT, + # or else we won't properly capture heap object mutations in the trace! + + + # only render zombie frames that are NO LONGER on the stack + cur_stack_frames = [e[0] for e in self.stack] + zombie_frames_to_render = [e for e in self.zombie_frames if e not in cur_stack_frames] + + + # each element is a pair of (function name, ENCODED locals dict) + encoded_stack_locals = [] + + + # returns a dict with keys: function name, frame id, id of parent frame, encoded_locals dict + def create_encoded_stack_entry(cur_frame): + ret = {} + + + # your immediate parent frame ID is parent_frame_id_list[0] + # and all other members are your further ancestors + parent_frame_id_list = [] + + f = cur_frame + while True: + p = self.get_parent_frame(f) + if p: + pid = self.get_zombie_frame_id(p) + assert pid + parent_frame_id_list.append(pid) + f = p + else: + break + + + cur_name = cur_frame.f_code.co_name + + # special case for lambdas - grab their line numbers too + if cur_name == '': + cur_name = '' + elif cur_name == '': + cur_name = 'unnamed function' + + # encode in a JSON-friendly format now, in order to prevent ill + # effects of aliasing later down the line ... + encoded_locals = {} + + for (k, v) in get_user_locals(cur_frame).iteritems(): + is_in_parent_frame = False + + # don't display locals that appear in your parents' stack frames, + # since that's redundant + for pid in parent_frame_id_list: + parent_frame = self.lookup_zombie_frame_by_id(pid) + if k in parent_frame.f_locals: + # ignore __return__ + if k != '__return__': + # these values SHOULD BE ALIASES + # (don't do an 'is' check since it might not fire for primitives) + assert parent_frame.f_locals[k] == v + is_in_parent_frame = True + + if is_in_parent_frame: + continue + + # don't display some built-in locals ... + if k == '__module__': + continue + + encoded_val = self.encoder.encode(v) + + # UGH, this is SUPER ugly but needed for nested function defs + if type(v) in (types.FunctionType, types.MethodType): + try: + enclosing_frame = self.closures[v] + enclosing_frame_id = self.get_zombie_frame_id(enclosing_frame) + self.encoder.set_function_parent_frame_ID(encoded_val, enclosing_frame_id) + except KeyError: + pass + encoded_locals[k] = encoded_val + + + # order the variable names in a sensible way: + + # Let's start with co_varnames, since it (often) contains all + # variables in this frame, some of which might not exist yet. + ordered_varnames = [] + for e in cur_frame.f_code.co_varnames: + if e in encoded_locals: + ordered_varnames.append(e) + + # sometimes co_varnames doesn't contain all of the true local + # variables: e.g., when executing a 'class' definition. in that + # case, iterate over encoded_locals and push them onto the end + # of ordered_varnames in alphabetical order + for e in sorted(encoded_locals.keys()): + if e != '__return__' and e not in ordered_varnames: + ordered_varnames.append(e) + + # finally, put __return__ at the very end + if '__return__' in encoded_locals: + ordered_varnames.append('__return__') + + # crucial sanity checks! + assert len(ordered_varnames) == len(encoded_locals) + for e in ordered_varnames: + assert e in encoded_locals + + return dict(func_name=cur_name, + frame_id=self.get_zombie_frame_id(cur_frame), + parent_frame_id_list=parent_frame_id_list, + encoded_locals=encoded_locals, + ordered_varnames=ordered_varnames) + + + i = self.curindex + + # look for whether a nested function has been defined during + # this particular call: + if i > 1: # i == 1 implies that there's only a global scope visible + for (k, v) in get_user_locals(top_frame).iteritems(): + if (type(v) in (types.FunctionType, types.MethodType) and \ + v not in self.closures): + self.closures[v] = top_frame + if not top_frame in self.zombie_frames: + self.zombie_frames.append(top_frame) + + + # climb up until you find '', which is (hopefully) the global scope + while True: + cur_frame = self.stack[i][0] + cur_name = cur_frame.f_code.co_name + if cur_name == '': + break + + encoded_stack_locals.append(create_encoded_stack_entry(cur_frame)) + i -= 1 + + zombie_encoded_stack_locals = [create_encoded_stack_entry(e) for e in zombie_frames_to_render] + + + # encode in a JSON-friendly format now, in order to prevent ill + # effects of aliasing later down the line ... + encoded_globals = {} + for (k, v) in get_user_globals(tos[0]).iteritems(): + encoded_val = self.encoder.encode(v) + + # UGH, this is SUPER ugly but needed for nested function defs + if type(v) in (types.FunctionType, types.MethodType): + try: + enclosing_frame = self.closures[v] + enclosing_frame_id = self.get_zombie_frame_id(enclosing_frame) + self.encoder.set_function_parent_frame_ID(encoded_val, enclosing_frame_id) + except KeyError: + pass + encoded_globals[k] = encoded_val + + if k not in self.all_globals_in_order: + self.all_globals_in_order.append(k) + + # filter out globals that don't exist at this execution point + # (because they've been, say, deleted with 'del') + ordered_globals = [e for e in self.all_globals_in_order if e in encoded_globals] + assert len(ordered_globals) == len(encoded_globals) + + trace_entry = dict(line=lineno, + event=event_type, + func_name=tos[0].f_code.co_name, + globals=encoded_globals, + ordered_globals=ordered_globals, + stack_locals=encoded_stack_locals, + zombie_stack_locals=zombie_encoded_stack_locals, + heap=self.encoder.get_heap(), + stdout=get_user_stdout(tos[0])) + + # if there's an exception, then record its info: + if event_type == 'exception': + # always check in f_locals + exc = frame.f_locals['__exception__'] + trace_entry['exception_msg'] = exc[0].__name__ + ': ' + str(exc[1]) + + self.trace.append(trace_entry) + + if len(self.trace) >= MAX_EXECUTED_LINES: + self.trace.append(dict(event='instruction_limit_reached', exception_msg='(stopped after ' + str(MAX_EXECUTED_LINES) + ' steps to prevent possible infinite loop)')) + self.force_terminate() + + self.forget() + + + def _runscript(self, script_str): + # When bdb sets tracing, a number of call and line events happens + # BEFORE debugger even reaches user's code (and the exact sequence of + # events depends on python version). So we take special measures to + # avoid stopping before we reach the main script (see user_line and + # user_call for details). + self._wait_for_mainpyfile = 1 + + + # I think Google App Engine takes care of sandboxing, but maybe + # we should do some extra sandboxing ourselves ... + ''' + # ok, let's try to sorta 'sandbox' the user script by not + # allowing certain potentially dangerous operations: + user_builtins = {} + for (k,v) in __builtins__.iteritems(): + if k in ('reload', 'input', 'apply', 'open', 'compile', + '__import__', 'file', 'eval', 'execfile', + 'exit', 'quit', 'raw_input', + 'dir', 'globals', 'locals', 'vars', + 'compile'): + continue + user_builtins[k] = v + ''' + + + user_stdout = cStringIO.StringIO() + + sys.stdout = user_stdout + user_globals = {"__name__" : "__main__", + "__builtins__" : __builtins__, + "__user_stdout__" : user_stdout} + + try: + self.run(script_str, user_globals, user_globals) + # sys.exit ... + except SystemExit: + #sys.exit(0) + raise bdb.BdbQuit + except: + if DEBUG: + traceback.print_exc() + + trace_entry = dict(event='uncaught_exception') + + exc = sys.exc_info()[1] + if hasattr(exc, 'lineno'): + trace_entry['line'] = exc.lineno + if hasattr(exc, 'offset'): + trace_entry['offset'] = exc.offset + + if hasattr(exc, 'msg'): + trace_entry['exception_msg'] = "Error: " + exc.msg + else: + trace_entry['exception_msg'] = "Unknown error" + + self.trace.append(trace_entry) + #self.finalize() + raise bdb.BdbQuit # need to forceably STOP execution + + + def force_terminate(self): + #self.finalize() + raise bdb.BdbQuit # need to forceably STOP execution + + + def finalize(self): + sys.stdout = self.GAE_STDOUT # very important! + + assert len(self.trace) <= (MAX_EXECUTED_LINES + 1) + + # filter all entries after 'return' from '', since they + # seem extraneous: + res = [] + for e in self.trace: + res.append(e) + if e['event'] == 'return' and e['func_name'] == '': + break + + # another hack: if the SECOND to last entry is an 'exception' + # and the last entry is return from , then axe the last + # entry, for aesthetic reasons :) + if len(res) >= 2 and \ + res[-2]['event'] == 'exception' and \ + res[-1]['event'] == 'return' and res[-1]['func_name'] == '': + res.pop() + + self.trace = res + + #for e in self.trace: print >> sys.stderr, e + + self.finalizer_func(self.trace) + + + +# the MAIN meaty function!!! +def exec_script_str(script_str, finalizer_func): + logger = PGLogger(finalizer_func) + + try: + logger._runscript(script_str) + except bdb.BdbQuit: + pass + finally: + logger.finalize() + diff --git a/PyTutorGAE/pythontutor.py b/PyTutorGAE/pythontutor.py new file mode 100644 index 000000000..1e1e1c132 --- /dev/null +++ b/PyTutorGAE/pythontutor.py @@ -0,0 +1,67 @@ +# Online Python Tutor +# https://github.com/pgbovine/OnlinePythonTutor/ +# +# Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +# TODO: if we want to enable concurrent requests, then make sure this is threadsafe (e.g., no mutable globals) +# then add this string to app.yaml: 'threadsafe: true' + +import webapp2 +import pg_logger +import json +import jinja2, os +import sys + + +# TODO: this croaks for some reason ... +TEST_STR = "import os\nos.chdir('/')" + + +JINJA_ENVIRONMENT = jinja2.Environment(loader=jinja2.FileSystemLoader(os.path.dirname(__file__))) + + +class TutorPage(webapp2.RequestHandler): + + def get(self): + self.response.headers['Content-Type'] = 'text/html' + template = JINJA_ENVIRONMENT.get_template('tutor.html') + self.response.out.write(template.render()) + + +class ExecScript(webapp2.RequestHandler): + + def json_finalizer(self, output_lst): + json_output = json.dumps(output_lst, indent=None) # use indent=None for most compact repr + self.response.out.write(json_output) + + def get(self): + self.response.headers['Content-Type'] = 'application/json' + self.response.headers['Cache-Control'] = 'no-cache' + pg_logger.exec_script_str(self.request.get('user_script'), self.json_finalizer) + #pg_logger.exec_script_str(TEST_STR, self.json_finalizer) + + +app = webapp2.WSGIApplication([('/', TutorPage), + ('/exec', ExecScript)], + debug=True) + diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html new file mode 100644 index 000000000..f211de028 --- /dev/null +++ b/PyTutorGAE/tutor.html @@ -0,0 +1,234 @@ + + + + + + + Online Python Tutor (v3) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Write your Python code here: +
+ +
+ +

+ + + +

+ +

Try these small examples:
+ +aliasing | +intro | +factorial | +fibonacci | +memoized fib | +square root | +insertion sort +
+filter | +tokenize | +OOP | +gcd | +sumList | +towers of hanoi | +exceptions + +

+ +

From MIT's 6.01 course:
+ +list map | +summation | +OOP 1 | +OOP 2 | +inheritance + +

+ +

Nested functions: +
+ +closure 1 | +closure 2 | +closure 3 | +closure 4 | +closure 5 + +

+ +

Aliasing: +
+ +aliasing 1 | +aliasing 2 | +aliasing 3 | +aliasing 4 | +aliasing 5 | +aliasing 6 | +aliasing 7 + +

+ +

Linked lists: +
+ +LL 1 | +LL 2 + +

+ + +
+ + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ + + +
+ +
Use the slider or the left and right arrow keys to step through execution. +
Click on code to set breakpoints.
+ +
+
+ +
+ +
+ + +
+ + +
+ +Program output: +
+ + +

+ +

+ + +
+ +
+ +
+ +
+ + + + + + diff --git a/example-code/aliasing.txt b/example-code/aliasing.txt index e866323d5..174ba2ec4 100644 --- a/example-code/aliasing.txt +++ b/example-code/aliasing.txt @@ -8,11 +8,11 @@ x.append(6) y.append(7) y = "hello" -def foo(lst): +def foo(lst): # breakpoint lst.append("hello") bar(lst) -def bar(myLst): +def bar(myLst): # breakpoint print myLst foo(x) diff --git a/example-code/aliasing/aliasing1.txt b/example-code/aliasing/aliasing1.txt new file mode 100644 index 000000000..f6d9efea8 --- /dev/null +++ b/example-code/aliasing/aliasing1.txt @@ -0,0 +1,2 @@ +a = (1, (2, (3, None))) +b = a[1] diff --git a/example-code/aliasing/aliasing2.txt b/example-code/aliasing/aliasing2.txt new file mode 100644 index 000000000..57984f2ff --- /dev/null +++ b/example-code/aliasing/aliasing2.txt @@ -0,0 +1,2 @@ +c = (1, (2, None)) +d = (1, c) diff --git a/example-code/aliasing/aliasing3.txt b/example-code/aliasing/aliasing3.txt new file mode 100644 index 000000000..fcb9e9c63 --- /dev/null +++ b/example-code/aliasing/aliasing3.txt @@ -0,0 +1,7 @@ +l1, l2, l3, l4 = 1, 2, 3, 4 + +t1 = (l1, l2) +t2 = (l3, l4) +t = (t1, t2) +u = ((1, 2), (3, 4)) +v = u[0] diff --git a/example-code/aliasing/aliasing4.txt b/example-code/aliasing/aliasing4.txt new file mode 100644 index 000000000..7ca952d22 --- /dev/null +++ b/example-code/aliasing/aliasing4.txt @@ -0,0 +1,2 @@ +x = [1, 2, 3] +x.append(x) diff --git a/example-code/aliasing/aliasing5.txt b/example-code/aliasing/aliasing5.txt new file mode 100644 index 000000000..232486f7c --- /dev/null +++ b/example-code/aliasing/aliasing5.txt @@ -0,0 +1,3 @@ +x = None +for i in range(5, 0, -1): + x = (i, x) diff --git a/example-code/aliasing/aliasing6.txt b/example-code/aliasing/aliasing6.txt new file mode 100644 index 000000000..5f9c1e8b5 --- /dev/null +++ b/example-code/aliasing/aliasing6.txt @@ -0,0 +1,7 @@ +# wow, this looks gross :) +t1 = (1, 2) +t2 = (3, 4) +t = [t1, t2] +u = [t, t, t] +u[1] = u +t[0] = u diff --git a/example-code/aliasing/aliasing7.txt b/example-code/aliasing/aliasing7.txt new file mode 100644 index 000000000..6e709dafc --- /dev/null +++ b/example-code/aliasing/aliasing7.txt @@ -0,0 +1,5 @@ +x = (3, {'joe': 'M', 'jane': 'F'}) +y = (2, x) +z = (1, y) +w = (x, y, z) + diff --git a/example-code/closures/closure1.txt b/example-code/closures/closure1.txt new file mode 100644 index 000000000..674c82bb2 --- /dev/null +++ b/example-code/closures/closure1.txt @@ -0,0 +1,7 @@ +def foo(y): + def bar(x): + return x + y + return bar + +b = foo(1) +b(2) diff --git a/example-code/closures/closure2.txt b/example-code/closures/closure2.txt new file mode 100644 index 000000000..dee3a5fd6 --- /dev/null +++ b/example-code/closures/closure2.txt @@ -0,0 +1,15 @@ +def foo(y): + def bar(x): + return x + y + return bar + +def foo_deux(y): + def bar_deux(x): + return x + y + return bar_deux + +b = foo(1) +b_deux = foo_deux(1000) + +b(2) +b_deux(2000) diff --git a/example-code/closures/closure3.txt b/example-code/closures/closure3.txt new file mode 100644 index 000000000..7e3eb523a --- /dev/null +++ b/example-code/closures/closure3.txt @@ -0,0 +1,10 @@ +def foo(x): + def bar(y): + def baz(z): + return len(x) + len(y) + len(z) + return baz + return bar([4,5,6,7]) + +l = [1,2,3] +x = foo(l) +x([8,9,10,11,12]) diff --git a/example-code/closures/closure4.txt b/example-code/closures/closure4.txt new file mode 100644 index 000000000..2947e96be --- /dev/null +++ b/example-code/closures/closure4.txt @@ -0,0 +1,8 @@ +def f(x): + def g(y): + return x + y + return g + +g1 = f(1) +g2 = f(2) +g1(3) + g2(4) diff --git a/example-code/closures/closure5.txt b/example-code/closures/closure5.txt new file mode 100644 index 000000000..9484abcb0 --- /dev/null +++ b/example-code/closures/closure5.txt @@ -0,0 +1,10 @@ +def f(x): + def g(y, z): + if z == 0: + return y + return g(x+y+z, z-1) + return lambda: g(0, x) + +foo = f(3) +bar = f(4) +baz = foo() + bar() diff --git a/example-code/linked-lists/ll1.txt b/example-code/linked-lists/ll1.txt new file mode 100644 index 000000000..db8b48fc0 --- /dev/null +++ b/example-code/linked-lists/ll1.txt @@ -0,0 +1,10 @@ +# use lists +x = None +for i in range(6, 0, -1): + x = [i, x] + +# use tuples +y = None +for i in range(6, 0, -1): + y = (i, y) + diff --git a/example-code/linked-lists/ll2.txt b/example-code/linked-lists/ll2.txt new file mode 100644 index 000000000..3a1181499 --- /dev/null +++ b/example-code/linked-lists/ll2.txt @@ -0,0 +1,15 @@ +# use dicts +x = None +for i in range(6, 0, -1): + x = {'data': i, 'next': x} + +# use objects +class Node: + def __init__(self, data, next): + self.data = data + self.next = next + +y = None +for i in range(6, 0, -1): + y = Node(i, y) + From 1231fb584c53a15eb3fc4433cfc48546da395280 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 10:22:48 -0700 Subject: [PATCH 015/502] test commit --- PyTutorGAE/js/edu-python.js | 1 - 1 file changed, 1 deletion(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index c719544fd..82d345546 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -43,7 +43,6 @@ var errorColor = '#F87D76'; var visitedLineColor = '#3D58A2'; var lightGray = "#cccccc"; -//var lightGray = "#dddddd"; var darkBlue = "#3D58A2"; var lightBlue = "#899CD1"; var pinkish = "#F15149"; From e60e7443a30454427055124a2c296e34902dc90f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 11:37:23 -0700 Subject: [PATCH 016/502] more refactoring action --- PyTutorGAE/css/edu-python.css | 15 +- PyTutorGAE/js/edu-python.js | 459 +++++++++------------------------- 2 files changed, 128 insertions(+), 346 deletions(-) diff --git a/PyTutorGAE/css/edu-python.css b/PyTutorGAE/css/edu-python.css index 7cb665972..a43b74240 100644 --- a/PyTutorGAE/css/edu-python.css +++ b/PyTutorGAE/css/edu-python.css @@ -126,7 +126,7 @@ span { td#stack_td, td#heap_td { vertical-align:top; - font-size: 12pt; + font-size: 10pt; /* don't make fonts in the heap so big! */ } table#pyOutputPane { @@ -286,19 +286,16 @@ button.smallBtn { } .keyObj { - font-size: 10pt; } .customObj { font-family: Andale mono, monospace; /*font-style: italic;*/ - font-size: 10pt; } .funcObj { font-family: Andale mono, monospace; /*font-style: italic;*/ - font-size: 10pt; } .retval, @@ -349,6 +346,16 @@ table.tupleTbl td.tupleElt { border-left: 1px solid #555555; /* must match td.tupleHeader border */ } +table.customObjTbl { + background-color: white; + color: black; + border: 1px solid black; +} + +table.customObjTbl td.customObjElt { + padding: 5px; +} + table.listTbl td.listElt, table.tupleTbl td.tupleElt { padding-top: 0px; diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 82d345546..443d1e934 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -726,8 +726,9 @@ function renderDataStructures(curEntry, vizDiv) { var obj = curEntry.heap[objID]; assert($.isArray(obj)); - if (obj[0] == 'LIST' || obj[0] == 'TUPLE') { - var label = obj[0] == 'LIST' ? 'list' : 'tuple'; + + if (obj[0] == 'LIST' || obj[0] == 'TUPLE' || obj[0] == 'SET' || obj[0] == 'DICT') { + var label = obj[0].toLowerCase(); assert(obj.length >= 1); if (obj.length == 1) { @@ -735,383 +736,157 @@ function renderDataStructures(curEntry, vizDiv) { } else { d3DomElement.append('
' + label + '
'); - d3DomElement.append('
'); + d3DomElement.append('
'); var tbl = d3DomElement.children('table'); - var headerTr = tbl.find('tr:first'); - var contentTr = tbl.find('tr:last'); - $.each(obj, function(ind, val) { - if (ind < 1) return; // skip type tag and ID entry - - // add a new column and then pass in that newly-added column - // as d3DomElement to the recursive call to child: - headerTr.append(''); - headerTr.find('td:last').append(ind - 1); - - contentTr.append(''); - renderNestedObject(val, contentTr.find('td:last')); - }); - } - } - else if (obj[0] == 'SET') { - - } - else if (obj[0] == 'DICT') { - - } - else if (obj[0] == 'INSTANCE') { - } - else if (obj[0] == 'CLASS') { - } - else if (obj[0] == 'FUNCTION') { - } - else { - // render custom data type - } - } - - - - // prepend heap header after all the dust settles: - $(vizDiv + ' #heap').prepend('
Objects
'); - - return; - - // Key: CSS ID of the div element representing the variable - // (or heap object, for heap->heap connections, where the - // format is: 'heap_pointer_src_') - // Value: CSS ID of the div element representing the value rendered in the heap - // (the format is: 'heap_object_') - var connectionEndpointIDs = {}; - var heapConnectionEndpointIDs = {}; // subset of connectionEndpointIDs for heap->heap connections - - var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* - - - // nested helper functions are SUPER-helpful! - - // render the JS data object obj inside of jDomElt, - // which is a jQuery wrapped DOM object - // (obj is in a format encoded by pg_encoder.py on the backend) - // isTopLevel is true only if this is a top-level heap object (rather - // than a nested sub-object) - function renderData(obj, jDomElt, isTopLevel) { - var typ = typeof obj; - var oID = getObjectID(obj); - - if (isPrimitiveType(obj)) { - // only wrap primitive types in heap objects if they are at the - // TOP-LEVEL (otherwise just render them inline within other data - // structures) - if (isTopLevel) { - jDomElt.append('
'); - jDomElt = $('#heap_object_' + oID); - } - - if (obj == null) { - jDomElt.append('None'); - } - else if (typ == "number") { - jDomElt.append('' + obj + ''); - } - else if (typ == "boolean") { - if (obj) { - jDomElt.append('True'); - } - else { - jDomElt.append('False'); - } - } - else if (typ == "string") { - // escape using htmlspecialchars to prevent HTML/script injection - var literalStr = htmlspecialchars(obj); - - // print as a double-quoted string literal - literalStr = literalStr.replace(new RegExp('\"', 'g'), '\\"'); // replace ALL - literalStr = '"' + literalStr + '"'; - - jDomElt.append('' + literalStr + ''); - } - } - else { - assert(typ == "object"); - assert($.isArray(obj)); - - if ((compound_objects_already_rendered[oID] !== undefined) || - (obj[0] == 'CIRCULAR_REF')) { - // render heap->heap connection - if (!isTopLevel) { - // add a stub so that we can connect it with a connector later. - // IE needs this div to be NON-EMPTY in order to properly - // render jsPlumb endpoints, so that's why we add an " "! - var srcDivID = 'heap_pointer_src_' + heap_pointer_src_id; - heap_pointer_src_id++; // just make sure each source has a UNIQUE ID - jDomElt.append('
 
'); + if (obj[0] == 'LIST' || obj[0] == 'TUPLE') { + tbl.append(''); + var headerTr = tbl.find('tr:first'); + var contentTr = tbl.find('tr:last'); + $.each(obj, function(ind, val) { + if (ind < 1) return; // skip type tag and ID entry - assert(connectionEndpointIDs[srcDivID] === undefined); - connectionEndpointIDs[srcDivID] = 'heap_object_' + oID; + // add a new column and then pass in that newly-added column + // as d3DomElement to the recursive call to child: + headerTr.append(''); + headerTr.find('td:last').append(ind - 1); - assert(heapConnectionEndpointIDs[srcDivID] === undefined); - heapConnectionEndpointIDs[srcDivID] = 'heap_object_' + oID; + contentTr.append(''); + renderNestedObject(val, contentTr.find('td:last')); + }); } - } - else { - // wrap compound objects in a heapObject div so that jsPlumb - // connectors can point to it: - jDomElt.append('
'); - jDomElt = $('#heap_object_' + oID); - - if (obj[0] == 'LIST') { - assert(obj.length >= 2); - if (obj.length == 2) { - jDomElt.append('
empty list
'); + else if (obj[0] == 'SET') { + // create an R x C matrix: + var numElts = obj.length - 1; + + // gives roughly a 3x5 rectangular ratio, square is too, err, + // 'square' and boring + var numRows = Math.round(Math.sqrt(numElts)); + if (numRows > 3) { + numRows -= 1; } - else { - jDomElt.append('
list
'); - - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - var headerTr = tbl.find('tr:first'); - var contentTr = tbl.find('tr:last'); - jQuery.each(obj, function(ind, val) { - if (ind < 2) return; // skip 'LIST' tag and ID entry - - // add a new column and then pass in that newly-added column - // as jDomElt to the recursive call to child: - headerTr.append(''); - headerTr.find('td:last').append(ind - 2); - - contentTr.append(''); - - // heuristic for rendering top-level 1-D linked data structures as separate top-level objects - // (and then drawing an arrow to the next element using a regular renderData() call) - if (isTopLevel && structurallyEquivalent(obj, val)) { - var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); - - var enclosingTr = jDomElt.parent().parent(); - enclosingTr.append(''); - renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); - } - renderData(val, contentTr.find('td:last'), false); - }); - } - } - else if (obj[0] == 'TUPLE') { - assert(obj.length >= 2); - if (obj.length == 2) { - jDomElt.append('
empty tuple
'); + var numCols = Math.round(numElts / numRows); + // round up if not a perfect multiple: + if (numElts % numRows) { + numCols += 1; } - else { - jDomElt.append('
tuple
'); - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - var headerTr = tbl.find('tr:first'); - var contentTr = tbl.find('tr:last'); - jQuery.each(obj, function(ind, val) { - if (ind < 2) return; // skip 'TUPLE' tag and ID entry - // add a new column and then pass in that newly-added column - // as jDomElt to the recursive call to child: - headerTr.append(''); - headerTr.find('td:last').append(ind - 2); + jQuery.each(obj, function(ind, val) { + if (ind < 1) return; // skip 'SET' tag - contentTr.append(''); - - // heuristic for rendering top-level 1-D linked data structures as separate top-level objects - // (and then drawing an arrow to the next element using a regular renderData() call) - if (isTopLevel && structurallyEquivalent(obj, val)) { - var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); - - var enclosingTr = jDomElt.parent().parent(); - enclosingTr.append(''); - renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); - } - - renderData(val, contentTr.find('td:last'), false); - }); - } - } - else if (obj[0] == 'SET') { - assert(obj.length >= 2); - if (obj.length == 2) { - jDomElt.append('
empty set
'); - } - else { - jDomElt.append('
set
'); - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - // create an R x C matrix: - var numElts = obj.length - 2; - // gives roughly a 3x5 rectangular ratio, square is too, err, - // 'square' and boring - var numRows = Math.round(Math.sqrt(numElts)); - if (numRows > 3) { - numRows -= 1; + if (((ind - 1) % numCols) == 0) { + tbl.append(''); } - var numCols = Math.round(numElts / numRows); - // round up if not a perfect multiple: - if (numElts % numRows) { - numCols += 1; - } - - jQuery.each(obj, function(ind, val) { - if (ind < 2) return; // skip 'SET' tag and ID entry - - if (((ind - 2) % numCols) == 0) { - tbl.append(''); - } - - var curTr = tbl.find('tr:last'); - curTr.append(''); - renderData(val, curTr.find('td:last'), false); - }); - } + var curTr = tbl.find('tr:last'); + curTr.append(''); + renderNestedObject(val, curTr.find('td:last')); + }); } else if (obj[0] == 'DICT') { - assert(obj.length >= 2); - if (obj.length == 2) { - jDomElt.append('
empty dict
'); - } - else { - jDomElt.append('
dict
'); - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - $.each(obj, function(ind, kvPair) { - if (ind < 2) return; // skip 'DICT' tag and ID entry + $.each(obj, function(ind, kvPair) { + if (ind < 1) return; // skip 'DICT' tag - tbl.append(''); - var newRow = tbl.find('tr:last'); - var keyTd = newRow.find('td:first'); - var valTd = newRow.find('td:last'); - - var key = kvPair[0]; - var val = kvPair[1]; + tbl.append(''); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); - renderData(key, keyTd, false); + var key = kvPair[0]; + var val = kvPair[1]; - // heuristic for rendering top-level 1-D linked data structures as separate top-level objects - // (and then drawing an arrow to the next element using a regular renderData() call) - if (isTopLevel && structurallyEquivalent(obj, val)) { - var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + renderNestedObject(key, keyTd); + renderNestedObject(val, valTd); + }); + } + } + } + else if (obj[0] == 'INSTANCE' || obj[0] == 'CLASS') { + var isInstance = (obj[0] == 'INSTANCE'); + var headerLength = isInstance ? 2 : 3; - var enclosingTr = jDomElt.parent().parent(); - enclosingTr.append(''); - renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); - } + assert(obj.length >= headerLength); - renderData(val, valTd, false); - }); - } + if (isInstance) { + d3DomElement.append('
' + obj[1] + ' instance
'); + } + else { + var superclassStr = ''; + if (obj[2].length > 0) { + superclassStr += ('[extends ' + obj[2].join(',') + '] '); } - else if (obj[0] == 'INSTANCE') { - assert(obj.length >= 3); - jDomElt.append('
' + obj[1] + ' instance
'); + d3DomElement.append('
' + obj[1] + ' class ' + superclassStr + '
'); + } - if (obj.length > 3) { - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - $.each(obj, function(ind, kvPair) { - if (ind < 3) return; // skip type tag, class name, and ID entry + if (obj.length > headerLength) { + var lab = isInstance ? 'inst' : 'class'; + d3DomElement.append('
'); - tbl.append(''); - var newRow = tbl.find('tr:last'); - var keyTd = newRow.find('td:first'); - var valTd = newRow.find('td:last'); + var tbl = d3DomElement.children('table'); - // the keys should always be strings, so render them directly (and without quotes): - assert(typeof kvPair[0] == "string"); - var attrnameStr = htmlspecialchars(kvPair[0]); - keyTd.append('' + attrnameStr + ''); + $.each(obj, function(ind, kvPair) { + if (ind < headerLength) return; // skip header tags - // values can be arbitrary objects, so recurse: - var val = kvPair[1]; + tbl.append(''); - // heuristic for rendering top-level 1-D linked data structures as separate top-level objects - // (and then drawing an arrow to the next element using a regular renderData() call) - if (isTopLevel && structurallyEquivalent(obj, val)) { - var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); - var enclosingTr = jDomElt.parent().parent(); - enclosingTr.append(''); - renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); - } + // the keys should always be strings, so render them directly (and without quotes): + assert(typeof kvPair[0] == "string"); + var attrnameStr = htmlspecialchars(kvPair[0]); + keyTd.append('' + attrnameStr + ''); - renderData(val, valTd, false); - }); - } - } - else if (obj[0] == 'CLASS') { - assert(obj.length >= 4); - var superclassStr = ''; - if (obj[3].length > 0) { - superclassStr += ('[extends ' + obj[3].join(',') + '] '); - } + // values can be arbitrary objects, so recurse: + renderNestedObject(kvPair[1], valTd); + }); + } + } + else if (obj[0] == 'FUNCTION') { + assert(obj.length == 3); - jDomElt.append('
' + obj[1] + ' class ' + superclassStr + '
'); + var funcName = htmlspecialchars(obj[1]); // for displaying weird names like '' + var parentFrameID = obj[2]; // optional - if (obj.length > 4) { - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - $.each(obj, function(ind, kvPair) { - if (ind < 4) return; // skip type tag, class name, ID, and superclasses entries + if (parentFrameID) { + d3DomElement.append('
function ' + funcName + ' [parent=f'+ parentFrameID + ']
'); + } + else { + d3DomElement.append('
function ' + funcName + '
'); + } + } + else { + // render custom data type + assert(obj.length == 2); - tbl.append(''); - var newRow = tbl.find('tr:last'); - var keyTd = newRow.find('td:first'); - var valTd = newRow.find('td:last'); + var typeName = obj[0]; + var strRepr = obj[1]; - // the keys should always be strings, so render them directly (and without quotes): - assert(typeof kvPair[0] == "string"); - var attrnameStr = htmlspecialchars(kvPair[0]); - keyTd.append('' + attrnameStr + ''); + strRepr = htmlspecialchars(strRepr); // escape strings! - // values can be arbitrary objects, so recurse: - renderData(kvPair[1], valTd, false); - }); - } - } - else if (obj[0] == 'FUNCTION') { - assert(obj.length == 4); - id = obj[1]; - funcName = htmlspecialchars(obj[2]); // for displaying names like '' - parentFrameID = obj[3]; // optional + d3DomElement.append('
' + typeName + '
'); + d3DomElement.append('
' + strRepr + '
'); + } + } - if (parentFrameID) { - jDomElt.append('
function ' + funcName + ' [parent=f'+ parentFrameID + ']
'); - } - else { - jDomElt.append('
function ' + funcName + '
'); - } - } - else { - // render custom data type - assert(obj.length == 3); - typeName = obj[0]; - id = obj[1]; - strRepr = obj[2]; + // prepend heap header after all the dust settles: + $(vizDiv + ' #heap').prepend('
Objects
'); - // if obj[2] is like ' at 0x84760>', - // then display an abbreviated version rather than the gory details - noStrReprRE = /<.* at 0x.*>/; - if (noStrReprRE.test(strRepr)) { - jDomElt.append('' + typeName + ''); - } - else { - strRepr = htmlspecialchars(strRepr); // escape strings! + return; - // warning: we're overloading tuple elts for custom data types - jDomElt.append('
' + typeName + '
'); - jDomElt.append('
' + strRepr + '
'); - } - } - compound_objects_already_rendered[oID] = 1; // add to set - } - } - } + // Key: CSS ID of the div element representing the variable + // (or heap object, for heap->heap connections, where the + // format is: 'heap_pointer_src_') + // Value: CSS ID of the div element representing the value rendered in the heap + // (the format is: 'heap_object_') + var connectionEndpointIDs = {}; + var heapConnectionEndpointIDs = {}; // subset of connectionEndpointIDs for heap->heap connections + + var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* function renderGlobals() { From d93927b4d0f038755d1299ff45704aecced4e82f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 13:22:36 -0700 Subject: [PATCH 017/502] yay --- PyTutorGAE/js/edu-python.js | 218 ++++++++++-------------------------- 1 file changed, 59 insertions(+), 159 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 443d1e934..c4b58be25 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -603,16 +603,27 @@ function renderDataStructures(curEntry, vizDiv) { } + // variables are displayed in the following order, so lay out heap objects in the same order: // - globals // - stack entries (regular and zombies) + + // if there are multiple aliases to the same object, we want to render + // the one "deepest" in the stack, so that we can hopefully prevent + // objects from jumping around as functions are called and returned. + // e.g., if a list L appears as a global variable and as a local in a + // function, we want to render L when rendering the global frame. + // + // this is straightforward: just go through globals first and then + // each stack frame in order :) + $.each(curEntry.ordered_globals, function(i, varname) { var val = curEntry.globals[varname]; // (use '!==' to do an EXACT match against undefined) if (val !== undefined) { // might not be defined at this line, which is OKAY! if (!isPrimitiveType(val)) { layoutHeapObject(val); - console.log('global:', varname, getRefID(val)); + //console.log('global:', varname, getRefID(val)); } } }); @@ -629,7 +640,7 @@ function renderDataStructures(curEntry, vizDiv) { if (!isPrimitiveType(val)) { layoutHeapObject(val); - console.log(frame.func_name + ':', varname, getRefID(val)); + //console.log(frame.func_name + ':', varname, getRefID(val)); } }); } @@ -637,10 +648,12 @@ function renderDataStructures(curEntry, vizDiv) { // print toplevelHeapLayout + /* $.each(toplevelHeapLayout, function(i, elt) { console.log(elt); }); console.log('---'); + */ var renderedObjectIDs = {}; // set (TODO: refactor all sets to use d3.map) @@ -673,7 +686,7 @@ function renderDataStructures(curEntry, vizDiv) { function renderNestedObject(obj, d3DomElement) { if (isPrimitiveType(obj)) { - renderPrimitiveObject(obj, d3DomElement, false); + renderPrimitiveObject(obj, d3DomElement); } else { renderCompoundObject(getRefID(obj), d3DomElement, false); @@ -814,7 +827,7 @@ function renderDataStructures(curEntry, vizDiv) { else { var superclassStr = ''; if (obj[2].length > 0) { - superclassStr += ('[extends ' + obj[2].join(',') + '] '); + superclassStr += ('[extends ' + obj[2].join(', ') + '] '); } d3DomElement.append('
' + obj[1] + ' class ' + superclassStr + '
'); } @@ -875,12 +888,11 @@ function renderDataStructures(curEntry, vizDiv) { // prepend heap header after all the dust settles: $(vizDiv + ' #heap').prepend('
Objects
'); - return; - // Key: CSS ID of the div element representing the variable - // (or heap object, for heap->heap connections, where the - // format is: 'heap_pointer_src_') + // Key: CSS ID of the div element representing the stack frame variable + // (for stack->heap connections) or heap object (for heap->heap connections) + // the format is: 'heap_pointer_src_' // Value: CSS ID of the div element representing the value rendered in the heap // (the format is: 'heap_object_') var connectionEndpointIDs = {}; @@ -889,45 +901,50 @@ function renderDataStructures(curEntry, vizDiv) { var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* - function renderGlobals() { - // render all global variables IN THE ORDER they were created by the program, - // in order to ensure continuity: - if (curEntry.ordered_globals.length > 0) { - $(vizDiv + " #stack").append('
Global variables
'); + // Render globals and then stack frames: - $(vizDiv + " #stack #globals").append('
'); + // render all global variables IN THE ORDER they were created by the program, + // in order to ensure continuity: + if (curEntry.ordered_globals.length > 0) { + $(vizDiv + " #stack").append('
Global variables
'); + $(vizDiv + " #stack #globals").append('
'); - var tbl = $(vizDiv + " #global_table"); - // iterate IN ORDER (it's possible that not all vars are in curEntry.globals) - $.each(curEntry.ordered_globals, function(i, varname) { - var val = curEntry.globals[varname]; - // (use '!==' to do an EXACT match against undefined) - if (val !== undefined) { // might not be defined at this line, which is OKAY! - tbl.append('' + varname + ''); - var curTr = tbl.find('tr:last'); + var tbl = $(vizDiv + " #global_table"); - if (renderInline(val)) { - renderData(val, curTr.find("td.stackFrameValue"), false /* don't wrap it in a .heapObject div */); - } - else{ - // add a stub so that we can connect it with a connector later. - // IE needs this div to be NON-EMPTY in order to properly - // render jsPlumb endpoints, so that's why we add an " "! + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + // (use '!==' to do an EXACT match against undefined) + if (val !== undefined) { // might not be defined at this line, which is OKAY! + tbl.append('' + varname + ''); + var curTr = tbl.find('tr:last'); - // make sure varname doesn't contain any weird - // characters that are illegal for CSS ID's ... - var varDivID = 'global__' + varnameToCssID(varname); - curTr.find("td.stackFrameValue").append('
 
'); + if (isPrimitiveType(val)) { + renderPrimitiveObject(val, curTr.find("td.stackFrameValue")); + } + else{ + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! - assert(connectionEndpointIDs[varDivID] === undefined); - var heapObjID = 'heap_object_' + getObjectID(val); - connectionEndpointIDs[varDivID] = heapObjID; - } + // make sure varname doesn't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = 'global__' + varnameToCssID(varname); + curTr.find("td.stackFrameValue").append('
 
'); + + assert(connectionEndpointIDs[varDivID] === undefined); + var heapObjID = 'heap_object_' + getRefID(val); + connectionEndpointIDs[varDivID] = heapObjID; } - }); - } + } + }); } + + $.each(stack_to_render, function(i, e) { + renderStackFrame(e, i, e.is_zombie); + }); + + function renderStackFrame(frame, ind, is_zombie) { var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) @@ -965,7 +982,6 @@ function renderDataStructures(curEntry, vizDiv) { } $(vizDiv + " #stack #" + divID).append('
' + headerLabel + '
'); - if (frame.ordered_varnames.length > 0) { var tableID = divID + '_table'; $(vizDiv + " #stack #" + divID).append('
'); @@ -996,8 +1012,8 @@ function renderDataStructures(curEntry, vizDiv) { var curTr = tbl.find('tr:last'); - if (renderInline(val)) { - renderData(val, curTr.find("td.stackFrameValue"), false /* don't wrap it in a .heapObject div */); + if (isPrimitiveType(val)) { + renderPrimitiveObject(val, curTr.find("td.stackFrameValue")); } else { // add a stub so that we can connect it with a connector later. @@ -1014,127 +1030,11 @@ function renderDataStructures(curEntry, vizDiv) { connectionEndpointIDs[varDivID] = heapObjID; } }); - - } - - } - - - // first render the stack (and global vars) - renderGlobals(); - - // merge zombie_stack_locals and stack_locals into one master - // ordered list using some simple rules for aesthetics - var stack_to_render = []; - - // first push all regular stack entries backwards - if (curEntry.stack_locals) { - for (var i = curEntry.stack_locals.length - 1; i >= 0; i--) { - var entry = curEntry.stack_locals[i]; - entry.is_zombie = false; - entry.is_highlighted = (i == 0); - stack_to_render.push(entry); - } - } - - // zombie stack consists of exited functions that have returned nested functions - // push zombie stack entries at the BEGINNING of stack_to_render, - // EXCEPT put zombie entries BEHIND regular entries that are their parents - if (curEntry.zombie_stack_locals) { - - for (var i = curEntry.zombie_stack_locals.length - 1; i >= 0; i--) { - var entry = curEntry.zombie_stack_locals[i]; - entry.is_zombie = true; - entry.is_highlighted = false; // never highlight zombie entries - - // j should be 0 most of the time, so we're always inserting new - // elements to the front of stack_to_render (which is why we are - // iterating backwards over zombie_stack_locals). - var j = 0; - for (j = 0; j < stack_to_render.length; j++) { - if ($.inArray(stack_to_render[j].frame_id, entry.parent_frame_id_list) >= 0) { - continue; - } - break; - } - - stack_to_render.splice(j, 0, entry); } - } - $.each(stack_to_render, function(i, e) { - renderStackFrame(e, i, e.is_zombie); - }); - - - // then render the heap - - alreadyRenderedObjectIDs = {}; // set of object IDs that have already been rendered - - // if addToEnd is true, then APPEND to the end of the heap, - // otherwise PREPEND to the front - function renderHeapObjectDEPRECATED(obj, addToEnd) { - var objectID = getObjectID(obj); - - if (alreadyRenderedObjectIDs[objectID] === undefined) { - var toplevelHeapObjID = 'toplevel_heap_object_' + objectID; - var newDiv = '
'; - - if (addToEnd) { - $(vizDiv + ' #heap').append(newDiv); - } - else { - $(vizDiv + ' #heap').prepend(newDiv); - } - renderData(obj, $(vizDiv + ' #heap #' + toplevelHeapObjID), true); - - alreadyRenderedObjectIDs[objectID] = 1; - } - } - - - // if there are multiple aliases to the same object, we want to render - // the one deepest in the stack, so that we can hopefully prevent - // objects from jumping around as functions are called and returned. - // e.g., if a list L appears as a global variable and as a local in a - // function, we want to render L when rendering the global frame. - - // this is straightforward: just go through globals first and then - // each stack frame in order :) - - $.each(curEntry.ordered_globals, function(i, varname) { - var val = curEntry.globals[varname]; - if (!renderInline(val)) { - renderHeapObject(val, true); // APPEND - } - }); - - - $.each(stack_to_render, function(i, frame) { - var localVars = frame.encoded_locals; - - $.each(frame.ordered_varnames, function(i2, varname) { - - // don't render return values for zombie frames - if (frame.is_zombie && varname == '__return__') { - return; - } - - var val = localVars[varname]; - if (!renderInline(val)) { - renderHeapObject(val, true); // APPEND - } - }); - }); - - - // prepend heap header after all the dust settles: - $(vizDiv + ' #heap').prepend('
Objects
'); - - - // finally connect stack variables to heap objects via connectors + // finally add all the connectors! for (varID in connectionEndpointIDs) { var valueID = connectionEndpointIDs[varID]; jsPlumb.connect({source: varID, target: valueID}); From 82fae2921f1b4101be68b795310f30b131333ba8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 14:10:54 -0700 Subject: [PATCH 018/502] OK I THINK IT WORKS FOR NOW! --- PyTutorGAE/js/edu-python.js | 734 ++---------------------------------- 1 file changed, 35 insertions(+), 699 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index c4b58be25..fc86f592e 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -656,6 +656,20 @@ function renderDataStructures(curEntry, vizDiv) { */ + // Heap object rendering phase: + + + // Key: CSS ID of the div element representing the stack frame variable + // (for stack->heap connections) or heap object (for heap->heap connections) + // the format is: 'heap_pointer_src_' + // Value: CSS ID of the div element representing the value rendered in the heap + // (the format is: 'heap_object_') + var connectionEndpointIDs = {}; + var heapConnectionEndpointIDs = {}; // subset of connectionEndpointIDs for heap->heap connections + + var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* + + var renderedObjectIDs = {}; // set (TODO: refactor all sets to use d3.map) // count all toplevelHeapLayoutIDs as already rendered since we will render them @@ -676,9 +690,6 @@ function renderDataStructures(curEntry, vizDiv) { .enter().append('td') .attr('class', 'toplevelHeapObject') .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) - .append('div') - .attr('class', 'heapObject') - .attr('id', function(d, i) {return 'heap_object_' + d;}) .each(function(objID, i) { renderCompoundObject(objID, $(this), true); // label FOOBAR (see renderedObjectIDs) }); @@ -731,9 +742,30 @@ function renderDataStructures(curEntry, vizDiv) { if (!isTopLevel && (renderedObjectIDs[objID] != undefined)) { // TODO: render jsPlumb arrow source since this heap object has already been rendered + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + var srcDivID = 'heap_pointer_src_' + heap_pointer_src_id; + heap_pointer_src_id++; // just make sure each source has a UNIQUE ID + d3DomElement.append('
 
'); + + assert(connectionEndpointIDs[srcDivID] === undefined); + connectionEndpointIDs[srcDivID] = 'heap_object_' + objID; + + assert(heapConnectionEndpointIDs[srcDivID] === undefined); + heapConnectionEndpointIDs[srcDivID] = 'heap_object_' + objID; + return; // early return! } + + // wrap ALL compound objects in a heapObject div so that jsPlumb + // connectors can point to it: + d3DomElement.append('
'); + d3DomElement = $('#heap_object_' + objID); + + renderedObjectIDs[objID] = 1; var obj = curEntry.heap[objID]; @@ -889,18 +921,6 @@ function renderDataStructures(curEntry, vizDiv) { $(vizDiv + ' #heap').prepend('
Objects
'); - - // Key: CSS ID of the div element representing the stack frame variable - // (for stack->heap connections) or heap object (for heap->heap connections) - // the format is: 'heap_pointer_src_' - // Value: CSS ID of the div element representing the value rendered in the heap - // (the format is: 'heap_object_') - var connectionEndpointIDs = {}; - var heapConnectionEndpointIDs = {}; // subset of connectionEndpointIDs for heap->heap connections - - var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* - - // Render globals and then stack frames: // render all global variables IN THE ORDER they were created by the program, @@ -1102,690 +1122,6 @@ function renderDataStructures(curEntry, vizDiv) { } -// DEPRECATED! -function renderDataStructuresV2(curEntry, vizDiv) { - - // VERY VERY IMPORTANT --- and reset ALL jsPlumb state to prevent - // weird mis-behavior!!! - jsPlumb.reset(); - - - // store a set of IDs of compound objects that have already been - // rendered in this particular call - var compound_objects_already_rendered = {}; - - - $(vizDiv).empty(); // jQuery empty() is better than .html('') - - - // create a tabular layout for stack and heap side-by-side - // TODO: figure out how to do this using CSS in a robust way! - $(vizDiv).html('
'); - - $(vizDiv + " #stack").append('
Frames
'); - - - var nonEmptyGlobals = false; - var curGlobalFields = {}; - if (curEntry.globals != undefined) { - // use plain ole' iteration rather than jQuery $.each() since - // the latter breaks when a variable is named "length" - for (varname in curEntry.globals) { - curGlobalFields[varname] = true; - nonEmptyGlobals = true; - } - } - - // Key: CSS ID of the div element representing the variable - // (or heap object, for heap->heap connections, where the - // format is: 'heap_pointer_src_') - // Value: CSS ID of the div element representing the value rendered in the heap - // (the format is: 'heap_object_') - var connectionEndpointIDs = {}; - var heapConnectionEndpointIDs = {}; // subset of connectionEndpointIDs for heap->heap connections - - var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* - - - // nested helper functions are SUPER-helpful! - - // render the JS data object obj inside of jDomElt, - // which is a jQuery wrapped DOM object - // (obj is in a format encoded by pg_encoder.py on the backend) - // isTopLevel is true only if this is a top-level heap object (rather - // than a nested sub-object) - function renderData(obj, jDomElt, isTopLevel) { - var typ = typeof obj; - var oID = getObjectID(obj); - - if (isPrimitiveType(obj)) { - // only wrap primitive types in heap objects if they are at the - // TOP-LEVEL (otherwise just render them inline within other data - // structures) - if (isTopLevel) { - jDomElt.append('
'); - jDomElt = $('#heap_object_' + oID); - } - - if (obj == null) { - jDomElt.append('None'); - } - else if (typ == "number") { - jDomElt.append('' + obj + ''); - } - else if (typ == "boolean") { - if (obj) { - jDomElt.append('True'); - } - else { - jDomElt.append('False'); - } - } - else if (typ == "string") { - // escape using htmlspecialchars to prevent HTML/script injection - var literalStr = htmlspecialchars(obj); - - // print as a double-quoted string literal - literalStr = literalStr.replace(new RegExp('\"', 'g'), '\\"'); // replace ALL - literalStr = '"' + literalStr + '"'; - - jDomElt.append('' + literalStr + ''); - } - } - else { - assert(typ == "object"); - assert($.isArray(obj)); - - if ((compound_objects_already_rendered[oID] !== undefined) || - (obj[0] == 'CIRCULAR_REF')) { - // render heap->heap connection - if (!isTopLevel) { - // add a stub so that we can connect it with a connector later. - // IE needs this div to be NON-EMPTY in order to properly - // render jsPlumb endpoints, so that's why we add an " "! - - var srcDivID = 'heap_pointer_src_' + heap_pointer_src_id; - heap_pointer_src_id++; // just make sure each source has a UNIQUE ID - jDomElt.append('
 
'); - - assert(connectionEndpointIDs[srcDivID] === undefined); - connectionEndpointIDs[srcDivID] = 'heap_object_' + oID; - - assert(heapConnectionEndpointIDs[srcDivID] === undefined); - heapConnectionEndpointIDs[srcDivID] = 'heap_object_' + oID; - } - } - else { - // wrap compound objects in a heapObject div so that jsPlumb - // connectors can point to it: - jDomElt.append('
'); - jDomElt = $('#heap_object_' + oID); - - if (obj[0] == 'LIST') { - assert(obj.length >= 2); - if (obj.length == 2) { - jDomElt.append('
empty list
'); - } - else { - jDomElt.append('
list
'); - - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - var headerTr = tbl.find('tr:first'); - var contentTr = tbl.find('tr:last'); - jQuery.each(obj, function(ind, val) { - if (ind < 2) return; // skip 'LIST' tag and ID entry - - // add a new column and then pass in that newly-added column - // as jDomElt to the recursive call to child: - headerTr.append(''); - headerTr.find('td:last').append(ind - 2); - - contentTr.append(''); - - // heuristic for rendering top-level 1-D linked data structures as separate top-level objects - // (and then drawing an arrow to the next element using a regular renderData() call) - if (isTopLevel && structurallyEquivalent(obj, val)) { - var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); - - var enclosingTr = jDomElt.parent().parent(); - enclosingTr.append(''); - renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); - } - - renderData(val, contentTr.find('td:last'), false); - }); - } - } - else if (obj[0] == 'TUPLE') { - assert(obj.length >= 2); - if (obj.length == 2) { - jDomElt.append('
empty tuple
'); - } - else { - jDomElt.append('
tuple
'); - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - var headerTr = tbl.find('tr:first'); - var contentTr = tbl.find('tr:last'); - jQuery.each(obj, function(ind, val) { - if (ind < 2) return; // skip 'TUPLE' tag and ID entry - - // add a new column and then pass in that newly-added column - // as jDomElt to the recursive call to child: - headerTr.append(''); - headerTr.find('td:last').append(ind - 2); - - contentTr.append(''); - - // heuristic for rendering top-level 1-D linked data structures as separate top-level objects - // (and then drawing an arrow to the next element using a regular renderData() call) - if (isTopLevel && structurallyEquivalent(obj, val)) { - var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); - - var enclosingTr = jDomElt.parent().parent(); - enclosingTr.append(''); - renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); - } - - renderData(val, contentTr.find('td:last'), false); - }); - } - } - else if (obj[0] == 'SET') { - assert(obj.length >= 2); - if (obj.length == 2) { - jDomElt.append('
empty set
'); - } - else { - jDomElt.append('
set
'); - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - // create an R x C matrix: - var numElts = obj.length - 2; - // gives roughly a 3x5 rectangular ratio, square is too, err, - // 'square' and boring - var numRows = Math.round(Math.sqrt(numElts)); - if (numRows > 3) { - numRows -= 1; - } - - var numCols = Math.round(numElts / numRows); - // round up if not a perfect multiple: - if (numElts % numRows) { - numCols += 1; - } - - jQuery.each(obj, function(ind, val) { - if (ind < 2) return; // skip 'SET' tag and ID entry - - if (((ind - 2) % numCols) == 0) { - tbl.append(''); - } - - var curTr = tbl.find('tr:last'); - curTr.append(''); - renderData(val, curTr.find('td:last'), false); - }); - } - } - else if (obj[0] == 'DICT') { - assert(obj.length >= 2); - if (obj.length == 2) { - jDomElt.append('
empty dict
'); - } - else { - jDomElt.append('
dict
'); - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - $.each(obj, function(ind, kvPair) { - if (ind < 2) return; // skip 'DICT' tag and ID entry - - tbl.append(''); - var newRow = tbl.find('tr:last'); - var keyTd = newRow.find('td:first'); - var valTd = newRow.find('td:last'); - - var key = kvPair[0]; - var val = kvPair[1]; - - renderData(key, keyTd, false); - - // heuristic for rendering top-level 1-D linked data structures as separate top-level objects - // (and then drawing an arrow to the next element using a regular renderData() call) - if (isTopLevel && structurallyEquivalent(obj, val)) { - var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); - - var enclosingTr = jDomElt.parent().parent(); - enclosingTr.append(''); - renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); - } - - renderData(val, valTd, false); - }); - } - } - else if (obj[0] == 'INSTANCE') { - assert(obj.length >= 3); - jDomElt.append('
' + obj[1] + ' instance
'); - - if (obj.length > 3) { - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - $.each(obj, function(ind, kvPair) { - if (ind < 3) return; // skip type tag, class name, and ID entry - - tbl.append(''); - var newRow = tbl.find('tr:last'); - var keyTd = newRow.find('td:first'); - var valTd = newRow.find('td:last'); - - // the keys should always be strings, so render them directly (and without quotes): - assert(typeof kvPair[0] == "string"); - var attrnameStr = htmlspecialchars(kvPair[0]); - keyTd.append('' + attrnameStr + ''); - - // values can be arbitrary objects, so recurse: - var val = kvPair[1]; - - // heuristic for rendering top-level 1-D linked data structures as separate top-level objects - // (and then drawing an arrow to the next element using a regular renderData() call) - if (isTopLevel && structurallyEquivalent(obj, val)) { - var childHeapObjectID = 'toplevel_heap_object_' + getObjectID(val); - - var enclosingTr = jDomElt.parent().parent(); - enclosingTr.append(''); - renderData(val, enclosingTr.find('#' + childHeapObjectID), true /* isTopLevel */); - } - - renderData(val, valTd, false); - }); - } - } - else if (obj[0] == 'CLASS') { - assert(obj.length >= 4); - var superclassStr = ''; - if (obj[3].length > 0) { - superclassStr += ('[extends ' + obj[3].join(',') + '] '); - } - - jDomElt.append('
' + obj[1] + ' class ' + superclassStr + '
'); - - if (obj.length > 4) { - jDomElt.append('
'); - var tbl = jDomElt.children('table'); - $.each(obj, function(ind, kvPair) { - if (ind < 4) return; // skip type tag, class name, ID, and superclasses entries - - tbl.append(''); - var newRow = tbl.find('tr:last'); - var keyTd = newRow.find('td:first'); - var valTd = newRow.find('td:last'); - - // the keys should always be strings, so render them directly (and without quotes): - assert(typeof kvPair[0] == "string"); - var attrnameStr = htmlspecialchars(kvPair[0]); - keyTd.append('' + attrnameStr + ''); - - // values can be arbitrary objects, so recurse: - renderData(kvPair[1], valTd, false); - }); - } - } - else if (obj[0] == 'FUNCTION') { - assert(obj.length == 4); - id = obj[1]; - funcName = htmlspecialchars(obj[2]); // for displaying names like '' - parentFrameID = obj[3]; // optional - - if (parentFrameID) { - jDomElt.append('
function ' + funcName + ' [parent=f'+ parentFrameID + ']
'); - } - else { - jDomElt.append('
function ' + funcName + '
'); - } - - } - else { - // render custom data type - assert(obj.length == 3); - typeName = obj[0]; - id = obj[1]; - strRepr = obj[2]; - - // if obj[2] is like ' at 0x84760>', - // then display an abbreviated version rather than the gory details - noStrReprRE = /<.* at 0x.*>/; - if (noStrReprRE.test(strRepr)) { - jDomElt.append('' + typeName + ''); - } - else { - strRepr = htmlspecialchars(strRepr); // escape strings! - - // warning: we're overloading tuple elts for custom data types - jDomElt.append('
' + typeName + '
'); - jDomElt.append('
' + strRepr + '
'); - } - } - - compound_objects_already_rendered[oID] = 1; // add to set - } - } - } - - - function renderGlobals() { - // render all global variables IN THE ORDER they were created by the program, - // in order to ensure continuity: - if (curEntry.ordered_globals.length > 0) { - $(vizDiv + " #stack").append('
Global variables
'); - - $(vizDiv + " #stack #globals").append('
'); - - var tbl = $(vizDiv + " #global_table"); - // iterate IN ORDER (it's possible that not all vars are in curEntry.globals) - $.each(curEntry.ordered_globals, function(i, varname) { - var val = curEntry.globals[varname]; - // (use '!==' to do an EXACT match against undefined) - if (val !== undefined) { // might not be defined at this line, which is OKAY! - tbl.append('' + varname + ''); - var curTr = tbl.find('tr:last'); - - if (renderInline(val)) { - renderData(val, curTr.find("td.stackFrameValue"), false /* don't wrap it in a .heapObject div */); - } - else{ - // add a stub so that we can connect it with a connector later. - // IE needs this div to be NON-EMPTY in order to properly - // render jsPlumb endpoints, so that's why we add an " "! - - // make sure varname doesn't contain any weird - // characters that are illegal for CSS ID's ... - var varDivID = 'global__' + varnameToCssID(varname); - curTr.find("td.stackFrameValue").append('
 
'); - - assert(connectionEndpointIDs[varDivID] === undefined); - var heapObjID = 'heap_object_' + getObjectID(val); - connectionEndpointIDs[varDivID] = heapObjID; - } - } - }); - } - } - - function renderStackFrame(frame, ind, is_zombie) { - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like - var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) - - // optional (btw, this isn't a CSS id) - var parentFrameID = null; - if (frame.parent_frame_id_list.length > 0) { - parentFrameID = frame.parent_frame_id_list[0]; - } - - var localVars = frame.encoded_locals - - // the stackFrame div's id is simply its index ("stack") - - var divClass, divID, headerDivID; - if (is_zombie) { - divClass = 'zombieStackFrame'; - divID = "zombie_stack" + ind; - headerDivID = "zombie_stack_header" + ind; - } - else { - divClass = 'stackFrame'; - divID = "stack" + ind; - headerDivID = "stack_header" + ind; - } - - $(vizDiv + " #stack").append('
'); - - var headerLabel = funcName + '()'; - if (frameID) { - headerLabel = 'f' + frameID + ': ' + headerLabel; - } - if (parentFrameID) { - headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; - } - $(vizDiv + " #stack #" + divID).append('
' + headerLabel + '
'); - - - if (frame.ordered_varnames.length > 0) { - var tableID = divID + '_table'; - $(vizDiv + " #stack #" + divID).append('
'); - - var tbl = $(vizDiv + " #" + tableID); - - $.each(frame.ordered_varnames, function(xxx, varname) { - var val = localVars[varname]; - - // don't render return values for zombie frames - if (is_zombie && varname == '__return__') { - return; - } - - // special treatment for displaying return value and indicating - // that the function is about to return to its caller - // - // DON'T do this for zombie frames - if (varname == '__return__' && !is_zombie) { - assert(curEntry.event == 'return'); // sanity check - - tbl.append('About to return'); - tbl.append('Return value:'); - } - else { - tbl.append('' + varname + ''); - } - - var curTr = tbl.find('tr:last'); - - if (renderInline(val)) { - renderData(val, curTr.find("td.stackFrameValue"), false /* don't wrap it in a .heapObject div */); - } - else { - // add a stub so that we can connect it with a connector later. - // IE needs this div to be NON-EMPTY in order to properly - // render jsPlumb endpoints, so that's why we add an " "! - - // make sure varname doesn't contain any weird - // characters that are illegal for CSS ID's ... - var varDivID = divID + '__' + varnameToCssID(varname); - curTr.find("td.stackFrameValue").append('
 
'); - - assert(connectionEndpointIDs[varDivID] === undefined); - var heapObjID = 'heap_object_' + getObjectID(val); - connectionEndpointIDs[varDivID] = heapObjID; - } - }); - - } - - } - - - // first render the stack (and global vars) - renderGlobals(); - - // merge zombie_stack_locals and stack_locals into one master - // ordered list using some simple rules for aesthetics - var stack_to_render = []; - - // first push all regular stack entries backwards - if (curEntry.stack_locals) { - for (var i = curEntry.stack_locals.length - 1; i >= 0; i--) { - var entry = curEntry.stack_locals[i]; - entry.is_zombie = false; - entry.is_highlighted = (i == 0); - stack_to_render.push(entry); - } - } - - // zombie stack consists of exited functions that have returned nested functions - // push zombie stack entries at the BEGINNING of stack_to_render, - // EXCEPT put zombie entries BEHIND regular entries that are their parents - if (curEntry.zombie_stack_locals) { - - for (var i = curEntry.zombie_stack_locals.length - 1; i >= 0; i--) { - var entry = curEntry.zombie_stack_locals[i]; - entry.is_zombie = true; - entry.is_highlighted = false; // never highlight zombie entries - - // j should be 0 most of the time, so we're always inserting new - // elements to the front of stack_to_render (which is why we are - // iterating backwards over zombie_stack_locals). - var j = 0; - for (j = 0; j < stack_to_render.length; j++) { - if ($.inArray(stack_to_render[j].frame_id, entry.parent_frame_id_list) >= 0) { - continue; - } - break; - } - - stack_to_render.splice(j, 0, entry); - } - - } - - - $.each(stack_to_render, function(i, e) { - renderStackFrame(e, i, e.is_zombie); - }); - - - // then render the heap - - alreadyRenderedObjectIDs = {}; // set of object IDs that have already been rendered - - // if addToEnd is true, then APPEND to the end of the heap, - // otherwise PREPEND to the front - function renderHeapObject(obj, addToEnd) { - var objectID = getObjectID(obj); - - if (alreadyRenderedObjectIDs[objectID] === undefined) { - var toplevelHeapObjID = 'toplevel_heap_object_' + objectID; - var newDiv = '
'; - - if (addToEnd) { - $(vizDiv + ' #heap').append(newDiv); - } - else { - $(vizDiv + ' #heap').prepend(newDiv); - } - renderData(obj, $(vizDiv + ' #heap #' + toplevelHeapObjID), true); - - alreadyRenderedObjectIDs[objectID] = 1; - } - } - - - // if there are multiple aliases to the same object, we want to render - // the one deepest in the stack, so that we can hopefully prevent - // objects from jumping around as functions are called and returned. - // e.g., if a list L appears as a global variable and as a local in a - // function, we want to render L when rendering the global frame. - - // this is straightforward: just go through globals first and then - // each stack frame in order :) - - $.each(curEntry.ordered_globals, function(i, varname) { - var val = curEntry.globals[varname]; - if (!renderInline(val)) { - renderHeapObject(val, true); // APPEND - } - }); - - - $.each(stack_to_render, function(i, frame) { - var localVars = frame.encoded_locals; - - $.each(frame.ordered_varnames, function(i2, varname) { - - // don't render return values for zombie frames - if (frame.is_zombie && varname == '__return__') { - return; - } - - var val = localVars[varname]; - if (!renderInline(val)) { - renderHeapObject(val, true); // APPEND - } - }); - }); - - - // prepend heap header after all the dust settles: - $(vizDiv + ' #heap').prepend('
Objects
'); - - - // finally connect stack variables to heap objects via connectors - for (varID in connectionEndpointIDs) { - var valueID = connectionEndpointIDs[varID]; - jsPlumb.connect({source: varID, target: valueID}); - } - - - function highlight_frame(frameID) { - var allConnections = jsPlumb.getConnections(); - for (var i = 0; i < allConnections.length; i++) { - var c = allConnections[i]; - - // this is VERY VERY fragile code, since it assumes that going up - // five layers of parent() calls will get you from the source end - // of the connector to the enclosing stack frame - var stackFrameDiv = c.source.parent().parent().parent().parent().parent(); - - // if this connector starts in the selected stack frame ... - if (stackFrameDiv.attr('id') == frameID) { - // then HIGHLIGHT IT! - c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); - c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); - c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible - - // ... and move it to the VERY FRONT - $(c.canvas).css("z-index", 1000); - } - // for heap->heap connectors - else if (heapConnectionEndpointIDs[c.endpoints[0].elementId] !== undefined) { - // then HIGHLIGHT IT! - c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); // make thinner - c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); - c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible - //c.setConnector([ "Bezier", {curviness: 80} ]); // make it more curvy - c.setConnector([ "StateMachine" ]); - c.addOverlay([ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]); - } - else { - // else unhighlight it - c.setPaintStyle({lineWidth:1, strokeStyle: lightGray}); - c.endpoints[0].setPaintStyle({fillStyle: lightGray}); - c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible - $(c.canvas).css("z-index", 0); - } - } - - // clear everything, then just activate $(this) one ... - $(".stackFrame").removeClass("highlightedStackFrame"); - $('#' + frameID).addClass("highlightedStackFrame"); - } - - - // highlight the top-most non-zombie stack frame or, if not available, globals - var frame_already_highlighted = false; - $.each(stack_to_render, function(i, e) { - if (e.is_highlighted) { - highlight_frame('stack' + i); - frame_already_highlighted = true; - } - }); - - if (!frame_already_highlighted) { - highlight_frame('globals'); - } - -} - function isPrimitiveType(obj) { var typ = typeof obj; return ((obj == null) || (typ != "object")); From 40cddd860a03231328a110292908317974745d9d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 15:16:55 -0700 Subject: [PATCH 019/502] added VCR controls back --- PyTutorGAE/css/edu-python.css | 2 +- PyTutorGAE/js/edu-python.js | 53 +++++++++++++++++++++++++++++++++++ PyTutorGAE/tutor.html | 6 +++- 3 files changed, 59 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/css/edu-python.css b/PyTutorGAE/css/edu-python.css index a43b74240..a9869b153 100644 --- a/PyTutorGAE/css/edu-python.css +++ b/PyTutorGAE/css/edu-python.css @@ -240,7 +240,7 @@ button.smallBtn { /* VCR control buttons for stepping through execution */ #vcrControls { - margin-top: 10px; + margin-top: 15px; margin-bottom: 15px; } diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index fc86f592e..392086b76 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -280,6 +280,23 @@ function updateOutput() { } + $("#vcrControls #jmpFirstInstr").attr("disabled", false); + $("#vcrControls #jmpStepBack").attr("disabled", false); + $("#vcrControls #jmpStepFwd").attr("disabled", false); + $("#vcrControls #jmpLastInstr").attr("disabled", false); + + if (curInstr == 0) { + $("#vcrControls #jmpFirstInstr").attr("disabled", true); + $("#vcrControls #jmpStepBack").attr("disabled", true); + } + if (curInstr == (totalInstrs-1)) { + $("#vcrControls #jmpLastInstr").attr("disabled", true); + $("#vcrControls #jmpStepFwd").attr("disabled", true); + } + + + + // PROGRAMMATICALLY change the value, so evt.originalEvent should be undefined $('#executionSlider').slider('value', curInstr); @@ -921,7 +938,10 @@ function renderDataStructures(curEntry, vizDiv) { $(vizDiv + ' #heap').prepend('
Objects
'); + // Render globals and then stack frames: + // TODO: could convert to using d3 to map globals and stack frames directly into stack frame divs + // (which might make it easier to do smooth transitions) // render all global variables IN THE ORDER they were created by the program, // in order to ensure continuity: @@ -1447,6 +1467,39 @@ function clearSliderBreakpoints() { // initialization function that should be called when the page is loaded function eduPythonCommonInit() { + + $("#jmpFirstInstr").click(function() { + curInstr = 0; + updateOutput(); + }); + + $("#jmpLastInstr").click(function() { + curInstr = curTrace.length - 1; + updateOutput(); + }); + + $("#jmpStepBack").click(function() { + if (curInstr > 0) { + curInstr -= 1; + updateOutput(); + } + }); + + $("#jmpStepFwd").click(function() { + if (curInstr < curTrace.length - 1) { + curInstr += 1; + updateOutput(); + } + }); + + // disable controls initially ... + $("#vcrControls #jmpFirstInstr").attr("disabled", true); + $("#vcrControls #jmpStepBack").attr("disabled", true); + $("#vcrControls #jmpStepFwd").attr("disabled", true); + $("#vcrControls #jmpLastInstr").attr("disabled", true); + + + // set some sensible jsPlumb defaults jsPlumb.Defaults.Endpoint = ["Dot", {radius:3}]; //jsPlumb.Defaults.Endpoint = ["Rectangle", {width:3, height:3}]; diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index f211de028..5265362f8 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -172,7 +172,11 @@
- + + + Step ? of ? + +
From a709e60626ac0be6886cfc185c92e359325a6c20 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 16:17:34 -0700 Subject: [PATCH 020/502] display syntax errors in edit mode without jumping to viz mode --- PyTutorGAE/css/edu-python.css | 4 ++++ PyTutorGAE/js/edu-python-tutor.js | 35 +++++++++++++++++++++++++------ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/PyTutorGAE/css/edu-python.css b/PyTutorGAE/css/edu-python.css index a9869b153..33718fb00 100644 --- a/PyTutorGAE/css/edu-python.css +++ b/PyTutorGAE/css/edu-python.css @@ -698,3 +698,7 @@ div#submittedSolutionDisplay { fill: #F15149; } + +/* necessary for CodeMirror line highlighting to work! */ +.CodeMirror .errorLine { background: #F89D99 !important; } + diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js index 3dd644b7d..8dcb226fa 100644 --- a/PyTutorGAE/js/edu-python-tutor.js +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -58,7 +58,7 @@ $(document).ready(function() { pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { mode: 'python', lineNumbers: true, - tabSize: 2, + tabSize: 2 }); pyInputCodeMirror.setSize(null, '450px'); @@ -133,11 +133,34 @@ $(document).ready(function() { // TODO: is GET or POST best here? $.get("exec", - {user_script : pyInputCodeMirror.getValue()}, - function(traceData) { - enterVisualizeMode(traceData, pyInputCodeMirror.getValue()); - }, - "json"); + {user_script : pyInputCodeMirror.getValue()}, + function(traceData) { + // don't enter visualize mode if there are killer errors: + if (!traceData || + ((traceData.length == 1) && traceData[0].event == 'uncaught_exception')) { + var errorLineNo = traceData[0].line - 1; /* CodeMirror lines are zero-indexed */ + if (errorLineNo !== undefined) { + // highlight the faulting line in pyInputCodeMirror + pyInputCodeMirror.focus(); + pyInputCodeMirror.setCursor(errorLineNo, 0); + pyInputCodeMirror.setLineClass(errorLineNo, null, 'errorLine'); + + pyInputCodeMirror.setOption('onChange', function() { + pyInputCodeMirror.setLineClass(errorLineNo, null, null); // reset line back to normal + pyInputCodeMirror.setOption('onChange', null); // cancel + }); + } + + alert(traceData[0].exception_msg); + + $('#executeBtn').html("Visualize execution"); + $('#executeBtn').attr('disabled', false); + } + else { + enterVisualizeMode(traceData, pyInputCodeMirror.getValue()); + } + }, + "json"); }); From 403a285a06535f0fc975bcb7678ca3269422bfcf Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 16:23:20 -0700 Subject: [PATCH 021/502] bleh --- PyTutorGAE/js/edu-python.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 392086b76..fc98d99e2 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -1590,7 +1590,10 @@ function eduPythonCommonInit() { // log a generic AJAX error handler $(document).ajaxError(function() { - alert("Uh oh, the server returned an error, boo :( Please reload the page and try executing a different Python script."); + alert("Server error (possibly due to memory/resource overload)."); + + $('#executeBtn').html("Visualize execution"); + $('#executeBtn').attr('disabled', false); }); } From 4497ce9025af54c88a7838576c92f4d112ba20ea Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 17:10:52 -0700 Subject: [PATCH 022/502] separate hover and clicked breakpoints --- PyTutorGAE/css/edu-python.css | 4 --- PyTutorGAE/js/edu-python.js | 50 ++++++++++++++++++++++++++++++----- 2 files changed, 43 insertions(+), 11 deletions(-) diff --git a/PyTutorGAE/css/edu-python.css b/PyTutorGAE/css/edu-python.css index 33718fb00..13667623e 100644 --- a/PyTutorGAE/css/edu-python.css +++ b/PyTutorGAE/css/edu-python.css @@ -694,10 +694,6 @@ div#submittedSolutionDisplay { margin-top: -7px; /* make it butt up against #executionSlider */ } -#sliderOverlay { - fill: #F15149; -} - /* necessary for CodeMirror line highlighting to work! */ .CodeMirror .errorLine { background: #F89D99 !important; } diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index fc98d99e2..95a2fd330 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -44,12 +44,15 @@ var visitedLineColor = '#3D58A2'; var lightGray = "#cccccc"; var darkBlue = "#3D58A2"; +var medBlue = "#41507A"; +var medLightBlue = "#6F89D1"; var lightBlue = "#899CD1"; var pinkish = "#F15149"; var lightPink = "#F89D99"; var darkRed = "#9D1E18"; var breakpointColor = pinkish; +var hoverBreakpointColor = medLightBlue; var keyStuckDown = false; @@ -1265,14 +1268,18 @@ function renderPyCodeOutput(codeStr) { } }) .on('mouseover', function() { - setBreakpoint(this); + setHoverBreakpoint(this); }) .on('mouseout', function() { + hoverBreakpoints = {}; + var breakpointHere = d3.select(this).datum().breakpointHere; if (!breakpointHere) { unsetBreakpoint(this); } + + renderSliderBreakpoints(); // get rid of hover breakpoint colors }) .on('mousedown', function() { // don't do anything if exePts is empty @@ -1299,13 +1306,14 @@ function renderPyCodeOutput(codeStr) { -var breakpointLines = {}; // set of lines to set as breakpoints +var breakpoints = {}; // set of execution points to set as breakpoints var sortedBreakpointsList = []; // sorted and synced with breakpointLines +var hoverBreakpoints = {}; // set of breakpoints because we're HOVERING over a given line function _getSortedBreakpointsList() { var ret = []; - for (var k in breakpointLines) { + for (var k in breakpoints) { ret.push(Number(k)); // these should be NUMBERS, not strings } ret.sort(function(x,y){return x-y}); // WTF, javascript sort is lexicographic by default! @@ -1314,7 +1322,7 @@ function _getSortedBreakpointsList() { function addToBreakpoints(executionPoints) { $.each(executionPoints, function(i, e) { - breakpointLines[e] = 1; + breakpoints[e] = 1; }); sortedBreakpointsList = _getSortedBreakpointsList(); @@ -1322,7 +1330,7 @@ function addToBreakpoints(executionPoints) { function removeFromBreakpoints(executionPoints) { $.each(executionPoints, function(i, e) { - delete breakpointLines[e]; + delete breakpoints[e]; }); sortedBreakpointsList = _getSortedBreakpointsList(); @@ -1378,6 +1386,25 @@ function findNextBreakpoint(c) { } +function setHoverBreakpoint(t) { + var exePts = d3.select(t).datum().executionPoints; + + // don't do anything if exePts is empty + // (i.e., this line was never executed) + if (!exePts || exePts.length == 0) { + return; + } + + hoverBreakpoints = {}; + $.each(exePts, function(i, e) { + hoverBreakpoints[e] = 1; + }); + + addToBreakpoints(exePts); + renderSliderBreakpoints(); +} + + function setBreakpoint(t) { var exePts = d3.select(t).datum().executionPoints; @@ -1453,13 +1480,22 @@ function renderSliderBreakpoints() { }) .attr('y', 0) .attr('width', 2) - .attr('height', 12); + .attr('height', 12) + .style('fill', function(d) { + if (hoverBreakpoints[d] === undefined) { + return breakpointColor; + } + else { + return hoverBreakpointColor; + } + }); } function clearSliderBreakpoints() { - breakpointLines = {}; + breakpoints = {}; sortedBreakpointsList = []; + hoverBreakpoints = {}; renderSliderBreakpoints(); } From ad6bf8787d50317bfecae747788412e406273772 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 17:13:58 -0700 Subject: [PATCH 023/502] subtle usability improvement for LEFT and RIGHT arrows --- PyTutorGAE/js/edu-python.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 95a2fd330..15699281d 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -1570,6 +1570,9 @@ function eduPythonCommonInit() { if (prevBreakpoint != -1) { curInstr = prevBreakpoint; } + else { + curInstr -= 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint + } } else { curInstr -= 1; @@ -1589,6 +1592,9 @@ function eduPythonCommonInit() { if (nextBreakpoint != -1) { curInstr = nextBreakpoint; } + else { + curInstr += 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint + } } else { curInstr += 1; From a070709bc7bf9a66d05a92fd2112fec613841b0b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 17:26:47 -0700 Subject: [PATCH 024/502] minor --- PyTutorGAE/css/edu-python.css | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/PyTutorGAE/css/edu-python.css b/PyTutorGAE/css/edu-python.css index 13667623e..6cb3807f5 100644 --- a/PyTutorGAE/css/edu-python.css +++ b/PyTutorGAE/css/edu-python.css @@ -383,13 +383,10 @@ table.dictTbl { border-spacing: 1px; } -table.dictTbl tr.dictEntry { - border: 1px #111111 solid; -} table.dictTbl td.dictKey, table.instTbl td.instKey { - background-color: #ffffff; + background-color: white; } table.dictTbl, @@ -440,6 +437,7 @@ table.instTbl { border-spacing: 1px; } +table.dictTbl tr.dictEntry, table.instTbl tr.instEntry { border: 1px #555555 solid; } From f31edd99a1fc4e3193c6abe0f56a39b441d79282 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 4 Aug 2012 23:02:27 -0700 Subject: [PATCH 025/502] try some experimental D3 stuff --- PyTutorGAE/js/tmp-mess-with-d3/edu-python.js | 1684 ++++++++++++++++++ PyTutorGAE/js/tmp-mess-with-d3/tutor.html | 255 +++ 2 files changed, 1939 insertions(+) create mode 100644 PyTutorGAE/js/tmp-mess-with-d3/edu-python.js create mode 100644 PyTutorGAE/js/tmp-mess-with-d3/tutor.html diff --git a/PyTutorGAE/js/tmp-mess-with-d3/edu-python.js b/PyTutorGAE/js/tmp-mess-with-d3/edu-python.js new file mode 100644 index 000000000..947f9f568 --- /dev/null +++ b/PyTutorGAE/js/tmp-mess-with-d3/edu-python.js @@ -0,0 +1,1684 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// TODO: look into using the d3.map class instead of direct object operations in js, +// since the latter might exhibit funny behavior for certain reserved keywords + + +// code that is common to all Online Python Tutor pages + +var appMode = 'edit'; // 'edit', 'visualize', or 'grade' (only for question.html) + + +/* colors - see edu-python.css */ +var lightYellow = '#F5F798'; +var lightLineColor = '#FFFFCC'; +var errorColor = '#F87D76'; +var visitedLineColor = '#3D58A2'; + +var lightGray = "#cccccc"; +var darkBlue = "#3D58A2"; +var medBlue = "#41507A"; +var medLightBlue = "#6F89D1"; +var lightBlue = "#899CD1"; +var pinkish = "#F15149"; +var lightPink = "#F89D99"; +var darkRed = "#9D1E18"; + +var breakpointColor = pinkish; +var hoverBreakpointColor = medLightBlue; + + +var keyStuckDown = false; + + +// ugh globals! should really refactor into a "current state" object or +// something like that ... +var curTrace = null; +var curInputCode = null; +var curInstr = 0; + +var preseededCode = null; // if you passed in a 'code=' in the URL, then set this var +var preseededCurInstr = null; // if you passed in a 'curInstr=' in the URL, then set this var + + +// an array of objects with the following fields: +// 'text' - the text of the line of code +// 'lineNumber' - one-indexed (always the array index + 1) +// 'executionPoints' - an ordered array of zero-indexed execution points where this line was executed +// 'backgroundColor' - current code output line background color +// 'breakpointHere' - has a breakpoint been set here? +var codeOutputLines = []; + +var visitedLinesSet = {} // YUCKY GLOBAL! + + + +// true iff trace ended prematurely since maximum instruction limit has +// been reached +var instrLimitReached = false; + +function assert(cond) { + if (!cond) { + alert("Error: ASSERTION FAILED"); + } +} + +// taken from http://www.toao.net/32-my-htmlspecialchars-function-for-javascript +function htmlspecialchars(str) { + if (typeof(str) == "string") { + str = str.replace(/&/g, "&"); /* must do & first */ + + // ignore these for now ... + //str = str.replace(/"/g, """); + //str = str.replace(/'/g, "'"); + + str = str.replace(//g, ">"); + + // replace spaces: + str = str.replace(/ /g, " "); + } + return str; +} + +function processTrace(jumpToEnd) { + curInstr = 0; + + // only do this at most ONCE, and then clear out preseededCurInstr + if (preseededCurInstr && preseededCurInstr < curTrace.length) { // NOP anyways if preseededCurInstr is 0 + curInstr = preseededCurInstr; + preseededCurInstr = null; + } + + // delete all stale output + $("#pyStdout").val(''); + + if (curTrace.length > 0) { + var lastEntry = curTrace[curTrace.length - 1]; + + // GLOBAL! + instrLimitReached = (lastEntry.event == 'instruction_limit_reached'); + + if (instrLimitReached) { + curTrace.pop() // kill last entry + var warningMsg = lastEntry.exception_msg; + $("#errorOutput").html(htmlspecialchars(warningMsg)); + $("#errorOutput").show(); + } + // as imran suggests, for a (non-error) one-liner, SNIP off the + // first instruction so that we start after the FIRST instruction + // has been executed ... + else if (curTrace.length == 2) { + curTrace.shift(); + } + + + if (jumpToEnd) { + // if there's an exception, then jump to the FIRST occurrence of + // that exception. otherwise, jump to the very end of execution. + curInstr = curTrace.length - 1; + + for (var i = 0; i < curTrace.length; i++) { + var curEntry = curTrace[i]; + if (curEntry.event == 'exception' || + curEntry.event == 'uncaught_exception') { + curInstr = i; + break; + } + } + } + + } + + + // remove any existing sliders + $('#executionSlider').slider('destroy'); + $('#executionSlider').empty(); + + $('#executionSlider').slider({ + min: 0, + max: curTrace.length - 1, + step: 1 + + }); + + //disable keyboard actions on the slider itself (to prevent double-firing of events) + $("#executionSlider .ui-slider-handle").unbind('keydown'); + // make skinnier and taller + $("#executionSlider .ui-slider-handle").css('width', '0.8em'); + $("#executionSlider .ui-slider-handle").css('height', '1.4em'); + + $(".ui-widget-content").css('font-size', '0.9em'); + + updateOutput(); +} + +function highlightCodeLine(curLine, hasError, isTerminated) { + d3.selectAll('#pyCodeOutputDiv td.lineNo') + .attr('id', function(d) {return 'lineNo' + d.lineNumber;}) + .style('color', function(d) + {return d.breakpointHere ? breakpointColor : (visitedLinesSet[d.lineNumber] ? visitedLineColor : null);}) + .style('font-weight', function(d) + {return d.breakpointHere ? 'bold' : (visitedLinesSet[d.lineNumber] ? 'bold' : null);}); + + d3.selectAll('#pyCodeOutputDiv td.cod') + .style('background-color', function(d) { + if (d.lineNumber == curLine) { + if (hasError) { + d.backgroundColor = errorColor; + } + else if (isTerminated) { + d.backgroundColor = lightBlue; + } + else { + d.backgroundColor = lightLineColor; + } + } + else { + d.backgroundColor = null; + } + + return d.backgroundColor; + }) + .style('border-top', function(d) { + if ((d.lineNumber == curLine) && !hasError && !isTerminated) { + return '1px solid #F87D76'; + } + else { + // put a default white top border to keep space usage consistent + return '1px solid #ffffff'; + } + }); + + // smoothly scroll code display + if (!isOutputLineVisible(curLine)) { + scrollCodeOutputToLine(curLine); + } +} + + +// smoothly scroll pyCodeOutputDiv so that the given line is at the center +function scrollCodeOutputToLine(lineNo) { + var lineNoTd = $('#lineNo' + lineNo); + var LO = lineNoTd.offset().top; + + var codeOutputDiv = $('#pyCodeOutputDiv'); + var PO = codeOutputDiv.offset().top; + var ST = codeOutputDiv.scrollTop(); + var H = codeOutputDiv.height(); + + codeOutputDiv.animate({scrollTop: (ST + (LO - PO - (Math.round(H / 2))))}, 300); +} + + +// returns True iff lineNo is visible in pyCodeOutputDiv +function isOutputLineVisible(lineNo) { + var lineNoTd = $('#lineNo' + lineNo); + var LO = lineNoTd.offset().top; + + var codeOutputDiv = $('#pyCodeOutputDiv'); + var PO = codeOutputDiv.offset().top; + var ST = codeOutputDiv.scrollTop(); + var H = codeOutputDiv.height(); + + // add a few pixels of fudge factor on the bottom end due to bottom scrollbar + return (PO <= LO) && (LO < (PO + H - 15)); +} + + + +// relies on curTrace and curInstr globals +function updateOutput() { + if (!curTrace) { + return; + } + + $('#urlOutput').val(''); // blank out + + var curEntry = curTrace[curInstr]; + var hasError = false; + + // render VCR controls: + var totalInstrs = curTrace.length; + + // to be user-friendly, if we're on the LAST instruction, print "Program has terminated" + // and DON'T highlight any lines of code in the code display + if (curInstr == (totalInstrs-1)) { + if (instrLimitReached) { + $("#vcrControls #curInstr").html("Instruction limit reached"); + } + else { + $("#vcrControls #curInstr").html("Program has terminated"); + } + } + else { + $("#vcrControls #curInstr").html("About to run step " + (curInstr + 1) + " of " + (totalInstrs-1)); + } + + + $("#vcrControls #jmpFirstInstr").attr("disabled", false); + $("#vcrControls #jmpStepBack").attr("disabled", false); + $("#vcrControls #jmpStepFwd").attr("disabled", false); + $("#vcrControls #jmpLastInstr").attr("disabled", false); + + if (curInstr == 0) { + $("#vcrControls #jmpFirstInstr").attr("disabled", true); + $("#vcrControls #jmpStepBack").attr("disabled", true); + } + if (curInstr == (totalInstrs-1)) { + $("#vcrControls #jmpLastInstr").attr("disabled", true); + $("#vcrControls #jmpStepFwd").attr("disabled", true); + } + + + + + // PROGRAMMATICALLY change the value, so evt.originalEvent should be undefined + $('#executionSlider').slider('value', curInstr); + + + // render error (if applicable): + if (curEntry.event == 'exception' || + curEntry.event == 'uncaught_exception') { + assert(curEntry.exception_msg); + + if (curEntry.exception_msg == "Unknown error") { + $("#errorOutput").html('Unknown error: Please email a bug report to philip@pgbovine.net'); + } + else { + $("#errorOutput").html(htmlspecialchars(curEntry.exception_msg)); + } + + $("#errorOutput").show(); + + hasError = true; + } + else { + if (!instrLimitReached) { // ugly, I know :/ + $("#errorOutput").hide(); + } + } + + + // render code output: + if (curEntry.line) { + // calculate all lines that have been 'visited' + // by execution up to (but NOT INCLUDING) curInstr: + visitedLinesSet = {} // GLOBAL! + for (var i = 0; i < curInstr; i++) { + if (curTrace[i].line) { + visitedLinesSet[curTrace[i].line] = true; + } + } + + highlightCodeLine(curEntry.line, hasError, + /* if instrLimitReached, then treat like a normal non-terminating line */ + (!instrLimitReached && (curInstr == (totalInstrs-1)))); + } + + + // render stdout: + + // keep original horizontal scroll level: + var oldLeft = $("#pyStdout").scrollLeft(); + $("#pyStdout").val(curEntry.stdout); + + $("#pyStdout").scrollLeft(oldLeft); + // scroll to bottom, though: + $("#pyStdout").scrollTop($("#pyStdout")[0].scrollHeight); + + + // finally, render all the data structures!!! + renderDataStructures(curEntry, "#dataViz"); +} + + +// make sure varname doesn't contain any weird +// characters that are illegal for CSS ID's ... +// +// I know for a fact that iterator tmp variables named '_[1]' +// are NOT legal names for CSS ID's. +// I also threw in '{', '}', '(', ')', '<', '>' as illegal characters. +// +// TODO: what other characters are illegal??? +var lbRE = new RegExp('\\[|{|\\(|<', 'g'); +var rbRE = new RegExp('\\]|}|\\)|>', 'g'); +function varnameToCssID(varname) { + return varname.replace(lbRE, 'LeftB_').replace(rbRE, '_RightB'); +} + + +// compare two JSON-encoded compound objects for structural equivalence: +function structurallyEquivalent(obj1, obj2) { + // punt if either isn't a compound type + if (isPrimitiveType(obj1) || isPrimitiveType(obj2)) { + return false; + } + + // must be the same compound type + if (obj1[0] != obj2[0]) { + return false; + } + + // must have the same number of elements or fields + if (obj1.length != obj2.length) { + return false; + } + + // for a list or tuple, same size (e.g., a cons cell is a list/tuple of size 2) + if (obj1[0] == 'LIST' || obj1[0] == 'TUPLE') { + return true; + } + else { + var startingInd = -1; + + if (obj1[0] == 'DICT') { + startingInd = 2; + } + else if (obj1[0] == 'INSTANCE') { + startingInd = 3; + } + else { + return false; + } + + var obj1fields = {}; + + // for a dict or object instance, same names of fields (ordering doesn't matter) + for (var i = startingInd; i < obj1.length; i++) { + obj1fields[obj1[i][0]] = 1; // use as a set + } + + for (var i = startingInd; i < obj2.length; i++) { + if (obj1fields[obj2[i][0]] == undefined) { + return false; + } + } + + return true; + } +} + + + +// Renders the current trace entry (curEntry) into the div named by vizDiv +// +// The "3.0" version of renderDataStructures renders variables in +// a stack, values in a separate heap, and draws line connectors +// to represent both stack->heap object references and, more importantly, +// heap->heap references. This version was created in August 2012. +// +// The "2.0" version of renderDataStructures renders variables in +// a stack and values in a separate heap, with data structure aliasing +// explicitly represented via line connectors (thanks to jsPlumb lib). +// This version was created in September 2011. +// +// The ORIGINAL "1.0" version of renderDataStructures +// was created in January 2010 and rendered variables and values +// INLINE within each stack frame without any explicit representation +// of data structure aliasing. That is, aliased objects were rendered +// multiple times, and a unique ID label was used to identify aliases. +function renderDataStructures(curEntry, vizDiv) { + + // VERY VERY IMPORTANT --- and reset ALL jsPlumb state to prevent + // weird mis-behavior!!! + jsPlumb.reset(); + + + // create a tabular layout for stack and heap side-by-side + // TODO: figure out how to do this using CSS in a robust way! + + $(vizDiv + " #stack").empty(); // clear the stack and redraw it from scratch + // (but don't clear the heap, since we + // want it to be persistent for use with d3) + + $(vizDiv + " #stack").append('
Frames
'); + + + // merge zombie_stack_locals and stack_locals into one master + // ordered list using some simple rules for aesthetics + var stack_to_render = []; + + // first push all regular stack entries backwards + if (curEntry.stack_locals) { + for (var i = curEntry.stack_locals.length - 1; i >= 0; i--) { + var entry = curEntry.stack_locals[i]; + entry.is_zombie = false; + entry.is_highlighted = (i == 0); + stack_to_render.push(entry); + } + } + + // zombie stack consists of exited functions that have returned nested functions + // push zombie stack entries at the BEGINNING of stack_to_render, + // EXCEPT put zombie entries BEHIND regular entries that are their parents + if (curEntry.zombie_stack_locals) { + + for (var i = curEntry.zombie_stack_locals.length - 1; i >= 0; i--) { + var entry = curEntry.zombie_stack_locals[i]; + entry.is_zombie = true; + entry.is_highlighted = false; // never highlight zombie entries + + // j should be 0 most of the time, so we're always inserting new + // elements to the front of stack_to_render (which is why we are + // iterating backwards over zombie_stack_locals). + var j = 0; + for (j = 0; j < stack_to_render.length; j++) { + if ($.inArray(stack_to_render[j].frame_id, entry.parent_frame_id_list) >= 0) { + continue; + } + break; + } + + stack_to_render.splice(j, 0, entry); + } + + } + + + // first build up a list of lists representing the locations of TOP-LEVEL heap objects to be rendered. + // doing so decouples the data format of curEntry from the nitty-gritty HTML rendering code, + // which gives us more flexibility in experimenting with layout strategies. + // + // each outer list represents a "row" in the heap layout (represented via, say, div elements) + // and each inner list represents "columns" within a row (represented via, say, table td elements) + var toplevelHeapLayout = []; + var toplevelHeapLayoutIDs = {}; // set of IDs contained within toplevelHeapLayout + var alreadyLaidObjectIDs = {}; // set of IDs of objects that have already been laid out + // (not necessarily just in toplevelHeapLayout since some elements + // are EMBEDDED within other heap objects) + + + function layoutHeapObject(ref) { + + function layoutHeapObjectHelper(id, row /* list of IDs */, isTopLevel) { + if (alreadyLaidObjectIDs[id] == undefined) { + + // Only push to row if isTopLevel since it only stores top-level objects ... + if (isTopLevel) { + row.push(id); + } + + // but ALWAYS record that this object has already been laid out, no matter what + alreadyLaidObjectIDs[id] = 1; + + // heuristic for laying out 1-D linked data structures: check for enclosing elements that are + // structurally identical and then lay them out as siblings in the same "row" + var heapObj = curEntry.heap[id]; + assert(heapObj); + + if (heapObj[0] == 'LIST' || heapObj[0] == 'TUPLE') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + + if (!isPrimitiveType(child)) { + var childID = getRefID(child); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + layoutHeapObjectHelper(childID, row, true); + } + else { + layoutHeapObjectHelper(childID, null, false /* render embedded within heapObj */); + } + } + }); + } + else if (heapObj[0] == 'SET') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + if (!isPrimitiveType(child)) { + layoutHeapObjectHelper(getRefID(child), null, false /* render embedded within heapObj */); + } + }); + } + else if (heapObj[0] == 'DICT') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + + var dictKey = child[0]; + if (!isPrimitiveType(dictKey)) { + layoutHeapObjectHelper(getRefID(dictKey), null, false /* render embedded within heapObj */); + } + + var dictVal = child[1]; + if (!isPrimitiveType(dictVal)) { + var childID = getRefID(dictVal); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + layoutHeapObjectHelper(childID, row, true); + } + else { + layoutHeapObjectHelper(childID, null, false /* render embedded within heapObj */); + } + } + }); + } + else if (heapObj[0] == 'INSTANCE') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 2) return; // skip type tag and class name + + // instance keys are always strings, so no need to recurse + assert(typeof child[0] == "string"); + + var instVal = child[1]; + if (!isPrimitiveType(instVal)) { + var childID = getRefID(instVal); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + layoutHeapObjectHelper(childID, row, true); + } + else { + layoutHeapObjectHelper(childID, null, false /* render embedded within heapObj */); + } + } + }); + } + else if (heapObj[0] == 'CLASS') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 3) return; // skip type tag, class name, and superclass names + // class attr keys are always strings, so no need to recurse + + var classAttrVal = child[1]; + if (!isPrimitiveType(classAttrVal)) { + layoutHeapObjectHelper(getRefID(classAttrVal), null, false /* render embedded within heapObj */); + } + }); + } + } + } + + var id = getRefID(ref); + var newRow = []; + + layoutHeapObjectHelper(id, newRow, true); + if (newRow.length > 0) { + toplevelHeapLayout.push(newRow); + $.each(newRow, function(i, e) { + toplevelHeapLayoutIDs[e] = 1; + }); + } + } + + + + // variables are displayed in the following order, so lay out heap objects in the same order: + // - globals + // - stack entries (regular and zombies) + + // if there are multiple aliases to the same object, we want to render + // the one "deepest" in the stack, so that we can hopefully prevent + // objects from jumping around as functions are called and returned. + // e.g., if a list L appears as a global variable and as a local in a + // function, we want to render L when rendering the global frame. + // + // this is straightforward: just go through globals first and then + // each stack frame in order :) + + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + // (use '!==' to do an EXACT match against undefined) + if (val !== undefined) { // might not be defined at this line, which is OKAY! + if (!isPrimitiveType(val)) { + layoutHeapObject(val); + //console.log('global:', varname, getRefID(val)); + } + } + }); + + $.each(stack_to_render, function(i, frame) { + if (frame.ordered_varnames.length > 0) { + $.each(frame.ordered_varnames, function(xxx, varname) { + var val = frame.encoded_locals[varname]; + + // ignore return values for zombie frames + if (frame.is_zombie && varname == '__return__') { + return; + } + + if (!isPrimitiveType(val)) { + layoutHeapObject(val); + //console.log(frame.func_name + ':', varname, getRefID(val)); + } + }); + } + }); + + + // print toplevelHeapLayout + /* + $.each(toplevelHeapLayout, function(i, elt) { + console.log(elt); + }); + console.log('---'); + */ + + + // Heap object rendering phase: + + + // Key: CSS ID of the div element representing the stack frame variable + // (for stack->heap connections) or heap object (for heap->heap connections) + // the format is: 'heap_pointer_src_' + // Value: CSS ID of the div element representing the value rendered in the heap + // (the format is: 'heap_object_') + var connectionEndpointIDs = {}; + var heapConnectionEndpointIDs = {}; // subset of connectionEndpointIDs for heap->heap connections + + var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* + + + var renderedObjectIDs = {}; // set (TODO: refactor all sets to use d3.map) + + // count all toplevelHeapLayoutIDs as already rendered since we will render them + // in the d3 .each() statement labeled 'FOOBAR' (might be confusing!) + $.each(toplevelHeapLayoutIDs, function(k, v) { + renderedObjectIDs[k] = v; + }); + + + // render the heap by mapping toplevelHeapLayout into and + // '); + var headerTr = tbl.find('tr:first'); + var contentTr = tbl.find('tr:last'); + $.each(obj, function(ind, val) { + if (ind < 1) return; // skip type tag and ID entry + + // add a new column and then pass in that newly-added column + // as d3DomElement to the recursive call to child: + headerTr.append(''); + headerTr.find('td:last').append(ind - 1); + + contentTr.append(''); + renderNestedObject(val, contentTr.find('td:last')); + }); + } + else if (obj[0] == 'SET') { + // create an R x C matrix: + var numElts = obj.length - 1; + + // gives roughly a 3x5 rectangular ratio, square is too, err, + // 'square' and boring + var numRows = Math.round(Math.sqrt(numElts)); + if (numRows > 3) { + numRows -= 1; + } + + var numCols = Math.round(numElts / numRows); + // round up if not a perfect multiple: + if (numElts % numRows) { + numCols += 1; + } + + jQuery.each(obj, function(ind, val) { + if (ind < 1) return; // skip 'SET' tag + + if (((ind - 1) % numCols) == 0) { + tbl.append(''); + } + + var curTr = tbl.find('tr:last'); + curTr.append(''); + renderNestedObject(val, curTr.find('td:last')); + }); + } + else if (obj[0] == 'DICT') { + $.each(obj, function(ind, kvPair) { + if (ind < 1) return; // skip 'DICT' tag + + tbl.append(''); + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + var key = kvPair[0]; + var val = kvPair[1]; + + renderNestedObject(key, keyTd); + renderNestedObject(val, valTd); + }); + } + } + } + else if (obj[0] == 'INSTANCE' || obj[0] == 'CLASS') { + var isInstance = (obj[0] == 'INSTANCE'); + var headerLength = isInstance ? 2 : 3; + + assert(obj.length >= headerLength); + + if (isInstance) { + d3DomElement.append('
' + obj[1] + ' instance
'); + } + else { + var superclassStr = ''; + if (obj[2].length > 0) { + superclassStr += ('[extends ' + obj[2].join(', ') + '] '); + } + d3DomElement.append('
' + obj[1] + ' class ' + superclassStr + '
'); + } + + if (obj.length > headerLength) { + var lab = isInstance ? 'inst' : 'class'; + d3DomElement.append('
elements using d3. + // + // TODO: look into doing smooth transitions! + + var heapRows = d3.select(vizDiv + ' #heap') + .selectAll('table.heapRow') + .data(toplevelHeapLayout, + function(objLst) { + /* convert list into string to create a unique key for object constancy */ + return String(objLst); + }) + + + // update existing heap row + heapRows.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) + .selectAll('td') + .data(function(d, i) {return d;}, /* map over each row */ + function(objID) {return String(objID);} /* each object ID is unique for constancy */) + .each(function(objID, i) { + console.log('UPDATE ELT', objID); + // TODO: how do we sensibly render an UPDATE to an element? + }) + .enter().append('td') + .attr('class', 'toplevelHeapObject') + .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) + .each(function(objID, i) { + console.log('NEW ELT', objID); + renderCompoundObject(objID, $(this), true); // label FOOBAR (see renderedObjectIDs) + }) + + //.exit() + //.each(function(objID, i) {console.log('DEL ELT:', objID, i);}) + //.remove() + + + + // insert new heap rows + heapRows.enter().append('table') + .each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) + .attr('class', 'heapRow') + .selectAll('td') + .data(function(d, i) {return d;}, /* map over each row and REMOVE HEADER LIST TAG (TODO) */ + function(objID) {return String(objID);} /* each object ID is unique for constancy */) + .each(function(objID, i) { + console.log('UPDATE ELT', objID); + // TODO: how do we sensibly render an UPDATE to an element? + }) + .enter().append('td') + .attr('class', 'toplevelHeapObject') + .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) + .each(function(objID, i) { + console.log('NEW ELT', objID); + renderCompoundObject(objID, $(this), true); // label FOOBAR (see renderedObjectIDs) + }); + + // remove deleted rows + heapRows.exit() + .each(function(objLst, i) {console.log('DEL ROW:', objLst, i);}) + .remove(); + + + function renderNestedObject(obj, d3DomElement) { + if (isPrimitiveType(obj)) { + renderPrimitiveObject(obj, d3DomElement); + } + else { + renderCompoundObject(getRefID(obj), d3DomElement, false); + } + } + + + function renderPrimitiveObject(obj, d3DomElement) { + var typ = typeof obj; + + if (obj == null) { + d3DomElement.append('None'); + } + else if (typ == "number") { + d3DomElement.append('' + obj + ''); + } + else if (typ == "boolean") { + if (obj) { + d3DomElement.append('True'); + } + else { + d3DomElement.append('False'); + } + } + else if (typ == "string") { + // escape using htmlspecialchars to prevent HTML/script injection + var literalStr = htmlspecialchars(obj); + + // print as a double-quoted string literal + literalStr = literalStr.replace(new RegExp('\"', 'g'), '\\"'); // replace ALL + literalStr = '"' + literalStr + '"'; + + d3DomElement.append('' + literalStr + ''); + } + else { + assert(false); + } + } + + + function renderCompoundObject(objID, d3DomElement, isTopLevel) { + if (!isTopLevel && (renderedObjectIDs[objID] != undefined)) { + // TODO: render jsPlumb arrow source since this heap object has already been rendered + + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + var srcDivID = 'heap_pointer_src_' + heap_pointer_src_id; + heap_pointer_src_id++; // just make sure each source has a UNIQUE ID + d3DomElement.append('
 
'); + + assert(connectionEndpointIDs[srcDivID] === undefined); + connectionEndpointIDs[srcDivID] = 'heap_object_' + objID; + + assert(heapConnectionEndpointIDs[srcDivID] === undefined); + heapConnectionEndpointIDs[srcDivID] = 'heap_object_' + objID; + + return; // early return! + } + + + // wrap ALL compound objects in a heapObject div so that jsPlumb + // connectors can point to it: + d3DomElement.append('
'); + d3DomElement = $('#heap_object_' + objID); + + + renderedObjectIDs[objID] = 1; + + var obj = curEntry.heap[objID]; + assert($.isArray(obj)); + + + if (obj[0] == 'LIST' || obj[0] == 'TUPLE' || obj[0] == 'SET' || obj[0] == 'DICT') { + var label = obj[0].toLowerCase(); + + assert(obj.length >= 1); + if (obj.length == 1) { + d3DomElement.append('
empty ' + label + '
'); + } + else { + d3DomElement.append('
' + label + '
'); + d3DomElement.append('
'); + var tbl = d3DomElement.children('table'); + + if (obj[0] == 'LIST' || obj[0] == 'TUPLE') { + tbl.append('
'); + + var tbl = d3DomElement.children('table'); + + $.each(obj, function(ind, kvPair) { + if (ind < headerLength) return; // skip header tags + + tbl.append(''); + + var newRow = tbl.find('tr:last'); + var keyTd = newRow.find('td:first'); + var valTd = newRow.find('td:last'); + + // the keys should always be strings, so render them directly (and without quotes): + assert(typeof kvPair[0] == "string"); + var attrnameStr = htmlspecialchars(kvPair[0]); + keyTd.append('' + attrnameStr + ''); + + // values can be arbitrary objects, so recurse: + renderNestedObject(kvPair[1], valTd); + }); + } + } + else if (obj[0] == 'FUNCTION') { + assert(obj.length == 3); + + var funcName = htmlspecialchars(obj[1]); // for displaying weird names like '' + var parentFrameID = obj[2]; // optional + + if (parentFrameID) { + d3DomElement.append('
function ' + funcName + ' [parent=f'+ parentFrameID + ']
'); + } + else { + d3DomElement.append('
function ' + funcName + '
'); + } + } + else { + // render custom data type + assert(obj.length == 2); + + var typeName = obj[0]; + var strRepr = obj[1]; + + strRepr = htmlspecialchars(strRepr); // escape strings! + + d3DomElement.append('
' + typeName + '
'); + d3DomElement.append('
' + strRepr + '
'); + } + } + + + // Render globals and then stack frames: + // TODO: could convert to using d3 to map globals and stack frames directly into stack frame divs + // (which might make it easier to do smooth transitions) + + // render all global variables IN THE ORDER they were created by the program, + // in order to ensure continuity: + if (curEntry.ordered_globals.length > 0) { + $(vizDiv + " #stack").append('
Global variables
'); + $(vizDiv + " #stack #globals").append('
'); + + var tbl = $(vizDiv + " #global_table"); + + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + // (use '!==' to do an EXACT match against undefined) + if (val !== undefined) { // might not be defined at this line, which is OKAY! + tbl.append('' + varname + ''); + var curTr = tbl.find('tr:last'); + + if (isPrimitiveType(val)) { + renderPrimitiveObject(val, curTr.find("td.stackFrameValue")); + } + else{ + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + // make sure varname doesn't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = 'global__' + varnameToCssID(varname); + curTr.find("td.stackFrameValue").append('
 
'); + + assert(connectionEndpointIDs[varDivID] === undefined); + var heapObjID = 'heap_object_' + getRefID(val); + connectionEndpointIDs[varDivID] = heapObjID; + } + } + }); + } + + + $.each(stack_to_render, function(i, e) { + renderStackFrame(e, i, e.is_zombie); + }); + + + function renderStackFrame(frame, ind, is_zombie) { + var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) + + // optional (btw, this isn't a CSS id) + var parentFrameID = null; + if (frame.parent_frame_id_list.length > 0) { + parentFrameID = frame.parent_frame_id_list[0]; + } + + var localVars = frame.encoded_locals + + // the stackFrame div's id is simply its index ("stack") + + var divClass, divID, headerDivID; + if (is_zombie) { + divClass = 'zombieStackFrame'; + divID = "zombie_stack" + ind; + headerDivID = "zombie_stack_header" + ind; + } + else { + divClass = 'stackFrame'; + divID = "stack" + ind; + headerDivID = "stack_header" + ind; + } + + $(vizDiv + " #stack").append('
'); + + var headerLabel = funcName + '()'; + if (frameID) { + headerLabel = 'f' + frameID + ': ' + headerLabel; + } + if (parentFrameID) { + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + $(vizDiv + " #stack #" + divID).append('
' + headerLabel + '
'); + + if (frame.ordered_varnames.length > 0) { + var tableID = divID + '_table'; + $(vizDiv + " #stack #" + divID).append('
'); + + var tbl = $(vizDiv + " #" + tableID); + + $.each(frame.ordered_varnames, function(xxx, varname) { + var val = localVars[varname]; + + // don't render return values for zombie frames + if (is_zombie && varname == '__return__') { + return; + } + + // special treatment for displaying return value and indicating + // that the function is about to return to its caller + // + // DON'T do this for zombie frames + if (varname == '__return__' && !is_zombie) { + assert(curEntry.event == 'return'); // sanity check + + tbl.append('About to return'); + tbl.append('Return value:'); + } + else { + tbl.append('' + varname + ''); + } + + var curTr = tbl.find('tr:last'); + + if (isPrimitiveType(val)) { + renderPrimitiveObject(val, curTr.find("td.stackFrameValue")); + } + else { + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + // make sure varname doesn't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = divID + '__' + varnameToCssID(varname); + curTr.find("td.stackFrameValue").append('
 
'); + + assert(connectionEndpointIDs[varDivID] === undefined); + var heapObjID = 'heap_object_' + getObjectID(val); + connectionEndpointIDs[varDivID] = heapObjID; + } + }); + } + } + + + // finally add all the connectors! + for (varID in connectionEndpointIDs) { + var valueID = connectionEndpointIDs[varID]; + jsPlumb.connect({source: varID, target: valueID}); + } + + + function highlight_frame(frameID) { + var allConnections = jsPlumb.getConnections(); + for (var i = 0; i < allConnections.length; i++) { + var c = allConnections[i]; + + // this is VERY VERY fragile code, since it assumes that going up + // five layers of parent() calls will get you from the source end + // of the connector to the enclosing stack frame + var stackFrameDiv = c.source.parent().parent().parent().parent().parent(); + + // if this connector starts in the selected stack frame ... + if (stackFrameDiv.attr('id') == frameID) { + // then HIGHLIGHT IT! + c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); + c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); + c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + + // ... and move it to the VERY FRONT + $(c.canvas).css("z-index", 1000); + } + // for heap->heap connectors + else if (heapConnectionEndpointIDs[c.endpoints[0].elementId] !== undefined) { + // then HIGHLIGHT IT! + c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); // make thinner + c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); + c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + //c.setConnector([ "Bezier", {curviness: 80} ]); // make it more curvy + c.setConnector([ "StateMachine" ]); + c.addOverlay([ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]); + } + else { + // else unhighlight it + c.setPaintStyle({lineWidth:1, strokeStyle: lightGray}); + c.endpoints[0].setPaintStyle({fillStyle: lightGray}); + c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible + $(c.canvas).css("z-index", 0); + } + } + + // clear everything, then just activate $(this) one ... + $(".stackFrame").removeClass("highlightedStackFrame"); + $('#' + frameID).addClass("highlightedStackFrame"); + } + + + // highlight the top-most non-zombie stack frame or, if not available, globals + var frame_already_highlighted = false; + $.each(stack_to_render, function(i, e) { + if (e.is_highlighted) { + highlight_frame('stack' + i); + frame_already_highlighted = true; + } + }); + + if (!frame_already_highlighted) { + highlight_frame('globals'); + } + +} + + +function isPrimitiveType(obj) { + var typ = typeof obj; + return ((obj == null) || (typ != "object")); +} + +function getRefID(obj) { + assert(obj[0] == 'REF'); + return obj[1]; +} + +/* +function renderInline(obj) { + return isPrimitiveType(obj) && (typeof obj != 'string'); +} +*/ + +// Key is a primitive value (e.g., 'hello', 3.14159, true) +// Value is a unique primitive ID (starting with 'p' to disambiguate +// from regular object IDs) +var primitive_IDs = {null: 'p0', true: 'p1', false: 'p2'}; +var cur_pID = 3; + +function getObjectID(obj) { + if (isPrimitiveType(obj)) { + // primitive objects get IDs starting with 'p' ... + // this renders aliases as 'interned' for simplicity + var pID = primitive_IDs[obj]; + if (pID !== undefined) { + return pID; + } + else { + var new_pID = 'p' + cur_pID; + primitive_IDs[obj] = new_pID; + cur_pID++; + return new_pID; + } + return obj; + } + else { + assert($.isArray(obj)); + + if ((obj[0] == 'INSTANCE') || (obj[0] == 'CLASS')) { + return obj[2]; + } + else { + return obj[1]; + } + } +} + + + +String.prototype.rtrim = function() { + return this.replace(/\s*$/g, ""); +} + + +function renderPyCodeOutput(codeStr) { + clearSliderBreakpoints(); // start fresh! + + var lines = codeStr.rtrim().split('\n'); + + // reset it! + codeOutputLines = []; + $.each(lines, function(i, cod) { + var n = {}; + n.text = cod; + n.lineNumber = i + 1; + n.executionPoints = []; + n.backgroundColor = null; + n.breakpointHere = false; + + + $.each(curTrace, function(i, elt) { + if (elt.line == n.lineNumber) { + n.executionPoints.push(i); + } + }); + + + // if there is a comment containing 'breakpoint' and this line was actually executed, + // then set a breakpoint on this line + var breakpointInComment = false; + toks = cod.split('#'); + for (var j = 1 /* start at index 1, not 0 */; j < toks.length; j++) { + if (toks[j].indexOf('breakpoint') != -1) { + breakpointInComment = true; + } + } + + if (breakpointInComment && n.executionPoints.length > 0) { + n.breakpointHere = true; + addToBreakpoints(n.executionPoints); + } + + codeOutputLines.push(n); + }); + + + $("#pyCodeOutputDiv").empty(); // jQuery empty() is better than .html('') + + + // maps codeOutputLines to both table columns + d3.select('#pyCodeOutputDiv') + .append('table') + .attr('id', 'pyCodeOutput') + .selectAll('tr') + .data(codeOutputLines) + .enter().append('tr') + .selectAll('td') + .data(function(e, i){return [e, e];}) // bind an alias of the element to both table columns + .enter().append('td') + .attr('class', function(d, i) {return (i == 0) ? 'lineNo' : 'cod';}) + .style('cursor', function(d, i) {return 'pointer'}) + .html(function(d, i) { + if (i == 0) { + return d.lineNumber; + } + else { + return htmlspecialchars(d.text); + } + }) + .on('mouseover', function() { + setHoverBreakpoint(this); + }) + .on('mouseout', function() { + hoverBreakpoints = {}; + + var breakpointHere = d3.select(this).datum().breakpointHere; + + if (!breakpointHere) { + unsetBreakpoint(this); + } + + renderSliderBreakpoints(); // get rid of hover breakpoint colors + }) + .on('mousedown', function() { + // don't do anything if exePts is empty + // (i.e., this line was never executed) + var exePts = d3.select(this).datum().executionPoints; + if (!exePts || exePts.length == 0) { + return; + } + + // toggle breakpoint + d3.select(this).datum().breakpointHere = !d3.select(this).datum().breakpointHere; + + var breakpointHere = d3.select(this).datum().breakpointHere; + if (breakpointHere) { + setBreakpoint(this); + } + else { + unsetBreakpoint(this); + } + }); + + renderSliderBreakpoints(); // renders breakpoints written in as code comments +} + + + +var breakpoints = {}; // set of execution points to set as breakpoints +var sortedBreakpointsList = []; // sorted and synced with breakpointLines +var hoverBreakpoints = {}; // set of breakpoints because we're HOVERING over a given line + + +function _getSortedBreakpointsList() { + var ret = []; + for (var k in breakpoints) { + ret.push(Number(k)); // these should be NUMBERS, not strings + } + ret.sort(function(x,y){return x-y}); // WTF, javascript sort is lexicographic by default! + return ret; +} + +function addToBreakpoints(executionPoints) { + $.each(executionPoints, function(i, e) { + breakpoints[e] = 1; + }); + + sortedBreakpointsList = _getSortedBreakpointsList(); +} + +function removeFromBreakpoints(executionPoints) { + $.each(executionPoints, function(i, e) { + delete breakpoints[e]; + }); + + sortedBreakpointsList = _getSortedBreakpointsList(); +} + +// find the previous/next breakpoint to c or return -1 if it doesn't exist +function findPrevBreakpoint(c) { + if (sortedBreakpointsList.length == 0) { + return -1; + } + else { + for (var i = 1; i < sortedBreakpointsList.length; i++) { + var prev = sortedBreakpointsList[i-1]; + var cur = sortedBreakpointsList[i]; + + if (c <= prev) { + return -1; + } + + if (cur >= c) { + return prev; + } + } + + // final edge case: + var lastElt = sortedBreakpointsList[sortedBreakpointsList.length - 1]; + return (lastElt < c) ? lastElt : -1; + } +} + +function findNextBreakpoint(c) { + if (sortedBreakpointsList.length == 0) { + return -1; + } + else { + for (var i = 0; i < sortedBreakpointsList.length - 1; i++) { + var cur = sortedBreakpointsList[i]; + var next = sortedBreakpointsList[i+1]; + + if (c < cur) { + return cur; + } + + if (cur <= c && c < next) { // subtle + return next; + } + } + + // final edge case: + var lastElt = sortedBreakpointsList[sortedBreakpointsList.length - 1]; + return (lastElt > c) ? lastElt : -1; + } +} + + +function setHoverBreakpoint(t) { + var exePts = d3.select(t).datum().executionPoints; + + // don't do anything if exePts is empty + // (i.e., this line was never executed) + if (!exePts || exePts.length == 0) { + return; + } + + hoverBreakpoints = {}; + $.each(exePts, function(i, e) { + hoverBreakpoints[e] = 1; + }); + + addToBreakpoints(exePts); + renderSliderBreakpoints(); +} + + +function setBreakpoint(t) { + var exePts = d3.select(t).datum().executionPoints; + + // don't do anything if exePts is empty + // (i.e., this line was never executed) + if (!exePts || exePts.length == 0) { + return; + } + + addToBreakpoints(exePts); + + d3.select(t.parentNode).select('td.lineNo').style('color', breakpointColor); + d3.select(t.parentNode).select('td.lineNo').style('font-weight', 'bold'); + + renderSliderBreakpoints(); +} + +function unsetBreakpoint(t) { + var exePts = d3.select(t).datum().executionPoints; + + // don't do anything if exePts is empty + // (i.e., this line was never executed) + if (!exePts || exePts.length == 0) { + return; + } + + removeFromBreakpoints(exePts); + + + var lineNo = d3.select(t).datum().lineNumber; + + if (visitedLinesSet[lineNo]) { + d3.select(t.parentNode).select('td.lineNo').style('color', visitedLineColor); + d3.select(t.parentNode).select('td.lineNo').style('font-weight', 'bold'); + } + else { + d3.select(t.parentNode).select('td.lineNo').style('color', ''); + d3.select(t.parentNode).select('td.lineNo').style('font-weight', ''); + } + + renderSliderBreakpoints(); +} + + +// depends on sortedBreakpointsList global +function renderSliderBreakpoints() { + $("#executionSliderFooter").empty(); // jQuery empty() is better than .html('') + + // I originally didn't want to delete and re-create this overlay every time, + // but if I don't do so, there are weird flickering artifacts with clearing + // the SVG container; so it's best to just delete and re-create the container each time + var sliderOverlay = d3.select('#executionSliderFooter') + .append('svg') + .attr('id', 'sliderOverlay') + .attr('width', $('#executionSlider').width()) + .attr('height', 12); + + var xrange = d3.scale.linear() + .domain([0, curTrace.length - 1]) + .range([0, $('#executionSlider').width()]); + + sliderOverlay.selectAll('rect') + .data(sortedBreakpointsList) + .enter().append('rect') + .attr('x', function(d, i) { + // make the edge cases look decent + if (d == 0) { + return 0; + } + else { + return xrange(d) - 3; + } + }) + .attr('y', 0) + .attr('width', 2) + .attr('height', 12) + .style('fill', function(d) { + if (hoverBreakpoints[d] === undefined) { + return breakpointColor; + } + else { + return hoverBreakpointColor; + } + }); +} + + +function clearSliderBreakpoints() { + breakpoints = {}; + sortedBreakpointsList = []; + hoverBreakpoints = {}; + renderSliderBreakpoints(); +} + + + +// initialization function that should be called when the page is loaded +function eduPythonCommonInit() { + + $("#jmpFirstInstr").click(function() { + curInstr = 0; + updateOutput(); + }); + + $("#jmpLastInstr").click(function() { + curInstr = curTrace.length - 1; + updateOutput(); + }); + + $("#jmpStepBack").click(function() { + if (curInstr > 0) { + curInstr -= 1; + updateOutput(); + } + }); + + $("#jmpStepFwd").click(function() { + if (curInstr < curTrace.length - 1) { + curInstr += 1; + updateOutput(); + } + }); + + // disable controls initially ... + $("#vcrControls #jmpFirstInstr").attr("disabled", true); + $("#vcrControls #jmpStepBack").attr("disabled", true); + $("#vcrControls #jmpStepFwd").attr("disabled", true); + $("#vcrControls #jmpLastInstr").attr("disabled", true); + + + + // set some sensible jsPlumb defaults + jsPlumb.Defaults.Endpoint = ["Dot", {radius:3}]; + //jsPlumb.Defaults.Endpoint = ["Rectangle", {width:3, height:3}]; + jsPlumb.Defaults.EndpointStyle = {fillStyle: lightGray}; + + jsPlumb.Defaults.Anchors = ["RightMiddle", "LeftMiddle"]; // for aesthetics! + + jsPlumb.Defaults.PaintStyle = {lineWidth:1, strokeStyle: lightGray}; + + // bezier curve style: + //jsPlumb.Defaults.Connector = [ "Bezier", { curviness:15 }]; /* too much 'curviness' causes lines to run together */ + //jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 14, width:10, foldback:0.55, location:0.35 }]] + + // state machine curve style: + jsPlumb.Defaults.Connector = [ "StateMachine" ]; + jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]]; + + + jsPlumb.Defaults.EndpointHoverStyle = {fillStyle: pinkish}; + jsPlumb.Defaults.HoverPaintStyle = {lineWidth:2, strokeStyle: pinkish}; + + + // set keyboard event listeners ... + $(document).keydown(function(k) { + // ONLY capture keys if we're in 'visualize code' mode: + if (appMode == 'visualize' && !keyStuckDown) { + if (k.keyCode == 37) { // left arrow + if (curInstr > 0) { + // if there is a prev breakpoint, then jump to it ... + if (sortedBreakpointsList.length > 0) { + var prevBreakpoint = findPrevBreakpoint(curInstr); + if (prevBreakpoint != -1) { + curInstr = prevBreakpoint; + } + else { + curInstr -= 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint + } + } + else { + curInstr -= 1; + } + updateOutput(); + } + + k.preventDefault(); // don't horizontally scroll the display + + keyStuckDown = true; + } + else if (k.keyCode == 39) { // right arrow + if (curInstr < curTrace.length - 1) { + // if there is a next breakpoint, then jump to it ... + if (sortedBreakpointsList.length > 0) { + var nextBreakpoint = findNextBreakpoint(curInstr); + if (nextBreakpoint != -1) { + curInstr = nextBreakpoint; + } + else { + curInstr += 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint + } + } + else { + curInstr += 1; + } + updateOutput(); + } + + k.preventDefault(); // don't horizontally scroll the display + + keyStuckDown = true; + } + } + }); + + $(document).keyup(function(k) { + keyStuckDown = false; + }); + + + // redraw everything on window resize so that connectors are in the + // right place + // TODO: can be SLOW on older browsers!!! + $(window).resize(function() { + if (appMode == 'visualize') { + updateOutput(); + } + }); + + $("#classicModeCheckbox").click(function() { + if (appMode == 'visualize') { + updateOutput(); + } + }); + + + // log a generic AJAX error handler + $(document).ajaxError(function() { + alert("Server error (possibly due to memory/resource overload)."); + + $('#executeBtn').html("Visualize execution"); + $('#executeBtn').attr('disabled', false); + }); + +} + diff --git a/PyTutorGAE/js/tmp-mess-with-d3/tutor.html b/PyTutorGAE/js/tmp-mess-with-d3/tutor.html new file mode 100644 index 000000000..94c76d900 --- /dev/null +++ b/PyTutorGAE/js/tmp-mess-with-d3/tutor.html @@ -0,0 +1,255 @@ + + + + + + + Online Python Tutor (v3) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Write your Python code here: +
+ +
+ +

+ + + +

+ +

Try these small examples:
+ +aliasing | +intro | +factorial | +fibonacci | +memoized fib | +square root | +insertion sort +
+filter | +tokenize | +OOP | +gcd | +sumList | +towers of hanoi | +exceptions + +

+ +

From MIT's 6.01 course:
+ +list map | +summation | +OOP 1 | +OOP 2 | +inheritance + +

+ +

Nested functions: +
+ +closure 1 | +closure 2 | +closure 3 | +closure 4 | +closure 5 + +

+ +

Aliasing: +
+ +aliasing 1 | +aliasing 2 | +aliasing 3 | +aliasing 4 | +aliasing 5 | +aliasing 6 | +aliasing 7 + +

+ +

Linked lists: +
+ +LL 1 | +LL 2 + +

+ + +
+ + + + + + + + + + + + +
+ +
+ +
+ +
+ +
+ + + +
+ +
Use the slider or the left and right arrow keys to step through execution. +
Click on code to set breakpoints.
+ +
+
+ +
+ + + Step ? of ? + + +
+ + +
+ + +
+ +Program output: +
+ + +

+ +

+ + +
+ +
+ + + + + + +
+
+
Frames
+
+
+
+
Objects
+
+
+ +
+ +
+ +
+ + + + + + From 94bb372934a62392a5f72d4e8a128298d0244da6 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 5 Aug 2012 10:08:58 -0700 Subject: [PATCH 026/502] started implementing krazy kode for pre-computing stable layouts --- PyTutorGAE/js/edu-python.js | 165 ++++++++++++++++++++++++++++++++++++ 1 file changed, 165 insertions(+) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 15699281d..d428adcb5 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -254,6 +254,171 @@ function isOutputLineVisible(lineNo) { +// Pre-compute the layout of top-level heap objects for ALL execution +// points as soon as a trace is first loaded. The reason why we want to +// do this is so that when the user steps through execution points, the +// heap objects don't "jiggle around" (i.e., preserving positional +// invariance). Also, if we set up the layout objects properly, then we +// can take full advantage of d3 to perform rendering and transitions. + + +// curTraceLayouts is a list of top-level heap layout "objects" with the +// same length as curTrace after it's been fully initialized. Each +// element of curTraceLayouts is computed from the contents of its +// immediate predecessor, thus ensuring that objects don't "jiggle +// around" between consecutive execution points. +// +// Each top-level heap layout "object" is itself a LIST of LISTS of +// object IDs, where each element of the outer list represents a row, +// and each element of the inner list represents columns within a +// particular row. Each row can have a different number of columns. Most +// rows have exactly ONE column (representing ONE object ID), but rows +// containing 1-D linked data structures have multiple columns. Each +// inner list element looks something like ['row1', 3, 2, 1] where the +// first element is a unique row ID tag, which is used as a key for d3 to +// preserve "object constancy" for updates, transitions, etc. The row ID +// is derived from the FIRST object ID inserted into the row. Since all +// object IDs are unique, all row IDs will also be unique. +var curTraceLayouts = null; + +/* This is a good, simple example to test whether objects "jiggle" + +x = [1, [2, [3, None]]] +y = [4, [5, [6, None]]] + +x[1][1] = y[1] + +*/ + + +function precomputeCurTraceLayouts() { + curTraceLayouts = []; + curTraceLayouts.push([]); // pre-seed with an empty sentinel to simplify the code + + assert(curTrace.length > 0); + + + $.each(curTrace, function(i, elt) { + var prevLayout = curTraceLayouts[curTraceLayouts.length - 1]; + + // make a DEEP COPY of prevLayout to use as the basis for curLine + var curLayout = $.extend(true /* deep copy */ , [], prevLayout); + + // initialize with all IDs from curLayout + var idsToRemove = d3.map(); + $.each(curLayout, function(i, row) { + for (var j = 1 /* ignore row ID tag */; j < row.length; j++) { + idsToRemove.set(row[j], 1); + } + }); + + + function curLayoutIndexOf(id) { + for (var i = 0; i < curLayout.length; i++) { + var row = curLayout[i]; + var index = row.indexOf(id); + if (index > 0) { // index of 0 is impossible since it's the row ID tag + return {row: row, index: index} + } + } + return null; + } + + + // a krazy function! + // id - the new object ID to be inserted somewhere in curLayout + // (if it's not already in there) + // curRow - a row within curLayout where new linked list + // elements can be appended onto (might be null) + // newRow - a new row that might be spliced into curRow or appended + // as a new row in curLayout + function updateCurLayout(id, curRow, newRow) { + var curLayoutLoc = curLayoutIndexOf(id); + + // if id is already in curLayout ... + if (curLayoutLoc) { + var foundRow = curLayoutLoc.row; + var foundIndex = curLayoutLoc.index; + + // splice the contents of newRow right BEFORE foundIndex. + // (Think about when you're trying to insert in id=3 into ['row1', 2, 1] + // to represent a linked list 3->2->1. You want to splice the 3 + // entry right before the 2 to form ['row1', 3, 2, 1]) + if (newRow.length > 1) { + var args = [foundIndex - 1, 0]; + for (var i = 1; i < newRow.length; i++) { // ignore row ID tag + args.push(newRow[i]); + idsToRemove.remove(newRow[i]); + } + foundRow.splice.apply(args); + + // remove ALL elements from newRow since they've all been accounted for + // (but don't reassign it away to an empty list, since the + // CALLER checks its value. TODO: get rid of this gross hack?!?) + newRow.splice(0, newRow.length); + } + + // recurse to find more top-level linked entries to append onto curRow + // updateCurLayout(child ID, foundRow, []) + + } + else { + // push id into newRow ... + if (newRow.length == 0) { + newRow.push('row' + id); // unique row ID (since IDs are unique) + } + newRow.push(id); + + // RECURSE to find possible top-level linked entries + // updateCurLayout(child ID, curRow, newRow) + + + // if newRow hasn't been spliced into an existing row yet during + // a child recursive call ... + if (newRow.length > 0) { + if (curRow && curRow.length > 0) { + // append onto the END of curRow if it exists + for (var i = 1; i < newRow.length; i++) { // ignore row ID tag + curRow.push(newRow[i]); + } + } + else { + // otherwise push to curLayout as a new row + curLayout.push(newRow); + } + + // regardless, newRow is now accounted for, so clear it + for (var i = 1; i < newRow.length; i++) { // ignore row ID tag + idsToRemove.remove(newRow[i]); + } + newRow.splice(0, newRow.length); + } + + } + } + + + // iterate through all globals and ordered stack frames + // and then call updateCurLayout(id, null, []); + + + // iterate through remaining elements of idsToRemove and REMOVE them + // from curLayout + idsToRemove.forEach(function(id, xxx) { + var ind = row.indexOf(id); + if (ind > 0) { // remember that index 0 of the row is the row ID tag + row.splice(ind, 1); + } + }); + + curTraceLayouts.push(curLayout); + }); + + curTraceLayouts.splice(0, 1); // remove seeded empty sentinel element + assert (curTrace.length == curTraceLayouts.length); +} + + // relies on curTrace and curInstr globals function updateOutput() { if (!curTrace) { From f64fd7e38290878c2ca3ddd5a80aa3c05d3ed70e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 5 Aug 2012 16:16:26 -0700 Subject: [PATCH 027/502] move stack_to_render computation to BACKEND --- PyTutorGAE/backend_test.py | 9 ++++++ PyTutorGAE/js/edu-python.js | 57 ++----------------------------------- PyTutorGAE/pg_logger.py | 47 ++++++++++++++++++++++++++++-- 3 files changed, 57 insertions(+), 56 deletions(-) create mode 100644 PyTutorGAE/backend_test.py diff --git a/PyTutorGAE/backend_test.py b/PyTutorGAE/backend_test.py new file mode 100644 index 000000000..885972ec9 --- /dev/null +++ b/PyTutorGAE/backend_test.py @@ -0,0 +1,9 @@ +import pg_logger, pprint + +pp = pprint.PrettyPrinter() + +def pprint_finalizer(trace): + for e in trace: + pp.pprint(e) + +pg_logger.exec_script_str(open('example-code/closures/closure3.txt').read(), pprint_finalizer) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index d428adcb5..5a6c7ed0d 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -626,47 +626,6 @@ function renderDataStructures(curEntry, vizDiv) { $(vizDiv + " #stack").append('
Frames
'); - // merge zombie_stack_locals and stack_locals into one master - // ordered list using some simple rules for aesthetics - var stack_to_render = []; - - // first push all regular stack entries backwards - if (curEntry.stack_locals) { - for (var i = curEntry.stack_locals.length - 1; i >= 0; i--) { - var entry = curEntry.stack_locals[i]; - entry.is_zombie = false; - entry.is_highlighted = (i == 0); - stack_to_render.push(entry); - } - } - - // zombie stack consists of exited functions that have returned nested functions - // push zombie stack entries at the BEGINNING of stack_to_render, - // EXCEPT put zombie entries BEHIND regular entries that are their parents - if (curEntry.zombie_stack_locals) { - - for (var i = curEntry.zombie_stack_locals.length - 1; i >= 0; i--) { - var entry = curEntry.zombie_stack_locals[i]; - entry.is_zombie = true; - entry.is_highlighted = false; // never highlight zombie entries - - // j should be 0 most of the time, so we're always inserting new - // elements to the front of stack_to_render (which is why we are - // iterating backwards over zombie_stack_locals). - var j = 0; - for (j = 0; j < stack_to_render.length; j++) { - if ($.inArray(stack_to_render[j].frame_id, entry.parent_frame_id_list) >= 0) { - continue; - } - break; - } - - stack_to_render.splice(j, 0, entry); - } - - } - - // first build up a list of lists representing the locations of TOP-LEVEL heap objects to be rendered. // doing so decouples the data format of curEntry from the nitty-gritty HTML rendering code, // which gives us more flexibility in experimenting with layout strategies. @@ -813,16 +772,11 @@ function renderDataStructures(curEntry, vizDiv) { } }); - $.each(stack_to_render, function(i, frame) { + $.each(curEntry.stack_to_render, function(i, frame) { if (frame.ordered_varnames.length > 0) { $.each(frame.ordered_varnames, function(xxx, varname) { var val = frame.encoded_locals[varname]; - // ignore return values for zombie frames - if (frame.is_zombie && varname == '__return__') { - return; - } - if (!isPrimitiveType(val)) { layoutHeapObject(val); //console.log(frame.func_name + ':', varname, getRefID(val)); @@ -1148,7 +1102,7 @@ function renderDataStructures(curEntry, vizDiv) { } - $.each(stack_to_render, function(i, e) { + $.each(curEntry.stack_to_render, function(i, e) { renderStackFrame(e, i, e.is_zombie); }); @@ -1199,11 +1153,6 @@ function renderDataStructures(curEntry, vizDiv) { $.each(frame.ordered_varnames, function(xxx, varname) { var val = localVars[varname]; - // don't render return values for zombie frames - if (is_zombie && varname == '__return__') { - return; - } - // special treatment for displaying return value and indicating // that the function is about to return to its caller // @@ -1296,7 +1245,7 @@ function renderDataStructures(curEntry, vizDiv) { // highlight the top-most non-zombie stack frame or, if not available, globals var frame_already_highlighted = false; - $.each(stack_to_render, function(i, e) { + $.each(curEntry.stack_to_render, function(i, e) { if (e.is_highlighted) { highlight_frame('stack' + i); frame_already_highlighted = true; diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index c5608218c..f0cf5c67c 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -383,13 +383,56 @@ def create_encoded_stack_entry(cur_frame): ordered_globals = [e for e in self.all_globals_in_order if e in encoded_globals] assert len(ordered_globals) == len(encoded_globals) + + # merge zombie_encoded_stack_locals and encoded_stack_locals + # into one master ordered list using some simple rules for + # making it look aesthetically pretty + stack_to_render = []; + + # first push all regular stack entries BACKWARDS + if encoded_stack_locals: + stack_to_render = encoded_stack_locals[::-1] + for e in stack_to_render: + e['is_zombie'] = False + e['is_highlighted'] = False + + stack_to_render[-1]['is_highlighted'] = True + + + # zombie_encoded_stack_locals consists of exited functions that have returned + # nested functions. Push zombie stack entries at the BEGINNING of stack_to_render, + # EXCEPT put zombie entries BEHIND regular entries that are their parents + for e in zombie_encoded_stack_locals[::-1]: + # don't display return value for zombie frames + try: + e['ordered_varnames'].remove('__return__') + except ValueError: + pass + + e['is_zombie'] = True + e['is_highlighted'] = False # never highlight zombie entries + + # j should be 0 most of the time, so we're always inserting new + # elements to the front of stack_to_render (which is why we are + # iterating backwards over zombie_stack_locals). + j = 0 + while j < len(stack_to_render): + if stack_to_render[j]['frame_id'] in e['parent_frame_id_list']: + j += 1 + continue + break + + stack_to_render.insert(j, e) + + trace_entry = dict(line=lineno, event=event_type, func_name=tos[0].f_code.co_name, globals=encoded_globals, ordered_globals=ordered_globals, - stack_locals=encoded_stack_locals, - zombie_stack_locals=zombie_encoded_stack_locals, + #stack_locals=encoded_stack_locals, # DEPRECATED in favor of stack_to_render + #zombie_stack_locals=zombie_encoded_stack_locals, # DEPRECATED in favor of stack_to_render + stack_to_render=stack_to_render, heap=self.encoder.get_heap(), stdout=get_user_stdout(tos[0])) From ee24c7135dba2c6ecc445b582a79bbea1a880c77 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 5 Aug 2012 18:40:12 -0700 Subject: [PATCH 028/502] added new aliasing example --- PyTutorGAE/js/edu-python-tutor.js | 5 +++++ PyTutorGAE/tutor.html | 3 ++- example-code/aliasing/aliasing8.txt | 8 ++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 example-code/aliasing/aliasing8.txt diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js index 8dcb226fa..b6955788d 100644 --- a/PyTutorGAE/js/edu-python-tutor.js +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -317,6 +317,11 @@ $(document).ready(function() { $.get("example-code/aliasing/aliasing7.txt", setCodeMirrorVal); return false; }); + $('#aliasing8Link').click(function() { + $.get("example-code/aliasing/aliasing8.txt", setCodeMirrorVal); + return false; + }); + $('#ll1Link').click(function() { $.get("example-code/linked-lists/ll1.txt", setCodeMirrorVal); diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index 5265362f8..3da922e43 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -128,7 +128,8 @@ aliasing 4 | aliasing 5 | aliasing 6 | -aliasing 7 +aliasing 7 | +aliasing 8

diff --git a/example-code/aliasing/aliasing8.txt b/example-code/aliasing/aliasing8.txt new file mode 100644 index 000000000..707d5196f --- /dev/null +++ b/example-code/aliasing/aliasing8.txt @@ -0,0 +1,8 @@ +# test whether heap objects "jiggle" between steps +x = [1, [2, [3, None]]] +y = [4, [5, [6, None]]] + +x[1][1] = y[1] # hopefully no jiggle! + +x = set(['apple', 'banana', 'carrot']) + From 95472de6f7264366756c88d8f382b527ec393432 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 5 Aug 2012 21:32:54 -0700 Subject: [PATCH 029/502] bammy --- PyTutorGAE/js/edu-python-tutor.js | 2 + PyTutorGAE/js/edu-python.js | 127 ++++++++++++++++++++++++++---- 2 files changed, 113 insertions(+), 16 deletions(-) diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js index b6955788d..9ffc054b7 100644 --- a/PyTutorGAE/js/edu-python-tutor.js +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -39,6 +39,8 @@ function enterVisualizeMode(traceData, inputCode) { curTrace = traceData; curInputCode = inputCode; + precomputeCurTraceLayouts(); // bam! + renderPyCodeOutput(inputCode); $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 5a6c7ed0d..4f6449516 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -298,7 +298,7 @@ function precomputeCurTraceLayouts() { assert(curTrace.length > 0); - $.each(curTrace, function(i, elt) { + $.each(curTrace, function(i, curEntry) { var prevLayout = curTraceLayouts[curTraceLayouts.length - 1]; // make a DEEP COPY of prevLayout to use as the basis for curLine @@ -325,6 +325,56 @@ function precomputeCurTraceLayouts() { } + function recurseIntoObject(id, curRow, newRow) { + // heuristic for laying out 1-D linked data structures: check for enclosing elements that are + // structurally identical and then lay them out as siblings in the same "row" + var heapObj = curEntry.heap[id]; + assert(heapObj); + + if (heapObj[0] == 'LIST' || heapObj[0] == 'TUPLE') { + $.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + + if (!isPrimitiveType(child)) { + var childID = getRefID(child); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + updateCurLayout(childID, curRow, newRow); + } + } + }); + } + else if (heapObj[0] == 'DICT') { + $.each(heapObj, function(ind, child) { + if (ind < 1) return; // skip type tag + + var dictVal = child[1]; + if (!isPrimitiveType(dictVal)) { + var childID = getRefID(dictVal); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + updateCurLayout(childID, curRow, newRow); + } + } + }); + } + else if (heapObj[0] == 'INSTANCE') { + jQuery.each(heapObj, function(ind, child) { + if (ind < 2) return; // skip type tag and class name + + // instance keys are always strings, so no need to recurse + assert(typeof child[0] == "string"); + + var instVal = child[1]; + if (!isPrimitiveType(instVal)) { + var childID = getRefID(instVal); + if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { + updateCurLayout(childID, curRow, newRow); + } + } + }); + } + } + + // a krazy function! // id - the new object ID to be inserted somewhere in curLayout // (if it's not already in there) @@ -335,11 +385,15 @@ function precomputeCurTraceLayouts() { function updateCurLayout(id, curRow, newRow) { var curLayoutLoc = curLayoutIndexOf(id); + console.log('updateCurLayout', id, curRow, newRow, curLayoutLoc); + // if id is already in curLayout ... if (curLayoutLoc) { var foundRow = curLayoutLoc.row; var foundIndex = curLayoutLoc.index; + idsToRemove.remove(id); // this id is already accounted for! + // splice the contents of newRow right BEFORE foundIndex. // (Think about when you're trying to insert in id=3 into ['row1', 2, 1] // to represent a linked list 3->2->1. You want to splice the 3 @@ -358,9 +412,8 @@ function precomputeCurTraceLayouts() { newRow.splice(0, newRow.length); } - // recurse to find more top-level linked entries to append onto curRow - // updateCurLayout(child ID, foundRow, []) - + // recurse to find more top-level linked entries to append onto foundRow + recurseIntoObject(id, foundRow, []); } else { // push id into newRow ... @@ -369,8 +422,8 @@ function precomputeCurTraceLayouts() { } newRow.push(id); - // RECURSE to find possible top-level linked entries - // updateCurLayout(child ID, curRow, newRow) + // recurse to find more top-level linked entries ... + recurseIntoObject(id, curRow, newRow); // if newRow hasn't been spliced into an existing row yet during @@ -384,34 +437,76 @@ function precomputeCurTraceLayouts() { } else { // otherwise push to curLayout as a new row - curLayout.push(newRow); + // + // TODO: this might not always look the best, since we might + // sometimes want to splice newRow in the MIDDLE of + // curLayout. Consider this example: + // + // x = [1,2,3] + // y = [4,5,6] + // x = [7,8,9] + // + // when the third line is executed, the arrows for x and y + // will be crossed (ugly!) since the new row for the [7,8,9] + // object is pushed to the end (bottom) of curLayout. The + // proper behavior is to push it to the beginning of + // curLayout where the old row for 'x' used to be. + curLayout.push($.extend(true /* make a deep copy */ , [], newRow)); } // regardless, newRow is now accounted for, so clear it for (var i = 1; i < newRow.length; i++) { // ignore row ID tag idsToRemove.remove(newRow[i]); } - newRow.splice(0, newRow.length); + newRow.splice(0, newRow.length); // kill it! } } } + console.log('BEG precomputeCurTraceLayouts', i); - // iterate through all globals and ordered stack frames - // and then call updateCurLayout(id, null, []); + // iterate through all globals and ordered stack frames and call updateCurLayout + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + if (val !== undefined) { // might not be defined at this line, which is OKAY! + if (!isPrimitiveType(val)) { + var id = getRefID(val); + updateCurLayout(id, null, []); + } + } + }); + + $.each(curEntry.stack_to_render, function(i, frame) { + $.each(frame.ordered_varnames, function(xxx, varname) { + var val = frame.encoded_locals[varname]; - // iterate through remaining elements of idsToRemove and REMOVE them - // from curLayout + if (!isPrimitiveType(val)) { + var id = getRefID(val); + updateCurLayout(id, null, []); + } + }); + }); + + + // iterate through remaining elements of idsToRemove and REMOVE them from curLayout idsToRemove.forEach(function(id, xxx) { - var ind = row.indexOf(id); - if (ind > 0) { // remember that index 0 of the row is the row ID tag - row.splice(ind, 1); - } + id = Number(id); // keys are stored as strings, so convert!!! + $.each(curLayout, function(rownum, row) { + var ind = row.indexOf(id); + if (ind > 0) { // remember that index 0 of the row is the row ID tag + row.splice(ind, 1); + } + }); }); + // now remove empty rows (i.e., those with only a row ID tag) from curLayout + curLayout = curLayout.filter(function(row) {return row.length > 1}); + curTraceLayouts.push(curLayout); + console.log('END precomputeCurTraceLayouts', i); + idsToRemove.forEach(function (id, xxx) {console.log(' idsToRemove:', id);}); }); curTraceLayouts.splice(0, 1); // remove seeded empty sentinel element From 2133ac8cf984332e819be07b9402cae8f3d52de1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 5 Aug 2012 22:18:30 -0700 Subject: [PATCH 030/502] some subtle renamings --- PyTutorGAE/js/edu-python-tutor.js | 30 +++++++++++++++++++++----- PyTutorGAE/js/edu-python.js | 35 +++++++++++-------------------- 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js index 9ffc054b7..c38154af2 100644 --- a/PyTutorGAE/js/edu-python-tutor.js +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -34,15 +34,35 @@ function enterEditMode() { $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); } -function enterVisualizeMode(traceData, inputCode) { +function preprocessBackendResult(traceData, inputCode) { // set gross globals, then let jQuery BBQ take care of the rest curTrace = traceData; curInputCode = inputCode; - precomputeCurTraceLayouts(); // bam! - renderPyCodeOutput(inputCode); + + // must postprocess traceData prior to running precomputeCurTraceLayouts() ... + var lastEntry = curTrace[curTrace.length - 1]; + + // GLOBAL! + instrLimitReached = (lastEntry.event == 'instruction_limit_reached'); + + if (instrLimitReached) { + curTrace.pop() // kill last entry + var warningMsg = lastEntry.exception_msg; + $("#errorOutput").html(htmlspecialchars(warningMsg)); + $("#errorOutput").show(); + } + // as imran suggests, for a (non-error) one-liner, SNIP off the + // first instruction so that we start after the FIRST instruction + // has been executed ... + else if (curTrace.length == 2) { + curTrace.shift(); + } + + precomputeCurTraceLayouts(); // bam! + $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); } @@ -113,7 +133,7 @@ $(document).ready(function() { // do this AFTER making #pyOutputPane visible, or else // jsPlumb connectors won't render properly - processTrace(false); + enterVisualizeMode(false); } else { assert(false); @@ -159,7 +179,7 @@ $(document).ready(function() { $('#executeBtn').attr('disabled', false); } else { - enterVisualizeMode(traceData, pyInputCodeMirror.getValue()); + preprocessBackendResult(traceData, pyInputCodeMirror.getValue()); } }, "json"); diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 4f6449516..9aadeaa9d 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -108,7 +108,7 @@ function htmlspecialchars(str) { return str; } -function processTrace(jumpToEnd) { +function enterVisualizeMode(jumpToEnd) { curInstr = 0; // only do this at most ONCE, and then clear out preseededCurInstr @@ -121,28 +121,9 @@ function processTrace(jumpToEnd) { $("#pyStdout").val(''); if (curTrace.length > 0) { - var lastEntry = curTrace[curTrace.length - 1]; - - // GLOBAL! - instrLimitReached = (lastEntry.event == 'instruction_limit_reached'); - - if (instrLimitReached) { - curTrace.pop() // kill last entry - var warningMsg = lastEntry.exception_msg; - $("#errorOutput").html(htmlspecialchars(warningMsg)); - $("#errorOutput").show(); - } - // as imran suggests, for a (non-error) one-liner, SNIP off the - // first instruction so that we start after the FIRST instruction - // has been executed ... - else if (curTrace.length == 2) { - curTrace.shift(); - } - - if (jumpToEnd) { // if there's an exception, then jump to the FIRST occurrence of - // that exception. otherwise, jump to the very end of execution. + // that exception. otherwise, jump to the very end of execution. curInstr = curTrace.length - 1; for (var i = 0; i < curTrace.length; i++) { @@ -165,8 +146,7 @@ function processTrace(jumpToEnd) { $('#executionSlider').slider({ min: 0, max: curTrace.length - 1, - step: 1 - + step: 1, }); //disable keyboard actions on the slider itself (to prevent double-firing of events) @@ -889,6 +869,15 @@ function renderDataStructures(curEntry, vizDiv) { console.log('---'); */ + // VERY VERY experimental!!! + // when doing this for realz, convert to using d3 and use row ID tag + // as unique object ID for object constancy. + var curEntryLayout = curTraceLayouts[curInstr]; + toplevelHeapLayout = curEntryLayout.map(function(row) + {return row.slice(1, row.length); // KRAZY!!! remove row ID tag for now + }); + + // Heap object rendering phase: From 985f65f89d7d1f783b6e9154778d6d92b24d2b6d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 5 Aug 2012 22:43:01 -0700 Subject: [PATCH 031/502] prevent infinite loops (and fix some other buggies too) --- PyTutorGAE/js/edu-python.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 9aadeaa9d..deb50f54c 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -292,6 +292,8 @@ function precomputeCurTraceLayouts() { } }); + var idsAlreadyLaidOut = d3.map(); // to prevent infinite recursion + function curLayoutIndexOf(id) { for (var i = 0; i < curLayout.length; i++) { @@ -363,6 +365,12 @@ function precomputeCurTraceLayouts() { // newRow - a new row that might be spliced into curRow or appended // as a new row in curLayout function updateCurLayout(id, curRow, newRow) { + // if this object has already been laid out, then PUNT!!! + if (idsAlreadyLaidOut.has(id)) { + return; + } + idsAlreadyLaidOut.set(id, 1); + var curLayoutLoc = curLayoutIndexOf(id); console.log('updateCurLayout', id, curRow, newRow, curLayoutLoc); From 33e79ed8687c600b2aa776653af4251815884c69 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 00:01:06 -0700 Subject: [PATCH 032/502] ugh more subtleties, bah --- PyTutorGAE/js/edu-python.js | 48 +++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index deb50f54c..3db725ebd 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -308,6 +308,10 @@ function precomputeCurTraceLayouts() { function recurseIntoObject(id, curRow, newRow) { + if (idsAlreadyLaidOut.has(id)) { + return; + } + // heuristic for laying out 1-D linked data structures: check for enclosing elements that are // structurally identical and then lay them out as siblings in the same "row" var heapObj = curEntry.heap[id]; @@ -365,12 +369,6 @@ function precomputeCurTraceLayouts() { // newRow - a new row that might be spliced into curRow or appended // as a new row in curLayout function updateCurLayout(id, curRow, newRow) { - // if this object has already been laid out, then PUNT!!! - if (idsAlreadyLaidOut.has(id)) { - return; - } - idsAlreadyLaidOut.set(id, 1); - var curLayoutLoc = curLayoutIndexOf(id); console.log('updateCurLayout', id, curRow, newRow, curLayoutLoc); @@ -382,22 +380,27 @@ function precomputeCurTraceLayouts() { idsToRemove.remove(id); // this id is already accounted for! - // splice the contents of newRow right BEFORE foundIndex. - // (Think about when you're trying to insert in id=3 into ['row1', 2, 1] - // to represent a linked list 3->2->1. You want to splice the 3 - // entry right before the 2 to form ['row1', 3, 2, 1]) - if (newRow.length > 1) { - var args = [foundIndex - 1, 0]; - for (var i = 1; i < newRow.length; i++) { // ignore row ID tag - args.push(newRow[i]); - idsToRemove.remove(newRow[i]); - } - foundRow.splice.apply(args); + // very subtle ... if id hasn't already been handled in + // this iteration, then splice newRow into foundRow. otherwise + // (later) append newRow onto curLayout as a truly new row + if (!idsAlreadyLaidOut.has(id)) { + // splice the contents of newRow right BEFORE foundIndex. + // (Think about when you're trying to insert in id=3 into ['row1', 2, 1] + // to represent a linked list 3->2->1. You want to splice the 3 + // entry right before the 2 to form ['row1', 3, 2, 1]) + if (newRow.length > 1) { + var args = [foundIndex, 0]; + for (var i = 1; i < newRow.length; i++) { // ignore row ID tag + args.push(newRow[i]); + idsToRemove.remove(newRow[i]); + } + foundRow.splice.apply(foundRow, args); - // remove ALL elements from newRow since they've all been accounted for - // (but don't reassign it away to an empty list, since the - // CALLER checks its value. TODO: get rid of this gross hack?!?) - newRow.splice(0, newRow.length); + // remove ALL elements from newRow since they've all been accounted for + // (but don't reassign it away to an empty list, since the + // CALLER checks its value. TODO: how to get rid of this gross hack?!?) + newRow.splice(0, newRow.length); + } } // recurse to find more top-level linked entries to append onto foundRow @@ -450,6 +453,9 @@ function precomputeCurTraceLayouts() { } } + + // do this at the VERY END! + idsAlreadyLaidOut.set(id, 1); } console.log('BEG precomputeCurTraceLayouts', i); From 06485438f37f5c63fc666aede026227792237de9 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 00:14:29 -0700 Subject: [PATCH 033/502] more subtle changes ... ughhh --- PyTutorGAE/js/edu-python.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 3db725ebd..536a48c66 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -308,10 +308,6 @@ function precomputeCurTraceLayouts() { function recurseIntoObject(id, curRow, newRow) { - if (idsAlreadyLaidOut.has(id)) { - return; - } - // heuristic for laying out 1-D linked data structures: check for enclosing elements that are // structurally identical and then lay them out as siblings in the same "row" var heapObj = curEntry.heap[id]; @@ -324,7 +320,9 @@ function precomputeCurTraceLayouts() { if (!isPrimitiveType(child)) { var childID = getRefID(child); if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { - updateCurLayout(childID, curRow, newRow); + if (!idsAlreadyLaidOut.has(childID)) { // TODO: awkward guard location + updateCurLayout(childID, curRow, newRow); + } } } }); @@ -337,7 +335,9 @@ function precomputeCurTraceLayouts() { if (!isPrimitiveType(dictVal)) { var childID = getRefID(dictVal); if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { - updateCurLayout(childID, curRow, newRow); + if (!idsAlreadyLaidOut.has(childID)) { // TODO: awkward guard location + updateCurLayout(childID, curRow, newRow); + } } } }); @@ -353,7 +353,9 @@ function precomputeCurTraceLayouts() { if (!isPrimitiveType(instVal)) { var childID = getRefID(instVal); if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { - updateCurLayout(childID, curRow, newRow); + if (!idsAlreadyLaidOut.has(childID)) { // TODO: awkward guard location + updateCurLayout(childID, curRow, newRow); + } } } }); @@ -373,6 +375,9 @@ function precomputeCurTraceLayouts() { console.log('updateCurLayout', id, curRow, newRow, curLayoutLoc); + var alreadyLaidOut = idsAlreadyLaidOut.has(id); + idsAlreadyLaidOut.set(id, 1); // unconditionally set now + // if id is already in curLayout ... if (curLayoutLoc) { var foundRow = curLayoutLoc.row; @@ -383,7 +388,7 @@ function precomputeCurTraceLayouts() { // very subtle ... if id hasn't already been handled in // this iteration, then splice newRow into foundRow. otherwise // (later) append newRow onto curLayout as a truly new row - if (!idsAlreadyLaidOut.has(id)) { + if (!alreadyLaidOut) { // splice the contents of newRow right BEFORE foundIndex. // (Think about when you're trying to insert in id=3 into ['row1', 2, 1] // to represent a linked list 3->2->1. You want to splice the 3 @@ -453,9 +458,6 @@ function precomputeCurTraceLayouts() { } } - - // do this at the VERY END! - idsAlreadyLaidOut.set(id, 1); } console.log('BEG precomputeCurTraceLayouts', i); From 0479387d97bf5bbdd1d1259f96e1ccc0a5a7812e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 14:35:26 -0700 Subject: [PATCH 034/502] more robust error handling --- PyTutorGAE/js/edu-python-tutor.js | 33 +++++++++++++++++++------------ 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js index c38154af2..43d1cb2a0 100644 --- a/PyTutorGAE/js/edu-python-tutor.js +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -159,21 +159,28 @@ $(document).ready(function() { function(traceData) { // don't enter visualize mode if there are killer errors: if (!traceData || + (traceData.length == 0) || ((traceData.length == 1) && traceData[0].event == 'uncaught_exception')) { - var errorLineNo = traceData[0].line - 1; /* CodeMirror lines are zero-indexed */ - if (errorLineNo !== undefined) { - // highlight the faulting line in pyInputCodeMirror - pyInputCodeMirror.focus(); - pyInputCodeMirror.setCursor(errorLineNo, 0); - pyInputCodeMirror.setLineClass(errorLineNo, null, 'errorLine'); - - pyInputCodeMirror.setOption('onChange', function() { - pyInputCodeMirror.setLineClass(errorLineNo, null, null); // reset line back to normal - pyInputCodeMirror.setOption('onChange', null); // cancel - }); - } - alert(traceData[0].exception_msg); + if (traceData.length > 0) { + var errorLineNo = traceData[0].line - 1; /* CodeMirror lines are zero-indexed */ + if (errorLineNo !== undefined) { + // highlight the faulting line in pyInputCodeMirror + pyInputCodeMirror.focus(); + pyInputCodeMirror.setCursor(errorLineNo, 0); + pyInputCodeMirror.setLineClass(errorLineNo, null, 'errorLine'); + + pyInputCodeMirror.setOption('onChange', function() { + pyInputCodeMirror.setLineClass(errorLineNo, null, null); // reset line back to normal + pyInputCodeMirror.setOption('onChange', null); // cancel + }); + } + + alert(traceData[0].exception_msg); + } + else { + alert("Whoa, unknown error! Please reload and try again."); + } $('#executeBtn').html("Visualize execution"); $('#executeBtn').attr('disabled', false); From f0eefe1e6534ec947ea61e56304ee00d02918df0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 14:42:02 -0700 Subject: [PATCH 035/502] continue massive refactoring to use new precomputed layout cod --- PyTutorGAE/js/edu-python.js | 190 +++--------------------------------- 1 file changed, 14 insertions(+), 176 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 536a48c66..ce64fbf43 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -717,185 +717,20 @@ function renderDataStructures(curEntry, vizDiv) { $(vizDiv + " #stack").append('
Frames
'); - // first build up a list of lists representing the locations of TOP-LEVEL heap objects to be rendered. - // doing so decouples the data format of curEntry from the nitty-gritty HTML rendering code, - // which gives us more flexibility in experimenting with layout strategies. - // - // each outer list represents a "row" in the heap layout (represented via, say, div elements) - // and each inner list represents "columns" within a row (represented via, say, table td elements) - var toplevelHeapLayout = []; - var toplevelHeapLayoutIDs = {}; // set of IDs contained within toplevelHeapLayout - var alreadyLaidObjectIDs = {}; // set of IDs of objects that have already been laid out - // (not necessarily just in toplevelHeapLayout since some elements - // are EMBEDDED within other heap objects) - - - function layoutHeapObject(ref) { - - function layoutHeapObjectHelper(id, row /* list of IDs */, isTopLevel) { - if (alreadyLaidObjectIDs[id] == undefined) { - - // Only push to row if isTopLevel since it only stores top-level objects ... - if (isTopLevel) { - row.push(id); - } - - // but ALWAYS record that this object has already been laid out, no matter what - alreadyLaidObjectIDs[id] = 1; - - // heuristic for laying out 1-D linked data structures: check for enclosing elements that are - // structurally identical and then lay them out as siblings in the same "row" - var heapObj = curEntry.heap[id]; - assert(heapObj); - - if (heapObj[0] == 'LIST' || heapObj[0] == 'TUPLE') { - jQuery.each(heapObj, function(ind, child) { - if (ind < 1) return; // skip type tag - - if (!isPrimitiveType(child)) { - var childID = getRefID(child); - if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { - layoutHeapObjectHelper(childID, row, true); - } - else { - layoutHeapObjectHelper(childID, null, false /* render embedded within heapObj */); - } - } - }); - } - else if (heapObj[0] == 'SET') { - jQuery.each(heapObj, function(ind, child) { - if (ind < 1) return; // skip type tag - if (!isPrimitiveType(child)) { - layoutHeapObjectHelper(getRefID(child), null, false /* render embedded within heapObj */); - } - }); - } - else if (heapObj[0] == 'DICT') { - jQuery.each(heapObj, function(ind, child) { - if (ind < 1) return; // skip type tag - - var dictKey = child[0]; - if (!isPrimitiveType(dictKey)) { - layoutHeapObjectHelper(getRefID(dictKey), null, false /* render embedded within heapObj */); - } - - var dictVal = child[1]; - if (!isPrimitiveType(dictVal)) { - var childID = getRefID(dictVal); - if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { - layoutHeapObjectHelper(childID, row, true); - } - else { - layoutHeapObjectHelper(childID, null, false /* render embedded within heapObj */); - } - } - }); - } - else if (heapObj[0] == 'INSTANCE') { - jQuery.each(heapObj, function(ind, child) { - if (ind < 2) return; // skip type tag and class name - - // instance keys are always strings, so no need to recurse - assert(typeof child[0] == "string"); - - var instVal = child[1]; - if (!isPrimitiveType(instVal)) { - var childID = getRefID(instVal); - if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { - layoutHeapObjectHelper(childID, row, true); - } - else { - layoutHeapObjectHelper(childID, null, false /* render embedded within heapObj */); - } - } - }); - } - else if (heapObj[0] == 'CLASS') { - jQuery.each(heapObj, function(ind, child) { - if (ind < 3) return; // skip type tag, class name, and superclass names - // class attr keys are always strings, so no need to recurse - - var classAttrVal = child[1]; - if (!isPrimitiveType(classAttrVal)) { - layoutHeapObjectHelper(getRefID(classAttrVal), null, false /* render embedded within heapObj */); - } - }); - } - } - } - - var id = getRefID(ref); - var newRow = []; - - layoutHeapObjectHelper(id, newRow, true); - if (newRow.length > 0) { - toplevelHeapLayout.push(newRow); - $.each(newRow, function(i, e) { - toplevelHeapLayoutIDs[e] = 1; - }); - } - } - - - - // variables are displayed in the following order, so lay out heap objects in the same order: - // - globals - // - stack entries (regular and zombies) - - // if there are multiple aliases to the same object, we want to render - // the one "deepest" in the stack, so that we can hopefully prevent - // objects from jumping around as functions are called and returned. - // e.g., if a list L appears as a global variable and as a local in a - // function, we want to render L when rendering the global frame. - // - // this is straightforward: just go through globals first and then - // each stack frame in order :) - - $.each(curEntry.ordered_globals, function(i, varname) { - var val = curEntry.globals[varname]; - // (use '!==' to do an EXACT match against undefined) - if (val !== undefined) { // might not be defined at this line, which is OKAY! - if (!isPrimitiveType(val)) { - layoutHeapObject(val); - //console.log('global:', varname, getRefID(val)); - } - } - }); - - $.each(curEntry.stack_to_render, function(i, frame) { - if (frame.ordered_varnames.length > 0) { - $.each(frame.ordered_varnames, function(xxx, varname) { - var val = frame.encoded_locals[varname]; - if (!isPrimitiveType(val)) { - layoutHeapObject(val); - //console.log(frame.func_name + ':', varname, getRefID(val)); - } - }); - } - }); + // Heap object rendering phase: - // print toplevelHeapLayout - /* - $.each(toplevelHeapLayout, function(i, elt) { - console.log(elt); - }); - console.log('---'); - */ // VERY VERY experimental!!! // when doing this for realz, convert to using d3 and use row ID tag // as unique object ID for object constancy. var curEntryLayout = curTraceLayouts[curInstr]; - toplevelHeapLayout = curEntryLayout.map(function(row) - {return row.slice(1, row.length); // KRAZY!!! remove row ID tag for now - }); - + var toplevelHeapLayout = curEntryLayout.map(function(row) { + return row.slice(1, row.length); // KRAZY!!! remove row ID tag for now + }); - // Heap object rendering phase: // Key: CSS ID of the div element representing the stack frame variable @@ -909,12 +744,14 @@ function renderDataStructures(curEntry, vizDiv) { var heap_pointer_src_id = 1; // increment this to be unique for each heap_pointer_src_* - var renderedObjectIDs = {}; // set (TODO: refactor all sets to use d3.map) + var renderedObjectIDs = d3.map(); - // count all toplevelHeapLayoutIDs as already rendered since we will render them + // count everything in toplevelHeapLayout as already rendered since we will render them // in the d3 .each() statement labeled 'FOOBAR' (might be confusing!) - $.each(toplevelHeapLayoutIDs, function(k, v) { - renderedObjectIDs[k] = v; + $.each(toplevelHeapLayout, function(xxx, row) { + for (var i = 0; i < row.length; i++) { + renderedObjectIDs.set(row[i], 1); + } }); @@ -978,8 +815,9 @@ function renderDataStructures(curEntry, vizDiv) { function renderCompoundObject(objID, d3DomElement, isTopLevel) { - if (!isTopLevel && (renderedObjectIDs[objID] != undefined)) { - // TODO: render jsPlumb arrow source since this heap object has already been rendered + if (!isTopLevel && renderedObjectIDs.has(objID)) { + // render jsPlumb arrow source since this heap object has already been rendered + // (or will be rendered soon) // add a stub so that we can connect it with a connector later. // IE needs this div to be NON-EMPTY in order to properly @@ -1005,7 +843,7 @@ function renderDataStructures(curEntry, vizDiv) { d3DomElement = $('#heap_object_' + objID); - renderedObjectIDs[objID] = 1; + renderedObjectIDs.set(objID, 1); var obj = curEntry.heap[objID]; assert($.isArray(obj)); From 91118e38f72b96fb1059b84f73a9d26c7b44e975 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 14:51:11 -0700 Subject: [PATCH 036/502] woohoo john's example now works! --- example-code/linked-lists/ll1.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/example-code/linked-lists/ll1.txt b/example-code/linked-lists/ll1.txt index db8b48fc0..223f228be 100644 --- a/example-code/linked-lists/ll1.txt +++ b/example-code/linked-lists/ll1.txt @@ -8,3 +8,5 @@ y = None for i in range(6, 0, -1): y = (i, y) +x[1][0]=y[1][1] # courtesy of John DeNero! + From b71fb4e9cb2bb3950478ec74816c3865344a65e9 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 15:47:04 -0700 Subject: [PATCH 037/502] slight code simplification --- PyTutorGAE/js/edu-python.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index ce64fbf43..9c7fcf892 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -308,6 +308,8 @@ function precomputeCurTraceLayouts() { function recurseIntoObject(id, curRow, newRow) { + console.log('recurseIntoObject', id, curRow, newRow); + // heuristic for laying out 1-D linked data structures: check for enclosing elements that are // structurally identical and then lay them out as siblings in the same "row" var heapObj = curEntry.heap[id]; @@ -320,9 +322,7 @@ function precomputeCurTraceLayouts() { if (!isPrimitiveType(child)) { var childID = getRefID(child); if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { - if (!idsAlreadyLaidOut.has(childID)) { // TODO: awkward guard location - updateCurLayout(childID, curRow, newRow); - } + updateCurLayout(childID, curRow, newRow); } } }); @@ -335,9 +335,7 @@ function precomputeCurTraceLayouts() { if (!isPrimitiveType(dictVal)) { var childID = getRefID(dictVal); if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { - if (!idsAlreadyLaidOut.has(childID)) { // TODO: awkward guard location - updateCurLayout(childID, curRow, newRow); - } + updateCurLayout(childID, curRow, newRow); } } }); @@ -353,9 +351,7 @@ function precomputeCurTraceLayouts() { if (!isPrimitiveType(instVal)) { var childID = getRefID(instVal); if (structurallyEquivalent(heapObj, curEntry.heap[childID])) { - if (!idsAlreadyLaidOut.has(childID)) { // TODO: awkward guard location - updateCurLayout(childID, curRow, newRow); - } + updateCurLayout(childID, curRow, newRow); } } }); @@ -371,9 +367,11 @@ function precomputeCurTraceLayouts() { // newRow - a new row that might be spliced into curRow or appended // as a new row in curLayout function updateCurLayout(id, curRow, newRow) { - var curLayoutLoc = curLayoutIndexOf(id); + if (idsAlreadyLaidOut.has(id)) { + return; // PUNT! + } - console.log('updateCurLayout', id, curRow, newRow, curLayoutLoc); + var curLayoutLoc = curLayoutIndexOf(id); var alreadyLaidOut = idsAlreadyLaidOut.has(id); idsAlreadyLaidOut.set(id, 1); // unconditionally set now From 4c28331a4773bad03b8450690ee6759a4c62a0c0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 15:47:41 -0700 Subject: [PATCH 038/502] remove printfs --- PyTutorGAE/js/edu-python.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 9c7fcf892..418158fc6 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -308,7 +308,6 @@ function precomputeCurTraceLayouts() { function recurseIntoObject(id, curRow, newRow) { - console.log('recurseIntoObject', id, curRow, newRow); // heuristic for laying out 1-D linked data structures: check for enclosing elements that are // structurally identical and then lay them out as siblings in the same "row" @@ -458,8 +457,6 @@ function precomputeCurTraceLayouts() { } } - console.log('BEG precomputeCurTraceLayouts', i); - // iterate through all globals and ordered stack frames and call updateCurLayout $.each(curEntry.ordered_globals, function(i, varname) { @@ -499,8 +496,6 @@ function precomputeCurTraceLayouts() { curLayout = curLayout.filter(function(row) {return row.length > 1}); curTraceLayouts.push(curLayout); - console.log('END precomputeCurTraceLayouts', i); - idsToRemove.forEach(function (id, xxx) {console.log(' idsToRemove:', id);}); }); curTraceLayouts.splice(0, 1); // remove seeded empty sentinel element From 38e1b7325c3837f99e5fb4d30a8585e9366a03c3 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 17:40:12 -0700 Subject: [PATCH 039/502] started porting over to using d3 more exclusively for heap rendering --- PyTutorGAE/js/edu-python.js | 74 +++++++++++++++++++++++++++---------- 1 file changed, 54 insertions(+), 20 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 418158fc6..6460c3198 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -605,7 +605,8 @@ function updateOutput() { // finally, render all the data structures!!! - renderDataStructures(curEntry, "#dataViz"); + var curToplevelLayout = curTraceLayouts[curInstr]; + renderDataStructures(curEntry, curToplevelLayout, "#dataViz"); } @@ -678,6 +679,7 @@ function structurallyEquivalent(obj1, obj2) { // Renders the current trace entry (curEntry) into the div named by vizDiv +// using the top-level heap layout provided by toplevelHeapLayout // // The "3.0" version of renderDataStructures renders variables in // a stack, values in a separate heap, and draws line connectors @@ -694,7 +696,7 @@ function structurallyEquivalent(obj1, obj2) { // INLINE within each stack frame without any explicit representation // of data structure aliasing. That is, aliased objects were rendered // multiple times, and a unique ID label was used to identify aliases. -function renderDataStructures(curEntry, vizDiv) { +function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { // VERY VERY IMPORTANT --- and reset ALL jsPlumb state to prevent // weird mis-behavior!!! @@ -714,18 +716,6 @@ function renderDataStructures(curEntry, vizDiv) { // Heap object rendering phase: - - // VERY VERY experimental!!! - // when doing this for realz, convert to using d3 and use row ID tag - // as unique object ID for object constancy. - var curEntryLayout = curTraceLayouts[curInstr]; - - var toplevelHeapLayout = curEntryLayout.map(function(row) { - return row.slice(1, row.length); // KRAZY!!! remove row ID tag for now - }); - - - // Key: CSS ID of the div element representing the stack frame variable // (for stack->heap connections) or heap object (for heap->heap connections) // the format is: 'heap_pointer_src_' @@ -749,20 +739,64 @@ function renderDataStructures(curEntry, vizDiv) { // render the heap by mapping toplevelHeapLayout into and From f7726f5b4d8080c6efda5a5e27f7b12e3bda98c5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 21:27:23 -0700 Subject: [PATCH 041/502] sorta works a bit better --- PyTutorGAE/js/edu-python.js | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 6065b083a..d2527450d 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -756,29 +756,22 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ function(objID) {return objID;} /* each object ID is unique for constancy */) - heapColumns.each(function(objID, i) { - console.log('UPDATE ELT', objID); + heapColumns + .order() // VERY IMPORTANT to put in the order corresponding to data elements + // d3 automatically adds NEW elements to the update selection, to prevent code duplication + .each(function(objID, i) { + console.log('NEW/UPDATE ELT', objID); // TODO: add a smoother transition in the future // Right now, just delete the old element and render a new one in its place $(this).empty(); renderCompoundObject(objID, $(this), true); }) - // the problem here is that new columns are always appended at the end of the row using append(). - // e.g., if you have a transition from ['row1', 1] to ['row1', 2, 1], you want the column - // for object 2 to be inserted BEFORE than the one for object 1, but right now it's inserted AFTER. - // insert() allows insertion based on some constant selector, though. - // an alternative is to simply append() and then sort the table columns somehow in the each()? - heapColumns.enter().insert('td', ':first-child') + heapColumns.enter().append('td') .attr('class', 'toplevelHeapObject') .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) - .each(function(objID, i) { - console.log('NEW ELT', objID); - renderCompoundObject(objID, $(this), true); - }) heapColumns.exit() - .each(function(objID, i) {console.log('DEL ELT:', objID, i); $(this).empty();}) .remove() @@ -789,15 +782,6 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { .selectAll('td') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ function(objID) {return objID;} /* each object ID is unique for constancy */) - // TODO: I don't think we need to handle updates to elements of NEW rows, since all of the - // constituent elements are going to be new by definition - //.each(function(objID, i) { - // console.log('UPDATE ELT B', objID); - // // TODO: add a smoother transition in the future - // // Right now, just delete the old element and render a new one in its place - // $(this).empty(); - // renderCompoundObject(objID, $(this), true); - //}) .enter().append('td') .attr('class', 'toplevelHeapObject') .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) From 5f1d652977f24238f61fc95c55518d6255a7ec8b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 21:40:19 -0700 Subject: [PATCH 042/502] woohoo removed printfs --- PyTutorGAE/js/edu-python.js | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index d2527450d..7a4e5d864 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -739,9 +739,8 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { }); - // render the heap by mapping toplevelHeapLayout into
elements using d3 - d3.select(vizDiv + ' #heap') - .selectAll('table') - .data(toplevelHeapLayout) - .enter().append('table') + + // TODO: make the #heap div PERSISTENT so that d3 can know how to properly handle transitions + + var heapRows = d3.select(vizDiv + ' #heap') + .selectAll('table.heapRow') + .data(toplevelHeapLayout, function(objLst) { + return objLst[0]; // return first element, which is the row ID tag + }) + + + // update existing heap row + heapRows.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) + .selectAll('td') + .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ + function(objID) {return objID;} /* each object ID is unique for constancy */) + .each(function(objID, i) { + console.log('UPDATE ELT', objID); + // TODO: how do we sensibly render an UPDATE to an element? + }) + .enter().append('td') + .attr('class', 'toplevelHeapObject') + .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) + .each(function(objID, i) { + console.log('NEW ELT', objID); + renderCompoundObject(objID, $(this), true); + }) + + // TODO: handle exit + //.exit() + //.each(function(objID, i) {console.log('DEL ELT:', objID, i);}) + //.remove() + + + // insert new heap rows + heapRows.enter().append('table') + .each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) .attr('class', 'heapRow') .selectAll('td') - .data(function(d, i) {return d;}) // map over each row ... + .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ + function(objID) {return objID;} /* each object ID is unique for constancy */) + .each(function(objID, i) { + console.log('UPDATE ELT', objID); + // TODO: how do we sensibly render an UPDATE to an element? + }) .enter().append('td') .attr('class', 'toplevelHeapObject') .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) .each(function(objID, i) { - renderCompoundObject(objID, $(this), true); // label FOOBAR (see renderedObjectIDs) + console.log('NEW ELT', objID); + renderCompoundObject(objID, $(this), true); }); + // remove deleted rows + heapRows.exit() + .each(function(objLst, i) {console.log('DEL ROW:', objLst, i);}) + .remove(); + + function renderNestedObject(obj, d3DomElement) { if (isPrimitiveType(obj)) { From 6202b3c525ef308e3b0b638ad58e5681045acb0a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 18:44:47 -0700 Subject: [PATCH 040/502] start playing with d3 for stuff ... aghhh --- PyTutorGAE/js/edu-python.js | 56 ++++++++++++++++++++++--------------- PyTutorGAE/tutor.html | 19 ++++++++++++- 2 files changed, 51 insertions(+), 24 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 6460c3198..6065b083a 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -138,6 +138,10 @@ function enterVisualizeMode(jumpToEnd) { } + // clear stack and heap visualizations: + $('#dataViz #stack').html('
Frames
') + $('#dataViz #heap').html('
Objects
') + // remove any existing sliders $('#executionSlider').slider('destroy'); @@ -702,13 +706,10 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { // weird mis-behavior!!! jsPlumb.reset(); - $(vizDiv).empty(); // jQuery empty() is better than .html('') - - - // create a tabular layout for stack and heap side-by-side - // TODO: figure out how to do this using CSS in a robust way! - $(vizDiv).html('
'); + // clear the stack and render it from scratch. + // the heap must be PERSISTENT so that d3 can render heap transitions. + $(vizDiv + " #stack").empty(); $(vizDiv + " #stack").append('
Frames
'); @@ -750,15 +751,25 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { // update existing heap row - heapRows.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) + var heapColumns = heapRows.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) .selectAll('td') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ function(objID) {return objID;} /* each object ID is unique for constancy */) - .each(function(objID, i) { + + heapColumns.each(function(objID, i) { console.log('UPDATE ELT', objID); - // TODO: how do we sensibly render an UPDATE to an element? + // TODO: add a smoother transition in the future + // Right now, just delete the old element and render a new one in its place + $(this).empty(); + renderCompoundObject(objID, $(this), true); }) - .enter().append('td') + + // the problem here is that new columns are always appended at the end of the row using append(). + // e.g., if you have a transition from ['row1', 1] to ['row1', 2, 1], you want the column + // for object 2 to be inserted BEFORE than the one for object 1, but right now it's inserted AFTER. + // insert() allows insertion based on some constant selector, though. + // an alternative is to simply append() and then sort the table columns somehow in the each()? + heapColumns.enter().insert('td', ':first-child') .attr('class', 'toplevelHeapObject') .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) .each(function(objID, i) { @@ -766,10 +777,9 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { renderCompoundObject(objID, $(this), true); }) - // TODO: handle exit - //.exit() - //.each(function(objID, i) {console.log('DEL ELT:', objID, i);}) - //.remove() + heapColumns.exit() + .each(function(objID, i) {console.log('DEL ELT:', objID, i); $(this).empty();}) + .remove() // insert new heap rows @@ -779,10 +789,15 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { .selectAll('td') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ function(objID) {return objID;} /* each object ID is unique for constancy */) - .each(function(objID, i) { - console.log('UPDATE ELT', objID); - // TODO: how do we sensibly render an UPDATE to an element? - }) + // TODO: I don't think we need to handle updates to elements of NEW rows, since all of the + // constituent elements are going to be new by definition + //.each(function(objID, i) { + // console.log('UPDATE ELT B', objID); + // // TODO: add a smoother transition in the future + // // Right now, just delete the old element and render a new one in its place + // $(this).empty(); + // renderCompoundObject(objID, $(this), true); + //}) .enter().append('td') .attr('class', 'toplevelHeapObject') .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) @@ -1021,11 +1036,6 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { } - // prepend heap header after all the dust settles: - $(vizDiv + ' #heap').prepend('
Objects
'); - - - // Render globals and then stack frames: // TODO: could convert to using d3 to map globals and stack frames directly into stack frame divs // (which might make it easier to do smooth transitions) diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index 3da922e43..28dfdf551 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -198,7 +198,24 @@
-
+
+ + + + + + +
+
+
Frames
+
+
+
+
Objects
+
+
+ +
and \
elements using d3 - - // TODO: make the #heap div PERSISTENT so that d3 can know how to properly handle transitions + // use d3 to render the heap by mapping toplevelHeapLayout into + // and '); - tbl.append(''); - } - else { - tbl.append(''); - } - - var curTr = tbl.find('tr:last'); - - if (isPrimitiveType(val)) { - renderPrimitiveObject(val, curTr.find("td.stackFrameValue")); - } - else { - // add a stub so that we can connect it with a connector later. - // IE needs this div to be NON-EMPTY in order to properly - // render jsPlumb endpoints, so that's why we add an " "! - - // make sure varname doesn't contain any weird - // characters that are illegal for CSS ID's ... - var varDivID = divID + '__' + varnameToCssID(varname); - curTr.find("td.stackFrameValue").append('
 
'); - - assert(connectionEndpointIDs[varDivID] === undefined); - var heapObjID = 'heap_object_' + getObjectID(val); - connectionEndpointIDs[varDivID] = heapObjID; - } - }); - } - } - - - // finally add all the connectors! - for (varID in connectionEndpointIDs) { - var valueID = connectionEndpointIDs[varID]; - jsPlumb.connect({source: varID, target: valueID}); - } - - - function highlight_frame(frameID) { - var allConnections = jsPlumb.getConnections(); - for (var i = 0; i < allConnections.length; i++) { - var c = allConnections[i]; - - // this is VERY VERY fragile code, since it assumes that going up - // five layers of parent() calls will get you from the source end - // of the connector to the enclosing stack frame - var stackFrameDiv = c.source.parent().parent().parent().parent().parent(); - - // if this connector starts in the selected stack frame ... - if (stackFrameDiv.attr('id') == frameID) { - // then HIGHLIGHT IT! - c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); - c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); - c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible - - // ... and move it to the VERY FRONT - $(c.canvas).css("z-index", 1000); - } - // for heap->heap connectors - else if (heapConnectionEndpointIDs[c.endpoints[0].elementId] !== undefined) { - // then HIGHLIGHT IT! - c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); // make thinner - c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); - c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible - //c.setConnector([ "Bezier", {curviness: 80} ]); // make it more curvy - c.setConnector([ "StateMachine" ]); - c.addOverlay([ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]); - } - else { - // else unhighlight it - c.setPaintStyle({lineWidth:1, strokeStyle: lightGray}); - c.endpoints[0].setPaintStyle({fillStyle: lightGray}); - c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible - $(c.canvas).css("z-index", 0); - } - } - - // clear everything, then just activate $(this) one ... - $(".stackFrame").removeClass("highlightedStackFrame"); - $('#' + frameID).addClass("highlightedStackFrame"); - } - - - // highlight the top-most non-zombie stack frame or, if not available, globals - var frame_already_highlighted = false; - $.each(stack_to_render, function(i, e) { - if (e.is_highlighted) { - highlight_frame('stack' + i); - frame_already_highlighted = true; - } - }); - - if (!frame_already_highlighted) { - highlight_frame('globals'); - } - -} - - -function isPrimitiveType(obj) { - var typ = typeof obj; - return ((obj == null) || (typ != "object")); -} - -function getRefID(obj) { - assert(obj[0] == 'REF'); - return obj[1]; -} - -/* -function renderInline(obj) { - return isPrimitiveType(obj) && (typeof obj != 'string'); -} -*/ - -// Key is a primitive value (e.g., 'hello', 3.14159, true) -// Value is a unique primitive ID (starting with 'p' to disambiguate -// from regular object IDs) -var primitive_IDs = {null: 'p0', true: 'p1', false: 'p2'}; -var cur_pID = 3; - -function getObjectID(obj) { - if (isPrimitiveType(obj)) { - // primitive objects get IDs starting with 'p' ... - // this renders aliases as 'interned' for simplicity - var pID = primitive_IDs[obj]; - if (pID !== undefined) { - return pID; - } - else { - var new_pID = 'p' + cur_pID; - primitive_IDs[obj] = new_pID; - cur_pID++; - return new_pID; - } - return obj; - } - else { - assert($.isArray(obj)); - - if ((obj[0] == 'INSTANCE') || (obj[0] == 'CLASS')) { - return obj[2]; - } - else { - return obj[1]; - } - } -} - - - -String.prototype.rtrim = function() { - return this.replace(/\s*$/g, ""); -} - - -function renderPyCodeOutput(codeStr) { - clearSliderBreakpoints(); // start fresh! - - var lines = codeStr.rtrim().split('\n'); - - // reset it! - codeOutputLines = []; - $.each(lines, function(i, cod) { - var n = {}; - n.text = cod; - n.lineNumber = i + 1; - n.executionPoints = []; - n.backgroundColor = null; - n.breakpointHere = false; - - - $.each(curTrace, function(i, elt) { - if (elt.line == n.lineNumber) { - n.executionPoints.push(i); - } - }); - - - // if there is a comment containing 'breakpoint' and this line was actually executed, - // then set a breakpoint on this line - var breakpointInComment = false; - toks = cod.split('#'); - for (var j = 1 /* start at index 1, not 0 */; j < toks.length; j++) { - if (toks[j].indexOf('breakpoint') != -1) { - breakpointInComment = true; - } - } - - if (breakpointInComment && n.executionPoints.length > 0) { - n.breakpointHere = true; - addToBreakpoints(n.executionPoints); - } - - codeOutputLines.push(n); - }); - - - $("#pyCodeOutputDiv").empty(); // jQuery empty() is better than .html('') - - - // maps codeOutputLines to both table columns - d3.select('#pyCodeOutputDiv') - .append('table') - .attr('id', 'pyCodeOutput') - .selectAll('tr') - .data(codeOutputLines) - .enter().append('tr') - .selectAll('td') - .data(function(e, i){return [e, e];}) // bind an alias of the element to both table columns - .enter().append('td') - .attr('class', function(d, i) {return (i == 0) ? 'lineNo' : 'cod';}) - .style('cursor', function(d, i) {return 'pointer'}) - .html(function(d, i) { - if (i == 0) { - return d.lineNumber; - } - else { - return htmlspecialchars(d.text); - } - }) - .on('mouseover', function() { - setHoverBreakpoint(this); - }) - .on('mouseout', function() { - hoverBreakpoints = {}; - - var breakpointHere = d3.select(this).datum().breakpointHere; - - if (!breakpointHere) { - unsetBreakpoint(this); - } - - renderSliderBreakpoints(); // get rid of hover breakpoint colors - }) - .on('mousedown', function() { - // don't do anything if exePts is empty - // (i.e., this line was never executed) - var exePts = d3.select(this).datum().executionPoints; - if (!exePts || exePts.length == 0) { - return; - } - - // toggle breakpoint - d3.select(this).datum().breakpointHere = !d3.select(this).datum().breakpointHere; - - var breakpointHere = d3.select(this).datum().breakpointHere; - if (breakpointHere) { - setBreakpoint(this); - } - else { - unsetBreakpoint(this); - } - }); - - renderSliderBreakpoints(); // renders breakpoints written in as code comments -} - - - -var breakpoints = {}; // set of execution points to set as breakpoints -var sortedBreakpointsList = []; // sorted and synced with breakpointLines -var hoverBreakpoints = {}; // set of breakpoints because we're HOVERING over a given line - - -function _getSortedBreakpointsList() { - var ret = []; - for (var k in breakpoints) { - ret.push(Number(k)); // these should be NUMBERS, not strings - } - ret.sort(function(x,y){return x-y}); // WTF, javascript sort is lexicographic by default! - return ret; -} - -function addToBreakpoints(executionPoints) { - $.each(executionPoints, function(i, e) { - breakpoints[e] = 1; - }); - - sortedBreakpointsList = _getSortedBreakpointsList(); -} - -function removeFromBreakpoints(executionPoints) { - $.each(executionPoints, function(i, e) { - delete breakpoints[e]; - }); - - sortedBreakpointsList = _getSortedBreakpointsList(); -} - -// find the previous/next breakpoint to c or return -1 if it doesn't exist -function findPrevBreakpoint(c) { - if (sortedBreakpointsList.length == 0) { - return -1; - } - else { - for (var i = 1; i < sortedBreakpointsList.length; i++) { - var prev = sortedBreakpointsList[i-1]; - var cur = sortedBreakpointsList[i]; - - if (c <= prev) { - return -1; - } - - if (cur >= c) { - return prev; - } - } - - // final edge case: - var lastElt = sortedBreakpointsList[sortedBreakpointsList.length - 1]; - return (lastElt < c) ? lastElt : -1; - } -} - -function findNextBreakpoint(c) { - if (sortedBreakpointsList.length == 0) { - return -1; - } - else { - for (var i = 0; i < sortedBreakpointsList.length - 1; i++) { - var cur = sortedBreakpointsList[i]; - var next = sortedBreakpointsList[i+1]; - - if (c < cur) { - return cur; - } - - if (cur <= c && c < next) { // subtle - return next; - } - } - - // final edge case: - var lastElt = sortedBreakpointsList[sortedBreakpointsList.length - 1]; - return (lastElt > c) ? lastElt : -1; - } -} - - -function setHoverBreakpoint(t) { - var exePts = d3.select(t).datum().executionPoints; - - // don't do anything if exePts is empty - // (i.e., this line was never executed) - if (!exePts || exePts.length == 0) { - return; - } - - hoverBreakpoints = {}; - $.each(exePts, function(i, e) { - hoverBreakpoints[e] = 1; - }); - - addToBreakpoints(exePts); - renderSliderBreakpoints(); -} - - -function setBreakpoint(t) { - var exePts = d3.select(t).datum().executionPoints; - - // don't do anything if exePts is empty - // (i.e., this line was never executed) - if (!exePts || exePts.length == 0) { - return; - } - - addToBreakpoints(exePts); - - d3.select(t.parentNode).select('td.lineNo').style('color', breakpointColor); - d3.select(t.parentNode).select('td.lineNo').style('font-weight', 'bold'); - - renderSliderBreakpoints(); -} - -function unsetBreakpoint(t) { - var exePts = d3.select(t).datum().executionPoints; - - // don't do anything if exePts is empty - // (i.e., this line was never executed) - if (!exePts || exePts.length == 0) { - return; - } - - removeFromBreakpoints(exePts); - - - var lineNo = d3.select(t).datum().lineNumber; - - if (visitedLinesSet[lineNo]) { - d3.select(t.parentNode).select('td.lineNo').style('color', visitedLineColor); - d3.select(t.parentNode).select('td.lineNo').style('font-weight', 'bold'); - } - else { - d3.select(t.parentNode).select('td.lineNo').style('color', ''); - d3.select(t.parentNode).select('td.lineNo').style('font-weight', ''); - } - - renderSliderBreakpoints(); -} - - -// depends on sortedBreakpointsList global -function renderSliderBreakpoints() { - $("#executionSliderFooter").empty(); // jQuery empty() is better than .html('') - - // I originally didn't want to delete and re-create this overlay every time, - // but if I don't do so, there are weird flickering artifacts with clearing - // the SVG container; so it's best to just delete and re-create the container each time - var sliderOverlay = d3.select('#executionSliderFooter') - .append('svg') - .attr('id', 'sliderOverlay') - .attr('width', $('#executionSlider').width()) - .attr('height', 12); - - var xrange = d3.scale.linear() - .domain([0, curTrace.length - 1]) - .range([0, $('#executionSlider').width()]); - - sliderOverlay.selectAll('rect') - .data(sortedBreakpointsList) - .enter().append('rect') - .attr('x', function(d, i) { - // make the edge cases look decent - if (d == 0) { - return 0; - } - else { - return xrange(d) - 3; - } - }) - .attr('y', 0) - .attr('width', 2) - .attr('height', 12) - .style('fill', function(d) { - if (hoverBreakpoints[d] === undefined) { - return breakpointColor; - } - else { - return hoverBreakpointColor; - } - }); -} - - -function clearSliderBreakpoints() { - breakpoints = {}; - sortedBreakpointsList = []; - hoverBreakpoints = {}; - renderSliderBreakpoints(); -} - - - -// initialization function that should be called when the page is loaded -function eduPythonCommonInit() { - - $("#jmpFirstInstr").click(function() { - curInstr = 0; - updateOutput(); - }); - - $("#jmpLastInstr").click(function() { - curInstr = curTrace.length - 1; - updateOutput(); - }); - - $("#jmpStepBack").click(function() { - if (curInstr > 0) { - curInstr -= 1; - updateOutput(); - } - }); - - $("#jmpStepFwd").click(function() { - if (curInstr < curTrace.length - 1) { - curInstr += 1; - updateOutput(); - } - }); - - // disable controls initially ... - $("#vcrControls #jmpFirstInstr").attr("disabled", true); - $("#vcrControls #jmpStepBack").attr("disabled", true); - $("#vcrControls #jmpStepFwd").attr("disabled", true); - $("#vcrControls #jmpLastInstr").attr("disabled", true); - - - - // set some sensible jsPlumb defaults - jsPlumb.Defaults.Endpoint = ["Dot", {radius:3}]; - //jsPlumb.Defaults.Endpoint = ["Rectangle", {width:3, height:3}]; - jsPlumb.Defaults.EndpointStyle = {fillStyle: lightGray}; - - jsPlumb.Defaults.Anchors = ["RightMiddle", "LeftMiddle"]; // for aesthetics! - - jsPlumb.Defaults.PaintStyle = {lineWidth:1, strokeStyle: lightGray}; - - // bezier curve style: - //jsPlumb.Defaults.Connector = [ "Bezier", { curviness:15 }]; /* too much 'curviness' causes lines to run together */ - //jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 14, width:10, foldback:0.55, location:0.35 }]] - - // state machine curve style: - jsPlumb.Defaults.Connector = [ "StateMachine" ]; - jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]]; - - - jsPlumb.Defaults.EndpointHoverStyle = {fillStyle: pinkish}; - jsPlumb.Defaults.HoverPaintStyle = {lineWidth:2, strokeStyle: pinkish}; - - - // set keyboard event listeners ... - $(document).keydown(function(k) { - // ONLY capture keys if we're in 'visualize code' mode: - if (appMode == 'visualize' && !keyStuckDown) { - if (k.keyCode == 37) { // left arrow - if (curInstr > 0) { - // if there is a prev breakpoint, then jump to it ... - if (sortedBreakpointsList.length > 0) { - var prevBreakpoint = findPrevBreakpoint(curInstr); - if (prevBreakpoint != -1) { - curInstr = prevBreakpoint; - } - else { - curInstr -= 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint - } - } - else { - curInstr -= 1; - } - updateOutput(); - } - - k.preventDefault(); // don't horizontally scroll the display - - keyStuckDown = true; - } - else if (k.keyCode == 39) { // right arrow - if (curInstr < curTrace.length - 1) { - // if there is a next breakpoint, then jump to it ... - if (sortedBreakpointsList.length > 0) { - var nextBreakpoint = findNextBreakpoint(curInstr); - if (nextBreakpoint != -1) { - curInstr = nextBreakpoint; - } - else { - curInstr += 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint - } - } - else { - curInstr += 1; - } - updateOutput(); - } - - k.preventDefault(); // don't horizontally scroll the display - - keyStuckDown = true; - } - } - }); - - $(document).keyup(function(k) { - keyStuckDown = false; - }); - - - // redraw everything on window resize so that connectors are in the - // right place - // TODO: can be SLOW on older browsers!!! - $(window).resize(function() { - if (appMode == 'visualize') { - updateOutput(); - } - }); - - $("#classicModeCheckbox").click(function() { - if (appMode == 'visualize') { - updateOutput(); - } - }); - - - // log a generic AJAX error handler - $(document).ajaxError(function() { - alert("Server error (possibly due to memory/resource overload)."); - - $('#executeBtn').html("Visualize execution"); - $('#executeBtn').attr('disabled', false); - }); - -} - diff --git a/PyTutorGAE/js/tmp-mess-with-d3/tutor.html b/PyTutorGAE/js/tmp-mess-with-d3/tutor.html deleted file mode 100644 index 94c76d900..000000000 --- a/PyTutorGAE/js/tmp-mess-with-d3/tutor.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - - - - Online Python Tutor (v3) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -Write your Python code here: -
- -
- -

- - - -

- -

Try these small examples:
- -aliasing | -intro | -factorial | -fibonacci | -memoized fib | -square root | -insertion sort -
-filter | -tokenize | -OOP | -gcd | -sumList | -towers of hanoi | -exceptions - -

- -

From MIT's 6.01 course:
- -list map | -summation | -OOP 1 | -OOP 2 | -inheritance - -

- -

Nested functions: -
- -closure 1 | -closure 2 | -closure 3 | -closure 4 | -closure 5 - -

- -

Aliasing: -
- -aliasing 1 | -aliasing 2 | -aliasing 3 | -aliasing 4 | -aliasing 5 | -aliasing 6 | -aliasing 7 - -

- -

Linked lists: -
- -LL 1 | -LL 2 - -

- - -
- - -
elements var heapRows = d3.select(vizDiv + ' #heap') .selectAll('table.heapRow') @@ -750,34 +749,40 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { }) - // update existing heap row - var heapColumns = heapRows.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) + // update an existing heap row + var heapColumns = heapRows + //.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) .selectAll('td') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ function(objID) {return objID;} /* each object ID is unique for constancy */) + // ENTER + heapColumns.enter().append('td') + .attr('class', 'toplevelHeapObject') + .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) + // remember that the enter selection is added to the update + // selection so that we can process it later ... + + // UPDATE heapColumns .order() // VERY IMPORTANT to put in the order corresponding to data elements - // d3 automatically adds NEW elements to the update selection, to prevent code duplication .each(function(objID, i) { - console.log('NEW/UPDATE ELT', objID); + //console.log('NEW/UPDATE ELT', objID); + // TODO: add a smoother transition in the future // Right now, just delete the old element and render a new one in its place $(this).empty(); renderCompoundObject(objID, $(this), true); }) - heapColumns.enter().append('td') - .attr('class', 'toplevelHeapObject') - .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) - + // EXIT heapColumns.exit() .remove() // insert new heap rows heapRows.enter().append('table') - .each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) + //.each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) .attr('class', 'heapRow') .selectAll('td') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ @@ -786,13 +791,15 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { .attr('class', 'toplevelHeapObject') .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) .each(function(objID, i) { - console.log('NEW ELT', objID); + //console.log('NEW ELT', objID); + + // TODO: add a smoother transition in the future renderCompoundObject(objID, $(this), true); }); // remove deleted rows heapRows.exit() - .each(function(objLst, i) {console.log('DEL ROW:', objLst, i);}) + //.each(function(objLst, i) {console.log('DEL ROW:', objLst, i);}) .remove(); From d12b0fe532daf6c29f9b021d2db9c411b010b725 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 6 Aug 2012 22:20:30 -0700 Subject: [PATCH 043/502] fixed weird scrolly bug :/ --- PyTutorGAE/js/edu-python.js | 10 ++++++---- PyTutorGAE/tutor.html | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 7a4e5d864..96118b6cf 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -138,9 +138,10 @@ function enterVisualizeMode(jumpToEnd) { } + // clear stack and heap visualizations: - $('#dataViz #stack').html('
Frames
') - $('#dataViz #heap').html('
Objects
') + $('#dataViz #stack').html('
Frames
'); + $('#dataViz #heap').html('
Objects
'); // remove any existing sliders @@ -1323,8 +1324,9 @@ function renderPyCodeOutput(codeStr) { codeOutputLines.push(n); }); - - $("#pyCodeOutputDiv").empty(); // jQuery empty() is better than .html('') + // re-create a pyCodeOutputDiv from scratch each time to prevent weird + // scrolling bugs ... ugh hacky + $('#pyCodeOutputDivWrapper').html('
'); // maps codeOutputLines to both table columns diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index 28dfdf551..6d041f922 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -158,7 +158,8 @@
-
+
+
From 92132da511b93eb8b6d81ebcebf5cab8aebf7d6c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 7 Aug 2012 10:36:16 -0700 Subject: [PATCH 044/502] start refactoringgg --- PyTutorGAE/js/edu-python-tutor.js | 1 - PyTutorGAE/js/edu-python.js | 358 ++++++++++++++---------------- PyTutorGAE/tutor.html | 12 +- 3 files changed, 173 insertions(+), 198 deletions(-) diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js index 43d1cb2a0..47b28af61 100644 --- a/PyTutorGAE/js/edu-python-tutor.js +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -375,7 +375,6 @@ $(document).ready(function() { } - // TODO: refactor so that it applies to edu-python-questions.js as well ... $('#executionSlider').bind('slide', function(evt, ui) { // this is SUPER subtle. if this value was changed programmatically, diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 96118b6cf..0f35e4576 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -31,11 +31,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // since the latter might exhibit funny behavior for certain reserved keywords -// code that is common to all Online Python Tutor pages - -var appMode = 'edit'; // 'edit', 'visualize', or 'grade' (only for question.html) - - /* colors - see edu-python.css */ var lightYellow = '#F5F798'; var lightLineColor = '#FFFFCC'; @@ -55,6 +50,10 @@ var breakpointColor = pinkish; var hoverBreakpointColor = medLightBlue; + +var appMode = 'edit'; // 'edit', 'visualize', or 'grade' (only for question.html) + + var keyStuckDown = false; @@ -84,29 +83,7 @@ var visitedLinesSet = {} // YUCKY GLOBAL! // been reached var instrLimitReached = false; -function assert(cond) { - if (!cond) { - alert("Error: ASSERTION FAILED"); - } -} - -// taken from http://www.toao.net/32-my-htmlspecialchars-function-for-javascript -function htmlspecialchars(str) { - if (typeof(str) == "string") { - str = str.replace(/&/g, "&"); /* must do & first */ - - // ignore these for now ... - //str = str.replace(/"/g, """); - //str = str.replace(/'/g, "'"); - str = str.replace(//g, ">"); - - // replace spaces: - str = str.replace(/ /g, " "); - } - return str; -} function enterVisualizeMode(jumpToEnd) { curInstr = 0; @@ -165,6 +142,7 @@ function enterVisualizeMode(jumpToEnd) { updateOutput(); } + function highlightCodeLine(curLine, hasError, isTerminated) { d3.selectAll('#pyCodeOutputDiv td.lineNo') .attr('id', function(d) {return 'lineNo' + d.lineNumber;}) @@ -202,39 +180,42 @@ function highlightCodeLine(curLine, hasError, isTerminated) { } }); - // smoothly scroll code display - if (!isOutputLineVisible(curLine)) { - scrollCodeOutputToLine(curLine); - } -} -// smoothly scroll pyCodeOutputDiv so that the given line is at the center -function scrollCodeOutputToLine(lineNo) { - var lineNoTd = $('#lineNo' + lineNo); - var LO = lineNoTd.offset().top; + // returns True iff lineNo is visible in pyCodeOutputDiv + function isOutputLineVisible(lineNo) { + var lineNoTd = $('#lineNo' + lineNo); + var LO = lineNoTd.offset().top; - var codeOutputDiv = $('#pyCodeOutputDiv'); - var PO = codeOutputDiv.offset().top; - var ST = codeOutputDiv.scrollTop(); - var H = codeOutputDiv.height(); + var codeOutputDiv = $('#pyCodeOutputDiv'); + var PO = codeOutputDiv.offset().top; + var ST = codeOutputDiv.scrollTop(); + var H = codeOutputDiv.height(); - codeOutputDiv.animate({scrollTop: (ST + (LO - PO - (Math.round(H / 2))))}, 300); -} + // add a few pixels of fudge factor on the bottom end due to bottom scrollbar + return (PO <= LO) && (LO < (PO + H - 15)); + } -// returns True iff lineNo is visible in pyCodeOutputDiv -function isOutputLineVisible(lineNo) { - var lineNoTd = $('#lineNo' + lineNo); - var LO = lineNoTd.offset().top; + // smoothly scroll pyCodeOutputDiv so that the given line is at the center + function scrollCodeOutputToLine(lineNo) { + var lineNoTd = $('#lineNo' + lineNo); + var LO = lineNoTd.offset().top; - var codeOutputDiv = $('#pyCodeOutputDiv'); - var PO = codeOutputDiv.offset().top; - var ST = codeOutputDiv.scrollTop(); - var H = codeOutputDiv.height(); + var codeOutputDiv = $('#pyCodeOutputDiv'); + var PO = codeOutputDiv.offset().top; + var ST = codeOutputDiv.scrollTop(); + var H = codeOutputDiv.height(); - // add a few pixels of fudge factor on the bottom end due to bottom scrollbar - return (PO <= LO) && (LO < (PO + H - 15)); + codeOutputDiv.animate({scrollTop: (ST + (LO - PO - (Math.round(H / 2))))}, 300); + } + + + + // smoothly scroll code display + if (!isOutputLineVisible(curLine)) { + scrollCodeOutputToLine(curLine); + } } @@ -615,73 +596,6 @@ function updateOutput() { } -// make sure varname doesn't contain any weird -// characters that are illegal for CSS ID's ... -// -// I know for a fact that iterator tmp variables named '_[1]' -// are NOT legal names for CSS ID's. -// I also threw in '{', '}', '(', ')', '<', '>' as illegal characters. -// -// TODO: what other characters are illegal??? -var lbRE = new RegExp('\\[|{|\\(|<', 'g'); -var rbRE = new RegExp('\\]|}|\\)|>', 'g'); -function varnameToCssID(varname) { - return varname.replace(lbRE, 'LeftB_').replace(rbRE, '_RightB'); -} - - -// compare two JSON-encoded compound objects for structural equivalence: -function structurallyEquivalent(obj1, obj2) { - // punt if either isn't a compound type - if (isPrimitiveType(obj1) || isPrimitiveType(obj2)) { - return false; - } - - // must be the same compound type - if (obj1[0] != obj2[0]) { - return false; - } - - // must have the same number of elements or fields - if (obj1.length != obj2.length) { - return false; - } - - // for a list or tuple, same size (e.g., a cons cell is a list/tuple of size 2) - if (obj1[0] == 'LIST' || obj1[0] == 'TUPLE') { - return true; - } - else { - var startingInd = -1; - - if (obj1[0] == 'DICT') { - startingInd = 2; - } - else if (obj1[0] == 'INSTANCE') { - startingInd = 3; - } - else { - return false; - } - - var obj1fields = {}; - - // for a dict or object instance, same names of fields (ordering doesn't matter) - for (var i = startingInd; i < obj1.length; i++) { - obj1fields[obj1[i][0]] = 1; // use as a set - } - - for (var i = startingInd; i < obj2.length; i++) { - if (obj1fields[obj2[i][0]] == undefined) { - return false; - } - } - - return true; - } -} - - // Renders the current trace entry (curEntry) into the div named by vizDiv // using the top-level heap layout provided by toplevelHeapLayout @@ -1150,7 +1064,7 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { curTr.find("td.stackFrameValue").append('
 
'); assert(connectionEndpointIDs[varDivID] === undefined); - var heapObjID = 'heap_object_' + getObjectID(val); + var heapObjID = 'heap_object_' + getRefID(val); connectionEndpointIDs[varDivID] = heapObjID; } }); @@ -1226,63 +1140,6 @@ function renderDataStructures(curEntry, toplevelHeapLayout, vizDiv) { } -function isPrimitiveType(obj) { - var typ = typeof obj; - return ((obj == null) || (typ != "object")); -} - -function getRefID(obj) { - assert(obj[0] == 'REF'); - return obj[1]; -} - -/* -function renderInline(obj) { - return isPrimitiveType(obj) && (typeof obj != 'string'); -} -*/ - -// Key is a primitive value (e.g., 'hello', 3.14159, true) -// Value is a unique primitive ID (starting with 'p' to disambiguate -// from regular object IDs) -var primitive_IDs = {null: 'p0', true: 'p1', false: 'p2'}; -var cur_pID = 3; - -function getObjectID(obj) { - if (isPrimitiveType(obj)) { - // primitive objects get IDs starting with 'p' ... - // this renders aliases as 'interned' for simplicity - var pID = primitive_IDs[obj]; - if (pID !== undefined) { - return pID; - } - else { - var new_pID = 'p' + cur_pID; - primitive_IDs[obj] = new_pID; - cur_pID++; - return new_pID; - } - return obj; - } - else { - assert($.isArray(obj)); - - if ((obj[0] == 'INSTANCE') || (obj[0] == 'CLASS')) { - return obj[2]; - } - else { - return obj[1]; - } - } -} - - - -String.prototype.rtrim = function() { - return this.replace(/\s*$/g, ""); -} - - function renderPyCodeOutput(codeStr) { clearSliderBreakpoints(); // start fresh! @@ -1353,7 +1210,7 @@ function renderPyCodeOutput(codeStr) { setHoverBreakpoint(this); }) .on('mouseout', function() { - hoverBreakpoints = {}; + hoverBreakpoints = d3.map(); var breakpointHere = d3.select(this).datum().breakpointHere; @@ -1388,23 +1245,23 @@ function renderPyCodeOutput(codeStr) { -var breakpoints = {}; // set of execution points to set as breakpoints +var breakpoints = d3.map(); // set of execution points to set as breakpoints var sortedBreakpointsList = []; // sorted and synced with breakpointLines -var hoverBreakpoints = {}; // set of breakpoints because we're HOVERING over a given line +var hoverBreakpoints = d3.map(); // set of breakpoints because we're HOVERING over a given line function _getSortedBreakpointsList() { var ret = []; - for (var k in breakpoints) { + breakpoints.forEach(function(k, v) { ret.push(Number(k)); // these should be NUMBERS, not strings - } + }); ret.sort(function(x,y){return x-y}); // WTF, javascript sort is lexicographic by default! return ret; } function addToBreakpoints(executionPoints) { $.each(executionPoints, function(i, e) { - breakpoints[e] = 1; + breakpoints.set(e, 1); }); sortedBreakpointsList = _getSortedBreakpointsList(); @@ -1412,7 +1269,7 @@ function addToBreakpoints(executionPoints) { function removeFromBreakpoints(executionPoints) { $.each(executionPoints, function(i, e) { - delete breakpoints[e]; + breakpoints.remove(e); }); sortedBreakpointsList = _getSortedBreakpointsList(); @@ -1477,9 +1334,9 @@ function setHoverBreakpoint(t) { return; } - hoverBreakpoints = {}; + hoverBreakpoints = d3.map(); $.each(exePts, function(i, e) { - hoverBreakpoints[e] = 1; + hoverBreakpoints.set(e, 1); }); addToBreakpoints(exePts); @@ -1564,7 +1421,7 @@ function renderSliderBreakpoints() { .attr('width', 2) .attr('height', 12) .style('fill', function(d) { - if (hoverBreakpoints[d] === undefined) { + if (!hoverBreakpoints.has(d)) { return breakpointColor; } else { @@ -1575,9 +1432,9 @@ function renderSliderBreakpoints() { function clearSliderBreakpoints() { - breakpoints = {}; + breakpoints = d3.map(); sortedBreakpointsList = []; - hoverBreakpoints = {}; + hoverBreakpoints = d3.map(); renderSliderBreakpoints(); } @@ -1722,3 +1579,126 @@ function eduPythonCommonInit() { } + + + + +// Utilities + +function assert(cond) { + if (!cond) { + alert("Error: ASSERTION FAILED"); + } +} + +// taken from http://www.toao.net/32-my-htmlspecialchars-function-for-javascript +function htmlspecialchars(str) { + if (typeof(str) == "string") { + str = str.replace(/&/g, "&"); /* must do & first */ + + // ignore these for now ... + //str = str.replace(/"/g, """); + //str = str.replace(/'/g, "'"); + + str = str.replace(//g, ">"); + + // replace spaces: + str = str.replace(/ /g, " "); + } + return str; +} + +String.prototype.rtrim = function() { + return this.replace(/\s*$/g, ""); +} + + +// make sure varname doesn't contain any weird +// characters that are illegal for CSS ID's ... +// +// I know for a fact that iterator tmp variables named '_[1]' +// are NOT legal names for CSS ID's. +// I also threw in '{', '}', '(', ')', '<', '>' as illegal characters. +// +// TODO: what other characters are illegal??? +var lbRE = new RegExp('\\[|{|\\(|<', 'g'); +var rbRE = new RegExp('\\]|}|\\)|>', 'g'); +function varnameToCssID(varname) { + return varname.replace(lbRE, 'LeftB_').replace(rbRE, '_RightB'); +} + + +// compare two JSON-encoded compound objects for structural equivalence: +function structurallyEquivalent(obj1, obj2) { + // punt if either isn't a compound type + if (isPrimitiveType(obj1) || isPrimitiveType(obj2)) { + return false; + } + + // must be the same compound type + if (obj1[0] != obj2[0]) { + return false; + } + + // must have the same number of elements or fields + if (obj1.length != obj2.length) { + return false; + } + + // for a list or tuple, same size (e.g., a cons cell is a list/tuple of size 2) + if (obj1[0] == 'LIST' || obj1[0] == 'TUPLE') { + return true; + } + else { + var startingInd = -1; + + if (obj1[0] == 'DICT') { + startingInd = 2; + } + else if (obj1[0] == 'INSTANCE') { + startingInd = 3; + } + else { + return false; + } + + var obj1fields = {}; + + // for a dict or object instance, same names of fields (ordering doesn't matter) + for (var i = startingInd; i < obj1.length; i++) { + obj1fields[obj1[i][0]] = 1; // use as a set + } + + for (var i = startingInd; i < obj2.length; i++) { + if (obj1fields[obj2[i][0]] == undefined) { + return false; + } + } + + return true; + } +} + + +function isPrimitiveType(obj) { + var typ = typeof obj; + return ((obj == null) || (typ != "object")); +} + +function getRefID(obj) { + assert(obj[0] == 'REF'); + return obj[1]; +} + +function getObjectID(obj) { + assert($.isArray(obj)); + + if ((obj[0] == 'INSTANCE') || (obj[0] == 'CLASS')) { + return obj[2]; + } + else { + return obj[1]; + } +} + diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index 6d041f922..b9342bd99 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -147,12 +147,6 @@ - - - - '); - var curTr = tbl.find('tr:last'); - - if (isPrimitiveType(val)) { - renderPrimitiveObject(val, curTr.find("td.stackFrameValue")); - } - else{ - // add a stub so that we can connect it with a connector later. - // IE needs this div to be NON-EMPTY in order to properly - // render jsPlumb endpoints, so that's why we add an " "! - - // make sure varname doesn't contain any weird - // characters that are illegal for CSS ID's ... - var varDivID = 'global__' + varnameToCssID(varname); - curTr.find("td.stackFrameValue").append('
 
'); - - assert(connectionEndpointIDs[varDivID] === undefined); - var heapObjID = 'heap_object_' + getRefID(val); - connectionEndpointIDs[varDivID] = heapObjID; - } - } - }); - } - - - $.each(stack_to_render, function(i, e) { - renderStackFrame(e, i, e.is_zombie); - }); - - - function renderStackFrame(frame, ind, is_zombie) { - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like - var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) - - // optional (btw, this isn't a CSS id) - var parentFrameID = null; - if (frame.parent_frame_id_list.length > 0) { - parentFrameID = frame.parent_frame_id_list[0]; - } - - var localVars = frame.encoded_locals - - // the stackFrame div's id is simply its index ("stack") - - var divClass, divID, headerDivID; - if (is_zombie) { - divClass = 'zombieStackFrame'; - divID = "zombie_stack" + ind; - headerDivID = "zombie_stack_header" + ind; - } - else { - divClass = 'stackFrame'; - divID = "stack" + ind; - headerDivID = "stack_header" + ind; - } - - $(vizDiv + " #stack").append('
'); - - var headerLabel = funcName + '()'; - if (frameID) { - headerLabel = 'f' + frameID + ': ' + headerLabel; - } - if (parentFrameID) { - headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; - } - $(vizDiv + " #stack #" + divID).append('
' + headerLabel + '
'); - - if (frame.ordered_varnames.length > 0) { - var tableID = divID + '_table'; - $(vizDiv + " #stack #" + divID).append('
- -
@@ -167,8 +161,10 @@ -
Use the slider or the left and right arrow keys to step through execution. -
Click on code to set breakpoints.
+
+ Use the left and right arrow keys to step through execution. +
Click on lines of code to set breakpoints. +
From e8f385d43482e466f62eb98a2a17d7b2abd2d4ec Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 7 Aug 2012 10:45:47 -0700 Subject: [PATCH 045/502] more refactoring goodness --- PyTutorGAE/js/edu-python-tutor.js | 59 ++------------- PyTutorGAE/js/edu-python.js | 118 ++++++++++++++++++++---------- 2 files changed, 86 insertions(+), 91 deletions(-) diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js index 47b28af61..5e6d69bf4 100644 --- a/PyTutorGAE/js/edu-python-tutor.js +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -34,38 +34,6 @@ function enterEditMode() { $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); } -function preprocessBackendResult(traceData, inputCode) { - // set gross globals, then let jQuery BBQ take care of the rest - curTrace = traceData; - curInputCode = inputCode; - - renderPyCodeOutput(inputCode); - - - // must postprocess traceData prior to running precomputeCurTraceLayouts() ... - var lastEntry = curTrace[curTrace.length - 1]; - - // GLOBAL! - instrLimitReached = (lastEntry.event == 'instruction_limit_reached'); - - if (instrLimitReached) { - curTrace.pop() // kill last entry - var warningMsg = lastEntry.exception_msg; - $("#errorOutput").html(htmlspecialchars(warningMsg)); - $("#errorOutput").show(); - } - // as imran suggests, for a (non-error) one-liner, SNIP off the - // first instruction so that we start after the FIRST instruction - // has been executed ... - else if (curTrace.length == 2) { - curTrace.shift(); - } - - precomputeCurTraceLayouts(); // bam! - - $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); -} - var pyInputCodeMirror; // CodeMirror object that contains the input text @@ -153,7 +121,7 @@ $(document).ready(function() { $('#executeBtn').attr('disabled', true); $("#pyOutputPane").hide(); - // TODO: is GET or POST best here? + $.get("exec", {user_script : pyInputCodeMirror.getValue()}, function(traceData) { @@ -186,7 +154,7 @@ $(document).ready(function() { $('#executeBtn').attr('disabled', false); } else { - preprocessBackendResult(traceData, pyInputCodeMirror.getValue()); + createVisualization(traceData, pyInputCodeMirror.getValue()); } }, "json"); @@ -375,24 +343,13 @@ $(document).ready(function() { } + // log a generic AJAX error handler + // TODO: too global! + $(document).ajaxError(function() { + alert("Server error (possibly due to memory/resource overload)."); - $('#executionSlider').bind('slide', function(evt, ui) { - // this is SUPER subtle. if this value was changed programmatically, - // then evt.originalEvent will be undefined. however, if this value - // was changed by a user-initiated event, then this code should be - // executed ... - if (evt.originalEvent) { - curInstr = ui.value; - updateOutput(true); // need to pass 'true' here to prevent infinite loop - } - }); - - - $('#genUrlBtn').bind('click', function() { - // override mode with 'visualize' ... - var urlStr = jQuery.param.fragment(window.location.href, {code: curInputCode, curInstr: curInstr}, 2); - - $('#urlOutput').val(urlStr); + $('#executeBtn').html("Visualize execution"); + $('#executeBtn').attr('disabled', false); }); }); diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 0f35e4576..2a2be36f1 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -31,25 +31,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // since the latter might exhibit funny behavior for certain reserved keywords -/* colors - see edu-python.css */ -var lightYellow = '#F5F798'; -var lightLineColor = '#FFFFCC'; -var errorColor = '#F87D76'; -var visitedLineColor = '#3D58A2'; - -var lightGray = "#cccccc"; -var darkBlue = "#3D58A2"; -var medBlue = "#41507A"; -var medLightBlue = "#6F89D1"; -var lightBlue = "#899CD1"; -var pinkish = "#F15149"; -var lightPink = "#F89D99"; -var darkRed = "#9D1E18"; - -var breakpointColor = pinkish; -var hoverBreakpointColor = medLightBlue; - - var appMode = 'edit'; // 'edit', 'visualize', or 'grade' (only for question.html) @@ -85,6 +66,41 @@ var instrLimitReached = false; +function createVisualization(traceData, inputCode) { + // set gross globals, then let jQuery BBQ take care of the rest + curTrace = traceData; + curInputCode = inputCode; + + renderPyCodeOutput(inputCode); + + + // must postprocess traceData prior to running precomputeCurTraceLayouts() ... + var lastEntry = curTrace[curTrace.length - 1]; + + // GLOBAL! + instrLimitReached = (lastEntry.event == 'instruction_limit_reached'); + + if (instrLimitReached) { + curTrace.pop() // kill last entry + var warningMsg = lastEntry.exception_msg; + $("#errorOutput").html(htmlspecialchars(warningMsg)); + $("#errorOutput").show(); + } + // as imran suggests, for a (non-error) one-liner, SNIP off the + // first instruction so that we start after the FIRST instruction + // has been executed ... + else if (curTrace.length == 2) { + curTrace.shift(); + } + + precomputeCurTraceLayouts(); // bam! + + $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); +} + + + + function enterVisualizeMode(jumpToEnd) { curInstr = 0; @@ -1443,6 +1459,27 @@ function clearSliderBreakpoints() { // initialization function that should be called when the page is loaded function eduPythonCommonInit() { + $('#executionSlider').bind('slide', function(evt, ui) { + // this is SUPER subtle. if this value was changed programmatically, + // then evt.originalEvent will be undefined. however, if this value + // was changed by a user-initiated event, then this code should be + // executed ... + if (evt.originalEvent) { + curInstr = ui.value; + updateOutput(true); // need to pass 'true' here to prevent infinite loop + } + }); + + + $('#genUrlBtn').bind('click', function() { + // override mode with 'visualize' ... + var urlStr = jQuery.param.fragment(window.location.href, {code: curInputCode, curInstr: curInstr}, 2); + + $('#urlOutput').val(urlStr); + }); + + + $("#jmpFirstInstr").click(function() { curInstr = 0; updateOutput(); @@ -1498,6 +1535,7 @@ function eduPythonCommonInit() { // set keyboard event listeners ... + // TODO: too global! $(document).keydown(function(k) { // ONLY capture keys if we're in 'visualize code' mode: if (appMode == 'visualize' && !keyStuckDown) { @@ -1548,6 +1586,7 @@ function eduPythonCommonInit() { } }); + // TODO: too global! $(document).keyup(function(k) { keyStuckDown = false; }); @@ -1556,6 +1595,7 @@ function eduPythonCommonInit() { // redraw everything on window resize so that connectors are in the // right place // TODO: can be SLOW on older browsers!!! + // TODO: too global! $(window).resize(function() { if (appMode == 'visualize') { updateOutput(); @@ -1567,27 +1607,36 @@ function eduPythonCommonInit() { updateOutput(); } }); +} - // log a generic AJAX error handler - $(document).ajaxError(function() { - alert("Server error (possibly due to memory/resource overload)."); - - $('#executeBtn').html("Visualize execution"); - $('#executeBtn').attr('disabled', false); - }); -} +// Utilities +/* colors - see edu-python.css */ +var lightYellow = '#F5F798'; +var lightLineColor = '#FFFFCC'; +var errorColor = '#F87D76'; +var visitedLineColor = '#3D58A2'; +var lightGray = "#cccccc"; +var darkBlue = "#3D58A2"; +var medBlue = "#41507A"; +var medLightBlue = "#6F89D1"; +var lightBlue = "#899CD1"; +var pinkish = "#F15149"; +var lightPink = "#F89D99"; +var darkRed = "#9D1E18"; +var breakpointColor = pinkish; +var hoverBreakpointColor = medLightBlue; -// Utilities function assert(cond) { + // TODO: add more precision in the error message if (!cond) { - alert("Error: ASSERTION FAILED"); + alert("Error: ASSERTION FAILED!!!"); } } @@ -1691,14 +1740,3 @@ function getRefID(obj) { return obj[1]; } -function getObjectID(obj) { - assert($.isArray(obj)); - - if ((obj[0] == 'INSTANCE') || (obj[0] == 'CLASS')) { - return obj[2]; - } - else { - return obj[1]; - } -} - From 2b8f9c219e1bbc76da64335d9dcb58c9a5fa1fee Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 7 Aug 2012 10:49:11 -0700 Subject: [PATCH 046/502] moar! --- PyTutorGAE/js/edu-python-tutor.js | 2 +- PyTutorGAE/js/edu-python.js | 8 ++++---- PyTutorGAE/tutor.html | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js index 5e6d69bf4..3b097d3d1 100644 --- a/PyTutorGAE/js/edu-python-tutor.js +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -154,7 +154,7 @@ $(document).ready(function() { $('#executeBtn').attr('disabled', false); } else { - createVisualization(traceData, pyInputCodeMirror.getValue()); + createVisualization(traceData, pyInputCodeMirror.getValue(), $('#pyOutputPane')); } }, "json"); diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index 2a2be36f1..e5a043e7a 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -66,7 +66,9 @@ var instrLimitReached = false; -function createVisualization(traceData, inputCode) { +function createVisualization(traceData, inputCode, domRoot) { + + // set gross globals, then let jQuery BBQ take care of the rest curTrace = traceData; curInputCode = inputCode; @@ -1197,9 +1199,7 @@ function renderPyCodeOutput(codeStr) { codeOutputLines.push(n); }); - // re-create a pyCodeOutputDiv from scratch each time to prevent weird - // scrolling bugs ... ugh hacky - $('#pyCodeOutputDivWrapper').html('
'); + $('#pyCodeOutputDiv').empty(); // maps codeOutputLines to both table columns diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index b9342bd99..fab696160 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -152,7 +152,7 @@
-
+
From bde444f441731ca85d814be76e03acbb4df37c79 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 7 Aug 2012 11:00:26 -0700 Subject: [PATCH 047/502] moar moar! --- PyTutorGAE/js/edu-python-tutor.js | 8 +- PyTutorGAE/js/edu-python.js | 363 ++++++++++++++++-------------- PyTutorGAE/tutor.html | 77 +------ 3 files changed, 204 insertions(+), 244 deletions(-) diff --git a/PyTutorGAE/js/edu-python-tutor.js b/PyTutorGAE/js/edu-python-tutor.js index 3b097d3d1..297133aad 100644 --- a/PyTutorGAE/js/edu-python-tutor.js +++ b/PyTutorGAE/js/edu-python-tutor.js @@ -29,6 +29,9 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // Pre-reqs: edu-python.js and jquery.ba-bbq.min.js should be imported BEFORE this file +var appMode = 'edit'; // 'edit', 'visualize', or 'grade' (only for question.html) + + function enterEditMode() { $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); @@ -43,7 +46,6 @@ function setCodeMirrorVal(dat) { $(document).ready(function() { - eduPythonCommonInit(); // must call this first! pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { mode: 'python', @@ -161,10 +163,6 @@ $(document).ready(function() { }); - $("#editBtn").click(function() { - enterEditMode(); - }); - // canned examples diff --git a/PyTutorGAE/js/edu-python.js b/PyTutorGAE/js/edu-python.js index e5a043e7a..a1532e9d6 100644 --- a/PyTutorGAE/js/edu-python.js +++ b/PyTutorGAE/js/edu-python.js @@ -27,14 +27,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -// TODO: look into using the d3.map class instead of direct object operations in js, -// since the latter might exhibit funny behavior for certain reserved keywords - - - -var appMode = 'edit'; // 'edit', 'visualize', or 'grade' (only for question.html) - - var keyStuckDown = false; @@ -68,6 +60,206 @@ var instrLimitReached = false; function createVisualization(traceData, inputCode, domRoot) { + // TODO: make less gross! + domRoot.html( + '\ + \ + \ + \ + \ +
\ +
\ +
\ +
\ + \ +
\ +
\ + Use the left and right arrow keys to step through execution.\ +
Click on lines of code to set breakpoints.\ +
\ +
\ +
\ +
\ + \ + \ + Step ? of ?\ + \ + \ +
\ +
\ +
\ + Program output:
\ + \ +

\ +
\ +
\ + \ + \ + \ + \ + \ +
\ +
\ +
Frames
\ +
\ +
\ +
\ +
Objects
\ +
\ +
\ +
\ +
'); + + + + $('#executionSlider').bind('slide', function(evt, ui) { + // this is SUPER subtle. if this value was changed programmatically, + // then evt.originalEvent will be undefined. however, if this value + // was changed by a user-initiated event, then this code should be + // executed ... + if (evt.originalEvent) { + curInstr = ui.value; + updateOutput(true); // need to pass 'true' here to prevent infinite loop + } + }); + + + $('#genUrlBtn').bind('click', function() { + // override mode with 'visualize' ... + var urlStr = jQuery.param.fragment(window.location.href, {code: curInputCode, curInstr: curInstr}, 2); + + $('#urlOutput').val(urlStr); + }); + + $("#editBtn").click(function() { + enterEditMode(); + }); + + + + $("#jmpFirstInstr").click(function() { + curInstr = 0; + updateOutput(); + }); + + $("#jmpLastInstr").click(function() { + curInstr = curTrace.length - 1; + updateOutput(); + }); + + $("#jmpStepBack").click(function() { + if (curInstr > 0) { + curInstr -= 1; + updateOutput(); + } + }); + + $("#jmpStepFwd").click(function() { + if (curInstr < curTrace.length - 1) { + curInstr += 1; + updateOutput(); + } + }); + + // disable controls initially ... + $("#vcrControls #jmpFirstInstr").attr("disabled", true); + $("#vcrControls #jmpStepBack").attr("disabled", true); + $("#vcrControls #jmpStepFwd").attr("disabled", true); + $("#vcrControls #jmpLastInstr").attr("disabled", true); + + + + // set some sensible jsPlumb defaults + jsPlumb.Defaults.Endpoint = ["Dot", {radius:3}]; + //jsPlumb.Defaults.Endpoint = ["Rectangle", {width:3, height:3}]; + jsPlumb.Defaults.EndpointStyle = {fillStyle: lightGray}; + + jsPlumb.Defaults.Anchors = ["RightMiddle", "LeftMiddle"]; // for aesthetics! + + jsPlumb.Defaults.PaintStyle = {lineWidth:1, strokeStyle: lightGray}; + + // bezier curve style: + //jsPlumb.Defaults.Connector = [ "Bezier", { curviness:15 }]; /* too much 'curviness' causes lines to run together */ + //jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 14, width:10, foldback:0.55, location:0.35 }]] + + // state machine curve style: + jsPlumb.Defaults.Connector = [ "StateMachine" ]; + jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]]; + + + jsPlumb.Defaults.EndpointHoverStyle = {fillStyle: pinkish}; + jsPlumb.Defaults.HoverPaintStyle = {lineWidth:2, strokeStyle: pinkish}; + + + // set keyboard event listeners ... + // TODO: too global! + $(document).keydown(function(k) { + // ONLY capture keys if we're in 'visualize code' mode: + if (appMode == 'visualize' && !keyStuckDown) { + if (k.keyCode == 37) { // left arrow + if (curInstr > 0) { + // if there is a prev breakpoint, then jump to it ... + if (sortedBreakpointsList.length > 0) { + var prevBreakpoint = findPrevBreakpoint(curInstr); + if (prevBreakpoint != -1) { + curInstr = prevBreakpoint; + } + else { + curInstr -= 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint + } + } + else { + curInstr -= 1; + } + updateOutput(); + } + + k.preventDefault(); // don't horizontally scroll the display + + keyStuckDown = true; + } + else if (k.keyCode == 39) { // right arrow + if (curInstr < curTrace.length - 1) { + // if there is a next breakpoint, then jump to it ... + if (sortedBreakpointsList.length > 0) { + var nextBreakpoint = findNextBreakpoint(curInstr); + if (nextBreakpoint != -1) { + curInstr = nextBreakpoint; + } + else { + curInstr += 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint + } + } + else { + curInstr += 1; + } + updateOutput(); + } + + k.preventDefault(); // don't horizontally scroll the display + + keyStuckDown = true; + } + } + }); + + // TODO: too global! + $(document).keyup(function(k) { + keyStuckDown = false; + }); + + + // redraw everything on window resize so that connectors are in the + // right place + // TODO: can be SLOW on older browsers!!! + // TODO: too global! + $(window).resize(function() { + if (appMode == 'visualize') { + updateOutput(); + } + }); + + // set gross globals, then let jQuery BBQ take care of the rest curTrace = traceData; @@ -1456,161 +1648,6 @@ function clearSliderBreakpoints() { -// initialization function that should be called when the page is loaded -function eduPythonCommonInit() { - - $('#executionSlider').bind('slide', function(evt, ui) { - // this is SUPER subtle. if this value was changed programmatically, - // then evt.originalEvent will be undefined. however, if this value - // was changed by a user-initiated event, then this code should be - // executed ... - if (evt.originalEvent) { - curInstr = ui.value; - updateOutput(true); // need to pass 'true' here to prevent infinite loop - } - }); - - - $('#genUrlBtn').bind('click', function() { - // override mode with 'visualize' ... - var urlStr = jQuery.param.fragment(window.location.href, {code: curInputCode, curInstr: curInstr}, 2); - - $('#urlOutput').val(urlStr); - }); - - - - $("#jmpFirstInstr").click(function() { - curInstr = 0; - updateOutput(); - }); - - $("#jmpLastInstr").click(function() { - curInstr = curTrace.length - 1; - updateOutput(); - }); - - $("#jmpStepBack").click(function() { - if (curInstr > 0) { - curInstr -= 1; - updateOutput(); - } - }); - - $("#jmpStepFwd").click(function() { - if (curInstr < curTrace.length - 1) { - curInstr += 1; - updateOutput(); - } - }); - - // disable controls initially ... - $("#vcrControls #jmpFirstInstr").attr("disabled", true); - $("#vcrControls #jmpStepBack").attr("disabled", true); - $("#vcrControls #jmpStepFwd").attr("disabled", true); - $("#vcrControls #jmpLastInstr").attr("disabled", true); - - - - // set some sensible jsPlumb defaults - jsPlumb.Defaults.Endpoint = ["Dot", {radius:3}]; - //jsPlumb.Defaults.Endpoint = ["Rectangle", {width:3, height:3}]; - jsPlumb.Defaults.EndpointStyle = {fillStyle: lightGray}; - - jsPlumb.Defaults.Anchors = ["RightMiddle", "LeftMiddle"]; // for aesthetics! - - jsPlumb.Defaults.PaintStyle = {lineWidth:1, strokeStyle: lightGray}; - - // bezier curve style: - //jsPlumb.Defaults.Connector = [ "Bezier", { curviness:15 }]; /* too much 'curviness' causes lines to run together */ - //jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 14, width:10, foldback:0.55, location:0.35 }]] - - // state machine curve style: - jsPlumb.Defaults.Connector = [ "StateMachine" ]; - jsPlumb.Defaults.Overlays = [[ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]]; - - - jsPlumb.Defaults.EndpointHoverStyle = {fillStyle: pinkish}; - jsPlumb.Defaults.HoverPaintStyle = {lineWidth:2, strokeStyle: pinkish}; - - - // set keyboard event listeners ... - // TODO: too global! - $(document).keydown(function(k) { - // ONLY capture keys if we're in 'visualize code' mode: - if (appMode == 'visualize' && !keyStuckDown) { - if (k.keyCode == 37) { // left arrow - if (curInstr > 0) { - // if there is a prev breakpoint, then jump to it ... - if (sortedBreakpointsList.length > 0) { - var prevBreakpoint = findPrevBreakpoint(curInstr); - if (prevBreakpoint != -1) { - curInstr = prevBreakpoint; - } - else { - curInstr -= 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint - } - } - else { - curInstr -= 1; - } - updateOutput(); - } - - k.preventDefault(); // don't horizontally scroll the display - - keyStuckDown = true; - } - else if (k.keyCode == 39) { // right arrow - if (curInstr < curTrace.length - 1) { - // if there is a next breakpoint, then jump to it ... - if (sortedBreakpointsList.length > 0) { - var nextBreakpoint = findNextBreakpoint(curInstr); - if (nextBreakpoint != -1) { - curInstr = nextBreakpoint; - } - else { - curInstr += 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint - } - } - else { - curInstr += 1; - } - updateOutput(); - } - - k.preventDefault(); // don't horizontally scroll the display - - keyStuckDown = true; - } - } - }); - - // TODO: too global! - $(document).keyup(function(k) { - keyStuckDown = false; - }); - - - // redraw everything on window resize so that connectors are in the - // right place - // TODO: can be SLOW on older browsers!!! - // TODO: too global! - $(window).resize(function() { - if (appMode == 'visualize') { - updateOutput(); - } - }); - - $("#classicModeCheckbox").click(function() { - if (appMode == 'visualize') { - updateOutput(); - } - }); -} - - - // Utilities diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index fab696160..b17645ab1 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -142,84 +142,9 @@
-
+
- - - - - - -
- -
- -
-
- -
- - - -
- -
- Use the left and right arrow keys to step through execution. -
Click on lines of code to set breakpoints. -
- -
-
- -
- - - Step ? of ? - - -
- - -
- - -
- -Program output: -
- - -

- -

- - -
- -
- - - - - - -
-
-
Frames
-
-
-
-
Objects
-
-
- -
- -
- -
-
' + varname + '
'); - - var tbl = $(vizDiv + " #" + tableID); - - $.each(frame.ordered_varnames, function(xxx, varname) { - var val = localVars[varname]; - - // don't render return values for zombie frames - if (is_zombie && varname == '__return__') { - return; - } - - // special treatment for displaying return value and indicating - // that the function is about to return to its caller - // - // DON'T do this for zombie frames - if (varname == '__return__' && !is_zombie) { - assert(curEntry.event == 'return'); // sanity check - - tbl.append('
About to return
Return value:
' + varname + '
- - - - - - - - - -
- -
- -
- -
- -
- - - -
- -
Use the slider or the left and right arrow keys to step through execution. -
Click on code to set breakpoints.
- -
-
- -
- - - Step ? of ? - - -
- - -
- - -
- -Program output: -
- - -

- -

- - -
- -
- - - - - - -
-
-
Frames
-
-
-
-
Objects
-
-
- -
- -
- - - - - - - - From f7dd82f11f2294046058a2d282bb275618391e23 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 16:07:56 -0700 Subject: [PATCH 064/502] moar MAJOR refactoringz --- PyTutorGAE/backend_test.py | 15 -------------- PyTutorGAE/js/opt-frontend.js | 20 +++++++++--------- PyTutorGAE/js/pytutor.js | 38 +++++++++++++++++++++-------------- PyTutorGAE/pg_logger.py | 6 +++++- PyTutorGAE/pythontutor.py | 6 +++--- 5 files changed, 42 insertions(+), 43 deletions(-) delete mode 100644 PyTutorGAE/backend_test.py diff --git a/PyTutorGAE/backend_test.py b/PyTutorGAE/backend_test.py deleted file mode 100644 index 5e17a9912..000000000 --- a/PyTutorGAE/backend_test.py +++ /dev/null @@ -1,15 +0,0 @@ -import pg_logger, pprint, json - -pp = pprint.PrettyPrinter() - -def pprint_finalizer(trace): - for e in trace: - pp.pprint(e) - - -def json_finalizer(output_lst): - json_output = json.dumps(output_lst, indent=None) # use indent=None for most compact repr - print json_output - - -pg_logger.exec_script_str(open('example-code/towers_of_hanoi.txt').read(), json_finalizer) diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index ae11c754e..f3c02959b 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -136,14 +136,16 @@ $(document).ready(function() { $.get("exec", {user_script : pyInputCodeMirror.getValue()}, - function(traceData) { + function(dataFromBackend) { + var trace = dataFromBackend.trace; + // don't enter visualize mode if there are killer errors: - if (!traceData || - (traceData.length == 0) || - ((traceData.length == 1) && traceData[0].event == 'uncaught_exception')) { + if (!trace || + (trace.length == 0) || + ((trace.length == 1) && trace[0].event == 'uncaught_exception')) { - if (traceData.length > 0) { - var errorLineNo = traceData[0].line - 1; /* CodeMirror lines are zero-indexed */ + if (trace.length > 0) { + var errorLineNo = trace[0].line - 1; /* CodeMirror lines are zero-indexed */ if (errorLineNo !== undefined) { // highlight the faulting line in pyInputCodeMirror pyInputCodeMirror.focus(); @@ -156,7 +158,7 @@ $(document).ready(function() { }); } - alert(traceData[0].exception_msg); + alert(trace[0].exception_msg); } else { alert("Whoa, unknown error! Please reload and try again."); @@ -169,12 +171,12 @@ $(document).ready(function() { var startingInstruction = 0; // only do this at most ONCE, and then clear out preseededCurInstr - if (preseededCurInstr && preseededCurInstr < traceData.length) { // NOP anyways if preseededCurInstr is 0 + if (preseededCurInstr && preseededCurInstr < trace.length) { // NOP anyways if preseededCurInstr is 0 startingInstruction = preseededCurInstr; preseededCurInstr = null; } - myVisualizer = new ExecutionVisualizer(pyInputCodeMirror.getValue(), traceData, startingInstruction, 'pyOutputPane'); + myVisualizer = new ExecutionVisualizer(dataFromBackend, startingInstruction, 'pyOutputPane'); $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); } diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 24b95d64a..606db4546 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -29,10 +29,20 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer instance -function ExecutionVisualizer(inputCode, traceData, startingInstruction, domRootID) { - this.curInputCode = inputCode; - this.curTrace = traceData; - this.curInstr = startingInstruction; +// domRootID is the string ID of the root element where to render this instance +// dat is data returned by the Python Tutor backend consisting of two fields: +// code - string of executed code +// trace - a full execution trace +// startingInstruction is (optional) the execution point to display upon rendering (one-indexed) +function ExecutionVisualizer(domRootID, dat, startingInstruction /* optional */) { + this.curInputCode = dat.code; + this.curTrace = dat.trace; + + this.curInstr = 0; + + if (startingInstruction) { + this.curInstr = (startingInstruction - 1); // zero-indexed + } this.visualizerID = curVisualizerID; curVisualizerID++; @@ -1103,9 +1113,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // (the format is: '__heap_object_') // // The reason we need to prepend this.visualizerID is because jsPlumb needs - // GLOBALLY UNIQUE IDs for use as connector endpoints. Actually this is no - // longer true since we can use this.jsPlumbInstance, but still it's nice - // to have unique div IDs + // GLOBALLY UNIQUE IDs for use as connector endpoints. var connectionEndpointIDs = d3.map(); var heapConnectionEndpointIDs = d3.map(); // subset of connectionEndpointIDs for heap->heap connections @@ -1427,10 +1435,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // render all global variables IN THE ORDER they were created by the program, // in order to ensure continuity: if (curEntry.ordered_globals.length > 0) { - this.domRoot.find("#stack").append('
Global variables
'); - this.domRoot.find("#stack #globals").append('
'); + this.domRoot.find("#stack").append('
Global variables
'); + this.domRoot.find('#stack #' + myViz.visualizerID + '__globals').append('
'); - var tbl = this.domRoot.find("#global_table"); + var tbl = this.domRoot.find('#' + myViz.visualizerID + '__global_table'); $.each(curEntry.ordered_globals, function(i, varname) { var val = curEntry.globals[varname]; @@ -1449,7 +1457,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // make sure varname doesn't contain any weird // characters that are illegal for CSS ID's ... - var varDivID = 'global__' + varnameToCssID(varname); + var varDivID = myViz.visualizerID + '__global__' + varnameToCssID(varname); curTr.find("td.stackFrameValue").append('
 
'); assert(!connectionEndpointIDs.has(varDivID)); @@ -1483,12 +1491,12 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var divClass, divID, headerDivID; if (is_zombie) { divClass = 'zombieStackFrame'; - divID = "zombie_stack" + ind; + divID = myViz.visualizerID + "__zombie_stack" + ind; headerDivID = "zombie_stack_header" + ind; } else { divClass = 'stackFrame'; - divID = "stack" + ind; + divID = myViz.visualizerID + "__stack" + ind; headerDivID = "stack_header" + ind; } @@ -1605,13 +1613,13 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var frame_already_highlighted = false; $.each(curEntry.stack_to_render, function(i, e) { if (e.is_highlighted) { - highlight_frame('stack' + i); + highlight_frame(myViz.visualizerID + '__stack' + i); frame_already_highlighted = true; } }); if (!frame_already_highlighted) { - highlight_frame('globals'); + highlight_frame(myViz.visualizerID + '__globals'); } } diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index f0cf5c67c..21dbc6889 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -110,6 +110,8 @@ def __init__(self, finalizer_func): # execution, or else canonical small IDs won't be consistent. self.encoder = pg_encoder.ObjectEncoder() + self.executed_script = None # Python script to be executed! + # Returns the (lexical) parent frame of the function that was called # to create the stack frame 'frame'. @@ -452,6 +454,8 @@ def create_encoded_stack_entry(cur_frame): def _runscript(self, script_str): + self.executed_script = script_str + # When bdb sets tracing, a number of call and line events happens # BEFORE debugger even reaches user's code (and the exact sequence of # events depends on python version). So we take special measures to @@ -542,7 +546,7 @@ def finalize(self): #for e in self.trace: print >> sys.stderr, e - self.finalizer_func(self.trace) + self.finalizer_func(self.executed_script, self.trace) diff --git a/PyTutorGAE/pythontutor.py b/PyTutorGAE/pythontutor.py index 1e1e1c132..89e0078dc 100644 --- a/PyTutorGAE/pythontutor.py +++ b/PyTutorGAE/pythontutor.py @@ -50,15 +50,15 @@ def get(self): class ExecScript(webapp2.RequestHandler): - def json_finalizer(self, output_lst): - json_output = json.dumps(output_lst, indent=None) # use indent=None for most compact repr + def json_finalizer(self, input_code, output_trace): + ret = dict(code=input_code, trace=output_trace) + json_output = json.dumps(ret, indent=None) # use indent=None for most compact repr self.response.out.write(json_output) def get(self): self.response.headers['Content-Type'] = 'application/json' self.response.headers['Cache-Control'] = 'no-cache' pg_logger.exec_script_str(self.request.get('user_script'), self.json_finalizer) - #pg_logger.exec_script_str(TEST_STR, self.json_finalizer) app = webapp2.WSGIApplication([('/', TutorPage), From 1f2b3860e9d125f61baf70be2b2bd528dc70b5a5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 16:24:38 -0700 Subject: [PATCH 065/502] cleanups --- PyTutorGAE/js/pytutor.js | 42 ++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 606db4546..4025fcc2d 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -44,6 +44,7 @@ function ExecutionVisualizer(domRootID, dat, startingInstruction /* optional */) this.curInstr = (startingInstruction - 1); // zero-indexed } + // needs to be unique! this.visualizerID = curVisualizerID; curVisualizerID++; @@ -95,6 +96,13 @@ function ExecutionVisualizer(domRootID, dat, startingInstruction /* optional */) } +// create a unique ID, which is often necessary so that jsPlumb doesn't get confused +// due to multiple ExecutionVisualizer instances being displayed simultaneously +ExecutionVisualizer.prototype.generateID = function(original_id) { + return this.visualizerID + '__' + original_id; +} + + ExecutionVisualizer.prototype.render = function() { if (this.hasRendered) { alert('ERROR: You should only call render() ONCE on an ExecutionVisualizer object.'); @@ -1248,11 +1256,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // IE needs this div to be NON-EMPTY in order to properly // render jsPlumb endpoints, so that's why we add an " "! - var srcDivID = myViz.visualizerID + '__heap_pointer_src_' + heap_pointer_src_id; + var srcDivID = myViz.generateID('heap_pointer_src_' + heap_pointer_src_id); heap_pointer_src_id++; // just make sure each source has a UNIQUE ID d3DomElement.append('
 
'); - var dstDivID = myViz.visualizerID + '__heap_object_' + objID; + var dstDivID = myViz.generateID('heap_object_' + objID); assert(!connectionEndpointIDs.has(srcDivID)); connectionEndpointIDs.set(srcDivID, dstDivID); @@ -1264,7 +1272,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } - var heapObjID = myViz.visualizerID + '__heap_object_' + objID; + var heapObjID = myViz.generateID('heap_object_' + objID); // wrap ALL compound objects in a heapObject div so that jsPlumb @@ -1435,10 +1443,14 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // render all global variables IN THE ORDER they were created by the program, // in order to ensure continuity: if (curEntry.ordered_globals.length > 0) { - this.domRoot.find("#stack").append('
Global variables
'); - this.domRoot.find('#stack #' + myViz.visualizerID + '__globals').append('
'); - var tbl = this.domRoot.find('#' + myViz.visualizerID + '__global_table'); + var globalsID = myViz.generateID('globals'); + var globalTblID = myViz.generateID('global_table'); + + this.domRoot.find("#stack").append('
Global variables
'); + this.domRoot.find('#stack #' + globalsID).append('
'); + + var tbl = this.domRoot.find('#' + globalTblID); $.each(curEntry.ordered_globals, function(i, varname) { var val = curEntry.globals[varname]; @@ -1457,11 +1469,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // make sure varname doesn't contain any weird // characters that are illegal for CSS ID's ... - var varDivID = myViz.visualizerID + '__global__' + varnameToCssID(varname); + var varDivID = myViz.generateID('global__' + varnameToCssID(varname)); curTr.find("td.stackFrameValue").append('
 
'); assert(!connectionEndpointIDs.has(varDivID)); - var heapObjID = myViz.visualizerID + '__heap_object_' + getRefID(val); + var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); connectionEndpointIDs.set(varDivID, heapObjID); } } @@ -1491,13 +1503,13 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var divClass, divID, headerDivID; if (is_zombie) { divClass = 'zombieStackFrame'; - divID = myViz.visualizerID + "__zombie_stack" + ind; - headerDivID = "zombie_stack_header" + ind; + divID = myViz.generateID("zombie_stack" + ind); + headerDivID = myViz.generateID("zombie_stack_header" + ind); } else { divClass = 'stackFrame'; - divID = myViz.visualizerID + "__stack" + ind; - headerDivID = "stack_header" + ind; + divID = myViz.generateID("stack" + ind); + headerDivID = myViz.generateID("stack_header" + ind); } myViz.domRoot.find("#stack").append('
'); @@ -1551,7 +1563,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { assert(!connectionEndpointIDs.has(varDivID)); - var heapObjID = myViz.visualizerID + '__heap_object_' + getRefID(val); + var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); connectionEndpointIDs.set(varDivID, heapObjID); } }); @@ -1613,13 +1625,13 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var frame_already_highlighted = false; $.each(curEntry.stack_to_render, function(i, e) { if (e.is_highlighted) { - highlight_frame(myViz.visualizerID + '__stack' + i); + highlight_frame(myViz.generateID('stack' + i)); frame_already_highlighted = true; } }); if (!frame_already_highlighted) { - highlight_frame(myViz.visualizerID + '__globals'); + highlight_frame(myViz.generateID('globals')); } } From 6b1b22c9e4a0b52aabf5f7e65c0b9bb5e8f9be8a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 16:41:45 -0700 Subject: [PATCH 066/502] almost there! --- PyTutorGAE/js/opt-frontend.js | 4 +++- PyTutorGAE/js/pytutor.js | 28 ++++++++++++++++++---------- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index f3c02959b..2d3c52d28 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -176,7 +176,9 @@ $(document).ready(function() { preseededCurInstr = null; } - myVisualizer = new ExecutionVisualizer(dataFromBackend, startingInstruction, 'pyOutputPane'); + myVisualizer = new ExecutionVisualizer('pyOutputPane', + dataFromBackend, + {startingInstruction: startingInstruction}); $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); } diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 4025fcc2d..e5faf249b 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -33,16 +33,16 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // dat is data returned by the Python Tutor backend consisting of two fields: // code - string of executed code // trace - a full execution trace -// startingInstruction is (optional) the execution point to display upon rendering (one-indexed) -function ExecutionVisualizer(domRootID, dat, startingInstruction /* optional */) { +// params contains optional parameters, such as: +// startingInstruction - the (one-indexed) execution point to display upon rendering +// hideOutput - hide "Program output" and "Generate URL" displays +function ExecutionVisualizer(domRootID, dat, params) { this.curInputCode = dat.code; this.curTrace = dat.trace; this.curInstr = 0; - if (startingInstruction) { - this.curInstr = (startingInstruction - 1); // zero-indexed - } + this.params = params; // needs to be unique! this.visualizerID = curVisualizerID; @@ -137,9 +137,11 @@ ExecutionVisualizer.prototype.render = function() { \
\ \ +
\ Program output:
\ \

\ +
\
\
\ @@ -163,6 +165,9 @@ ExecutionVisualizer.prototype.render = function() {
'); + if (this.params && this.params.hideOutput) { + this.domRoot.find('#progOutputs').hide(); + } this.domRoot.find('#genUrlBtn').bind('click', function() { var urlStr = $.param.fragment(window.location.href, @@ -222,11 +227,10 @@ ExecutionVisualizer.prototype.render = function() { this.curTrace.shift(); } - var sliderDiv = this.domRoot.find('#executionSlider'); - // set up slider after postprocessing curTrace - sliderDiv.slider({min: 0, max: this.curTrace.length - 1, step: 1}); + var sliderDiv = this.domRoot.find('#executionSlider'); + sliderDiv.slider({min: 0, max: this.curTrace.length - 1, step: 1}); //disable keyboard actions on the slider itself (to prevent double-firing of events) sliderDiv.find(".ui-slider-handle").unbind('keydown'); // make skinnier and taller @@ -246,6 +250,12 @@ ExecutionVisualizer.prototype.render = function() { }); + if (this.params && this.params.startingInstruction) { + assert(1 <= this.params.startingInstruction && + this.params.startingInstruction <= this.curTrace.length); + this.curInstr = (this.params.startingInstruction - 1); // convert to zero-indexed + } + this.setKeyboardBindings(); @@ -627,8 +637,6 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { ExecutionVisualizer.prototype.updateOutput = function() { var myViz = this; // to prevent confusion of 'this' inside of nested functions - this.domRoot.find('td#left_pane').focus(); // to start accepting keyboard inputs - assert(this.curTrace); this.domRoot.find('#urlOutput').val(''); // blank out From 98e46716f8e2581c2731e957b85aedd0d854dd57 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 16:46:18 -0700 Subject: [PATCH 067/502] embedding almost done, i think! --- PyTutorGAE/embedding-examples.js | 19 ++++++++++++++ PyTutorGAE/embedding-test.html | 45 ++++++++++++++++++++++++++++++++ PyTutorGAE/js/pytutor.js | 5 ++++ 3 files changed, 69 insertions(+) create mode 100644 PyTutorGAE/embedding-examples.js create mode 100644 PyTutorGAE/embedding-test.html diff --git a/PyTutorGAE/embedding-examples.js b/PyTutorGAE/embedding-examples.js new file mode 100644 index 000000000..5476cdd12 --- /dev/null +++ b/PyTutorGAE/embedding-examples.js @@ -0,0 +1,19 @@ +// Traces generated by generate_json_trace.py + +var aliasing = {"code": "# Example of aliasing\nx = [1, 2, 3]\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5]\nx.append(6)\ny.append(7)\ny = \"hello\"\n\ndef foo(lst): # breakpoint\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst): # breakpoint\n print myLst\n\nfoo(x)\nfoo(z)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3, 4]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5], "2": ["LIST", 1, 2, 3, 4, 5]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6], "2": ["LIST", 1, 2, 3, 4, 5]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null]}, "line": 15, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 11, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 15, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 16, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 13, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 11, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 15, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 16, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 13, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "z": ["REF", 2], "bar": ["REF", 4], "foo": ["REF", 3]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}]}; + +var aliasing5 = {"code": "x = None\nfor i in range(5, 0, -1):\n x = (i, x)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": null}, "heap": {}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 5, "x": null}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 5, "x": ["REF", 1]}, "heap": {"1": ["TUPLE", 5, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 4, "x": ["REF", 1]}, "heap": {"1": ["TUPLE", 5, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 4, "x": ["REF", 2]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 3, "x": ["REF", 2]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 3, "x": ["REF", 3]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 2, "x": ["REF", 3]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 2, "x": ["REF", 4]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 4]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 5]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]], "5": ["TUPLE", 1, ["REF", 4]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 5]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]], "5": ["TUPLE", 1, ["REF", 4]]}, "line": 2, "event": "return"}]}; + +var hanoi = {"code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "__return__": null, "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "__return__": null, "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 16, "event": "return"}]}; + + +var aliasingViz = null; +var aliasing5Viz = null; +var hanoiViz = null; + +$(document).ready(function() { + aliasingViz = new ExecutionVisualizer('aliasingDiv', aliasing, {hideOutput: true, codeDivHeight: 150}); + aliasing5Viz = new ExecutionVisualizer('aliasing5Div', aliasing5, {hideOutput: true}); + hanoiViz = new ExecutionVisualizer('hanoiDiv', hanoi, {startingInstruction: 45, hideOutput: true}); +}); + diff --git a/PyTutorGAE/embedding-test.html b/PyTutorGAE/embedding-test.html new file mode 100644 index 000000000..1a90ad607 --- /dev/null +++ b/PyTutorGAE/embedding-test.html @@ -0,0 +1,45 @@ + + + + + Online Python Tutor embedding test + + + + + + + + + + + + + + + + + + + + + + + + + +

Aliasing:

+ +
+ +

Aliasing 5:

+ +
+ +

Towers of Hanoi:

+ +
+ + + + diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index e5faf249b..e4b4b25bb 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -36,6 +36,7 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // params contains optional parameters, such as: // startingInstruction - the (one-indexed) execution point to display upon rendering // hideOutput - hide "Program output" and "Generate URL" displays +// codeDivHeight - maximum height of #pyCodeOutputDiv (in pixels) function ExecutionVisualizer(domRootID, dat, params) { this.curInputCode = dat.code; this.curTrace = dat.trace; @@ -164,6 +165,10 @@ ExecutionVisualizer.prototype.render = function() { \ '); + if (this.params && this.params.codeDivHeight) { + this.domRoot.find('#pyCodeOutputDiv').css('max-height', this.params.codeDivHeight); + } + if (this.params && this.params.hideOutput) { this.domRoot.find('#progOutputs').hide(); From 7593843e3be477e908ee6c9d6063b6b45a3b3c45 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 16:47:29 -0700 Subject: [PATCH 068/502] added --- PyTutorGAE/generate_json_trace.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 PyTutorGAE/generate_json_trace.py diff --git a/PyTutorGAE/generate_json_trace.py b/PyTutorGAE/generate_json_trace.py new file mode 100644 index 000000000..e973bc4a4 --- /dev/null +++ b/PyTutorGAE/generate_json_trace.py @@ -0,0 +1,13 @@ +# Generates a JSON trace that is compatible with the js/pytutor.js frontend + +import sys, pg_logger, json + + +def json_finalizer(input_code, output_trace): + ret = dict(code=input_code, trace=output_trace) + json_output = json.dumps(ret, indent=None) # use indent=None for most compact repr + print json_output + + +pg_logger.exec_script_str(open(sys.argv[1]).read(), json_finalizer) + From 036d49aa37ee845b7d8229b5b13b10165a5e780a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 18:54:10 -0700 Subject: [PATCH 069/502] integrated most (but not all) of denero's patches for porting to Python 3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit parts that remain unintegrated since they led to weird crashes in Python 2.7 diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py index 0445ae0..23c7b0d 100644 --- a/PyTutorGAE/pg_encoder.py +++ b/PyTutorGAE/pg_encoder.py @@ -50,11 +50,11 @@  import re, types -typeRE = re.compile("") -classRE = re.compile("") -  import inspect @@ -122,36 +120,22 @@ class ObjectEncoder: - -      elif typ in (types.InstanceType, types.ClassType, types.TypeType) or \ -           classRE.match(str(typ)): -        # ugh, classRE match is a bit of a hack :( -        if typ == types.InstanceType or classRE.match(str(typ)): -          new_obj.extend(['INSTANCE', dat.__class__.__name__]) -        else: -          superclass_names = [e.__name__ for e in dat.__bases__] -          new_obj.extend(['CLASS', dat.__name__, superclass_names]) - -        # traverse inside of its __dict__ to grab attributes -        # (filter out useless-seeming ones): -        user_attrs = sorted([e for e in dat.__dict__.keys()  -                             if e not in ('__doc__', '__module__', '__return__')]) - -        for attr in user_attrs: -          new_obj.append([self.encode(attr), self.encode(dat.__dict__[attr])])        elif typ in (types.FunctionType, types.MethodType):          # NB: In Python 3.0, getargspec is deprecated in favor of getfullargspec          argspec = inspect.getargspec(dat) @@ -162,13 +146,25 @@ class ObjectEncoder:          new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later        else: -        typeStr = str(typ) -        m = typeRE.match(typeStr) -        assert m, typ -        new_obj.extend([m.group(1), str(dat)]) +        if isinstance(dat, type): +          superclass_names = [get_name(e) for e in dat.__bases__ if e is not object] +          new_obj.extend(['CLASS', get_name(dat), superclass_names]) +        else: +          new_obj.extend(['INSTANCE', dat.__class__.__name__]) -      return ret +        # traverse inside of its __dict__ to grab attributes +        # (filter out useless-seeming ones): +        hidden = ('__doc__', '__module__', '__return__', '__dict__', +            '__locals__', '__weakref__') +        if hasattr(dat, '__dict__'): +          user_attrs = sorted([e for e in dat.__dict__ if e not in hidden]) +        else: +            user_attrs = [] + +        for attr in user_attrs: +          new_obj.append([self.encode(attr), self.encode(dat.__dict__[attr])]) +      return ret diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index f0cf5c6..a497aa9 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -36,7 +36,7 @@ import re  import traceback  import types -import cStringIO +import io  import pg_encoder @@ -477,7 +491,7 @@ class PGLogger(bdb.Bdb):          ''' -        user_stdout = cStringIO.StringIO() +        user_stdout = io.StringIO()          sys.stdout = user_stdout          user_globals = {"__name__"    : "__main__", --- PyTutorGAE/pg_encoder.py | 30 ++++++++++++++++++------------ PyTutorGAE/pg_logger.py | 38 ++++++++++++++++++++++++-------------- 2 files changed, 42 insertions(+), 26 deletions(-) diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py index 0445ae03c..75c47b608 100644 --- a/PyTutorGAE/pg_encoder.py +++ b/PyTutorGAE/pg_encoder.py @@ -1,8 +1,8 @@ # Online Python Tutor # https://github.com/pgbovine/OnlinePythonTutor/ -# +# # Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) -# +# # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including @@ -10,10 +10,10 @@ # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: -# +# # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -55,6 +55,10 @@ import inspect +def get_name(obj): + """Return the name of an object.""" + return obj.__name__ if hasattr(obj, '__name__') else get_name(type(obj)) + # Note that this might BLOAT MEMORY CONSUMPTION since we're holding on # to every reference ever created by the program without ever releasing @@ -90,8 +94,7 @@ def set_function_parent_frame_ID(self, ref_obj, enclosing_frame_id): # and as a side effect, update encoded_heap_objects def encode(self, dat): # primitive type - if dat is None or \ - type(dat) in (int, long, float, str, bool): + if type(dat) in (int, float, str, bool, type(None)): return dat # compound type - return an object reference and update encoded_heap_objects @@ -122,18 +125,21 @@ def encode(self, dat): if typ == list: new_obj.append('LIST') - for e in dat: new_obj.append(self.encode(e)) + for e in dat: + new_obj.append(self.encode(e)) elif typ == tuple: new_obj.append('TUPLE') - for e in dat: new_obj.append(self.encode(e)) + for e in dat: + new_obj.append(self.encode(e)) elif typ == set: new_obj.append('SET') - for e in dat: new_obj.append(self.encode(e)) + for e in dat: + new_obj.append(self.encode(e)) elif typ == dict: new_obj.append('DICT') - for (k, v) in dat.iteritems(): + for (k, v) in dat.items(): # don't display some built-in locals ... - if k not in ('__module__', '__return__'): + if k not in ('__module__', '__return__', '__locals__'): new_obj.append([self.encode(k), self.encode(v)]) elif typ in (types.InstanceType, types.ClassType, types.TypeType) or \ @@ -162,7 +168,7 @@ def encode(self, dat): if argspec.keywords: printed_args.extend(['**' + e for e in argspec.keywords]) - pretty_name = dat.__name__ + '(' + ', '.join(printed_args) + ')' + pretty_name = get_name(dat) + '(' + ', '.join(printed_args) + ')' new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later else: typeStr = str(typ) diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 21dbc6889..84988b929 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -1,8 +1,8 @@ # Online Python Tutor # https://github.com/pgbovine/OnlinePythonTutor/ -# +# # Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) -# +# # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including @@ -10,7 +10,7 @@ # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: -# +# # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. # @@ -67,7 +67,7 @@ def get_user_locals(frame): def filter_var_dict(d): ret = {} - for (k,v) in d.iteritems(): + for (k,v) in d.items(): if k not in IGNORE_VARS: ret[k] = v return ret @@ -94,7 +94,7 @@ def __init__(self, finalizer_func): # Key: function object # Value: parent frame self.closures = {} - + # List of frames to KEEP AROUND after the function exits, # because nested functions were defined in those frames. # ORDER matters for aesthetics. @@ -125,7 +125,8 @@ def __init__(self, finalizer_func): # to make an educated guess based on the contents of local # variables inherited from possible parent frame candidates. def get_parent_frame(self, frame): - for (func_obj, parent_frame) in self.closures.iteritems(): + # TODO(denero) Is this true in Python 3?!? + for (func_obj, parent_frame) in self.closures.items(): # ok, there's a possible match, but let's compare the # local variables in parent_frame to those of frame # to make sure. this is a hack that happens to work because in @@ -138,7 +139,7 @@ def get_parent_frame(self, frame): if parent_frame.f_locals[k] != frame.f_locals[k]: all_matched = False break - + if all_matched: return parent_frame @@ -191,7 +192,7 @@ def user_call(self, frame, argument_list): def user_line(self, frame): """This function is called when we stop or break at this line.""" if self._wait_for_mainpyfile: - if (self.canonic(frame.f_code.co_filename) != "" or + if (self.canonic(frame.f_code.co_filename) != "" or frame.f_lineno <= 0): return self._wait_for_mainpyfile = 0 @@ -267,7 +268,7 @@ def create_encoded_stack_entry(cur_frame): # effects of aliasing later down the line ... encoded_locals = {} - for (k, v) in get_user_locals(cur_frame).iteritems(): + for (k, v) in get_user_locals(cur_frame).items(): is_in_parent_frame = False # don't display locals that appear in your parents' stack frames, @@ -275,7 +276,8 @@ def create_encoded_stack_entry(cur_frame): for pid in parent_frame_id_list: parent_frame = self.lookup_zombie_frame_by_id(pid) if k in parent_frame.f_locals: - # ignore __return__ + # TODO(denero) Check Python3 + # ignore __return__, which is never copied if k != '__return__': # these values SHOULD BE ALIASES # (don't do an 'is' check since it might not fire for primitives) @@ -292,6 +294,7 @@ def create_encoded_stack_entry(cur_frame): encoded_val = self.encoder.encode(v) # UGH, this is SUPER ugly but needed for nested function defs + # TODO(denero) Is this true in Python 3?!? if type(v) in (types.FunctionType, types.MethodType): try: enclosing_frame = self.closures[v] @@ -323,6 +326,13 @@ def create_encoded_stack_entry(cur_frame): if '__return__' in encoded_locals: ordered_varnames.append('__return__') + # doctor Python 3 initializer to look like a normal function (denero) + if '__locals__' in encoded_locals: + ordered_varnames.remove('__locals__') + local = encoded_locals.pop('__locals__') + if encoded_locals.get('__return__', True) is None: + encoded_locals['__return__'] = local + # crucial sanity checks! assert len(ordered_varnames) == len(encoded_locals) for e in ordered_varnames: @@ -340,7 +350,7 @@ def create_encoded_stack_entry(cur_frame): # look for whether a nested function has been defined during # this particular call: if i > 1: # i == 1 implies that there's only a global scope visible - for (k, v) in get_user_locals(top_frame).iteritems(): + for (k, v) in get_user_locals(top_frame).items(): if (type(v) in (types.FunctionType, types.MethodType) and \ v not in self.closures): self.closures[v] = top_frame @@ -364,7 +374,7 @@ def create_encoded_stack_entry(cur_frame): # encode in a JSON-friendly format now, in order to prevent ill # effects of aliasing later down the line ... encoded_globals = {} - for (k, v) in get_user_globals(tos[0]).iteritems(): + for (k, v) in get_user_globals(tos[0]).items(): encoded_val = self.encoder.encode(v) # UGH, this is SUPER ugly but needed for nested function defs @@ -471,9 +481,9 @@ def _runscript(self, script_str): # allowing certain potentially dangerous operations: user_builtins = {} for (k,v) in __builtins__.iteritems(): - if k in ('reload', 'input', 'apply', 'open', 'compile', + if k in ('reload', 'input', 'apply', 'open', 'compile', '__import__', 'file', 'eval', 'execfile', - 'exit', 'quit', 'raw_input', + 'exit', 'quit', 'raw_input', 'dir', 'globals', 'locals', 'vars', 'compile'): continue From a8ae994f29f9bcb19d674b7f7d9484a7c057e813 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 19:02:30 -0700 Subject: [PATCH 070/502] python 2 still has 'long' type, so put it back in --- PyTutorGAE/pg_encoder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py index 75c47b608..b15e10d19 100644 --- a/PyTutorGAE/pg_encoder.py +++ b/PyTutorGAE/pg_encoder.py @@ -94,7 +94,7 @@ def set_function_parent_frame_ID(self, ref_obj, enclosing_frame_id): # and as a side effect, update encoded_heap_objects def encode(self, dat): # primitive type - if type(dat) in (int, float, str, bool, type(None)): + if type(dat) in (int, long, float, str, bool, type(None)): return dat # compound type - return an object reference and update encoded_heap_objects From 46bb7896bc0e7cd43dfa6289933ed0c57395871f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 19:05:46 -0700 Subject: [PATCH 071/502] tiny change to grab kb focus right away --- PyTutorGAE/js/opt-frontend.js | 3 +++ PyTutorGAE/js/pytutor.js | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index 2d3c52d28..551ed34f4 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -109,6 +109,9 @@ $(document).ready(function() { // jsPlumb connectors won't render properly myVisualizer.updateOutput(); + // grab focus so that keyboard events work + myVisualizer.grabKeyboardFocus(); + // customize edit button click functionality AFTER rendering (TODO: awkward!) $('#pyOutputPane #editBtn').click(function() { enterEditMode(); diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index e4b4b25bb..c20a65c64 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -395,6 +395,11 @@ ExecutionVisualizer.prototype.setKeyboardBindings = function() { } +ExecutionVisualizer.prototype.grabKeyboardFocus = function() { + this.domRoot.find('td#left_pane').focus(); +} + + ExecutionVisualizer.prototype.renderPyCodeOutput = function() { var myViz = this; // to prevent confusion of 'this' inside of nested functions From 461f9a0a993844d83edb73ed669cd442b60407d5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 22:59:35 -0700 Subject: [PATCH 072/502] start refactoring globals frame to use d3 --- PyTutorGAE/js/pytutor.js | 137 +++++++++++++++++++++++++++------------ 1 file changed, 95 insertions(+), 42 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index c20a65c64..cd067f4c1 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -100,7 +100,8 @@ function ExecutionVisualizer(domRootID, dat, params) { // create a unique ID, which is often necessary so that jsPlumb doesn't get confused // due to multiple ExecutionVisualizer instances being displayed simultaneously ExecutionVisualizer.prototype.generateID = function(original_id) { - return this.visualizerID + '__' + original_id; + // (it's safer to start names with a letter rather than a number) + return 'v' + this.visualizerID + '__' + original_id; } @@ -165,6 +166,14 @@ ExecutionVisualizer.prototype.render = function() { \ '); + + // create a persistent globals frame + this.domRoot.find("#stack").append('
Global variables
'); + + if (this.params && this.params.codeDivHeight) { this.domRoot.find('#pyCodeOutputDiv').css('max-height', this.params.codeDivHeight); } @@ -592,17 +601,12 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { .data(this.codeOutputLines) .enter().append('tr') .selectAll('td') - .data(function(e, i){return [e, e];}) // bind an alias of the element to both table columns + .data(function(d, i){return [d, d] /* map full data item down both columns */;}) .enter().append('td') .attr('class', function(d, i) {return (i == 0) ? 'lineNo' : 'cod';}) .style('cursor', function(d, i) {return 'pointer'}) .html(function(d, i) { - if (i == 0) { - return d.lineNumber; - } - else { - return htmlspecialchars(d.text); - } + return (i == 0) ? d.lineNumber : htmlspecialchars(d.text); }) .on('mouseover', function() { setHoverBreakpoint(this); @@ -1123,11 +1127,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var curEntry = this.curTrace[this.curInstr]; var curToplevelLayout = this.curTraceLayouts[this.curInstr]; - // clear the stack and render it from scratch. - // the heap must be PERSISTENT so that d3 can render heap transitions. - this.domRoot.find("#stack").empty(); - this.domRoot.find("#stack").append('
Frames
'); - // Heap object rendering phase: @@ -1164,7 +1163,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .selectAll('table.heapRow') .data(curToplevelLayout, function(objLst) { return objLst[0]; // return first element, which is the row ID tag - }) + }); // update an existing heap row @@ -1172,12 +1171,12 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { //.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) .selectAll('td') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ - function(objID) {return objID;} /* each object ID is unique for constancy */) + function(objID) {return objID;} /* each object ID is unique for constancy */); // ENTER heapColumns.enter().append('td') .attr('class', 'toplevelHeapObject') - .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) + .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}); // remember that the enter selection is added to the update // selection so that we can process it later ... @@ -1191,11 +1190,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // Right now, just delete the old element and render a new one in its place $(this).empty(); renderCompoundObject(objID, $(this), true); - }) + }); // EXIT heapColumns.exit() - .remove() + .remove(); // insert new heap rows @@ -1450,37 +1449,78 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } - // Render globals and then stack frames: - // TODO: could convert to using d3 to map globals and stack frames directly into stack frame divs - // (which might make it easier to do smooth transitions) - // However, I need to think carefully about what to use as object keys for stack objects. - // Perhaps a combination of function name and current position index? This might handle - // recursive calls well (i.e., when there are multiple invocations of the same function - // on the stack) + // Render globals and then stack frames using d3: + + // TODO: However, I need to think carefully about what to use as + // object keys for stack objects. Perhaps a combination of function + // name and current position index? This might handle recursive calls + // well (i.e., when there are multiple invocations of the same + // function on the stack) + // render all global variables IN THE ORDER they were created by the program, // in order to ensure continuity: - if (curEntry.ordered_globals.length > 0) { - var globalsID = myViz.generateID('globals'); - var globalTblID = myViz.generateID('global_table'); + // Derive a list where each element contains a pair of + // [varname, value] as long as value is NOT undefined. + // (Sometimes entries in curEntry.ordered_globals are undefined, + // so filter those out.) + var realGlobalsLst = []; + $.each(curEntry.ordered_globals, function(i, varname) { + var val = curEntry.globals[varname]; + + // (use '!==' to do an EXACT match against undefined) + if (val !== undefined) { // might not be defined at this line, which is OKAY! + realGlobalsLst.push([varname, varname]); /* purposely map varname down both columns */ + } + }); - this.domRoot.find("#stack").append('
Global variables
'); - this.domRoot.find('#stack #' + globalsID).append('
'); + var globalsID = myViz.generateID('globals'); + var globalTblID = myViz.generateID('global_table'); - var tbl = this.domRoot.find('#' + globalTblID); + var globalsD3 = myViz.domRootD3.select('#' + globalTblID) + .selectAll('tr') + .data(realGlobalsLst, function(d) { + return d[0]; // use variable name as key + }); + - $.each(curEntry.ordered_globals, function(i, varname) { - var val = curEntry.globals[varname]; - // (use '!==' to do an EXACT match against undefined) - if (val !== undefined) { // might not be defined at this line, which is OKAY! - tbl.append('' + varname + ''); - var curTr = tbl.find('tr:last'); + // ENTER + globalsD3.enter() + .append('tr') + .selectAll('td') + .data(function(d, i){return d;}) /* map varname down both columns */ + .enter() + .append('td') + .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}) + .html(function(d, i) { + return (i == 0) ? d : '' /* initialize in each() later */; + }) + // remember that the enter selection is added to the update + // selection so that we can process it later ... + + // UPDATE + globalsD3 + .order() // VERY IMPORTANT to put in the order corresponding to data elements + .selectAll('td') + .data(function(d, i){return d;}) /* map varname down both columns */ + .each(function(varname, i) { + console.log('EACH!', i, varname); + + if (i == 1) { + var val = curEntry.globals[varname]; if (isPrimitiveType(val)) { - renderPrimitiveObject(val, curTr.find("td.stackFrameValue")); + $(this).empty(); // crude but effective; maybe soften with a transition later + renderPrimitiveObject(val, $(this)); } - else{ + else { + $(this).empty(); // crude but effective; maybe soften with a transition later + + // or even better, simply keep
around if it already exists + // so that jsPlumb connectors can persist. + + // add a stub so that we can connect it with a connector later. // IE needs this div to be NON-EMPTY in order to properly // render jsPlumb endpoints, so that's why we add an " "! @@ -1488,7 +1528,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // make sure varname doesn't contain any weird // characters that are illegal for CSS ID's ... var varDivID = myViz.generateID('global__' + varnameToCssID(varname)); - curTr.find("td.stackFrameValue").append('
 
'); + $(this).append('
 
'); assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); @@ -1496,12 +1536,25 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } } }); + + globalsD3.exit() + .remove(); + + + // for aesthetics, hide globals if there aren't any globals to display + if (curEntry.ordered_globals.length == 0) { + this.domRoot.find('#' + globalsID).hide(); + } + else { + this.domRoot.find('#' + globalsID).show(); } + /* $.each(curEntry.stack_to_render, function(i, e) { renderStackFrame(e, i, e.is_zombie); }); + */ function renderStackFrame(frame, ind, is_zombie) { @@ -1601,9 +1654,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var c = allConnections[i]; // this is VERY VERY fragile code, since it assumes that going up - // five layers of parent() calls will get you from the source end + // FOUR layers of parent() calls will get you from the source end // of the connector to the enclosing stack frame - var stackFrameDiv = c.source.parent().parent().parent().parent().parent(); + var stackFrameDiv = c.source.parent().parent().parent().parent(); // if this connector starts in the selected stack frame ... if (stackFrameDiv.attr('id') == frameID) { From 64b4f337a8063e01a325271c73e7f2aa82628ec1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 8 Aug 2012 23:47:33 -0700 Subject: [PATCH 073/502] SUPER DUPER HACK --- PyTutorGAE/js/pytutor.js | 51 ++++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index cd067f4c1..20073c622 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1505,36 +1505,47 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .selectAll('td') .data(function(d, i){return d;}) /* map varname down both columns */ .each(function(varname, i) { - console.log('EACH!', i, varname); - if (i == 1) { var val = curEntry.globals[varname]; - if (isPrimitiveType(val)) { - $(this).empty(); // crude but effective; maybe soften with a transition later - renderPrimitiveObject(val, $(this)); - } - else { - $(this).empty(); // crude but effective; maybe soften with a transition later + // include type in repr to prevent conflating integer 5 with string "5" + var valStringRepr = String(typeof val) + ':' + String(val); - // or even better, simply keep
around if it already exists - // so that jsPlumb connectors can persist. + // SUPER HACK - retrieve previous value as a hidden attribute + var prevValStringRepr = $(this).attr('data-curvalue'); + // IMPORTANT! only clear the div and render a new element if the + // value has changed + if (valStringRepr != prevValStringRepr) { + // TODO: render a transition - // add a stub so that we can connect it with a connector later. - // IE needs this div to be NON-EMPTY in order to properly - // render jsPlumb endpoints, so that's why we add an " "! + $(this).empty(); // crude but effective for now - // make sure varname doesn't contain any weird - // characters that are illegal for CSS ID's ... - var varDivID = myViz.generateID('global__' + varnameToCssID(varname)); - $(this).append('
 
'); + if (isPrimitiveType(val)) { + renderPrimitiveObject(val, $(this)); + } + else { + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + + // make sure varname doesn't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = myViz.generateID('global__' + varnameToCssID(varname)); + $(this).append('
 
'); + + assert(!connectionEndpointIDs.has(varDivID)); + var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); + connectionEndpointIDs.set(varDivID, heapObjID); + } - assert(!connectionEndpointIDs.has(varDivID)); - var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); - connectionEndpointIDs.set(varDivID, heapObjID); + console.log('CHANGED', varname, prevValStringRepr, valStringRepr); } + + // SUPER HACK - set current value as a hidden string attribute + $(this).attr('data-curvalue', valStringRepr); } + }); globalsD3.exit() From c973964f946553b4696fb25e4216efb06f5a913f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 11:31:54 -0700 Subject: [PATCH 074/502] WORLD OF PAIN (and still not done yet) --- PyTutorGAE/css/pytutor.css | 8 ++-- PyTutorGAE/js/pytutor.js | 75 +++++++++++++++++++++++++++++++++++++- 2 files changed, 78 insertions(+), 5 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 6cb3807f5..8ab3d6ff5 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -487,11 +487,13 @@ td.dictKey .typeLabel { /* new stuff added for Online Python Tutor "2.0" release */ -div#stack { - float: left; +div#stack, div#globals_area { padding-left: 10px; padding-right: 30px; - border-right: 1px dashed #bbbbbb; + + /* no longer necessary ... */ + /*float: left;*/ + /* border-right: 1px dashed #bbbbbb; */ } div.stackFrame, div.zombieStackFrame { diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 20073c622..912eea0d4 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -150,9 +150,11 @@ ExecutionVisualizer.prototype.render = function() { \ \ \ '); - tbl.append(''); - } - else { - tbl.append(''); - } - - var curTr = tbl.find('tr:last'); - - if (isPrimitiveType(val)) { - renderPrimitiveObject(val, curTr.find("td.stackFrameValue")); - } - else { - // add a stub so that we can connect it with a connector later. - // IE needs this div to be NON-EMPTY in order to properly - // render jsPlumb endpoints, so that's why we add an " "! - - // make sure varname doesn't contain any weird - // characters that are illegal for CSS ID's ... - var varDivID = divID + '__' + varnameToCssID(varname); - curTr.find("td.stackFrameValue").append('
 
'); - - assert(!connectionEndpointIDs.has(varDivID)); - - var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); - connectionEndpointIDs.set(varDivID, heapObjID); - } - }); - } - } - - /* - $.each(curEntry.stack_to_render, function(i, e) { - renderStackFrame(e, i, e.is_zombie); - }); - */ + // optional (btw, this isn't a CSS id) + if (frame.parent_frame_id_list.length > 0) { + var parentFrameID = frame.parent_frame_id_list[0]; + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + console.log('HEADER:', i, headerLabel); + return headerLabel; + }); + // finally add all the connectors! From fb1d46081cce3f29d2c537e46524782c2de4c276 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 21:35:06 -0700 Subject: [PATCH 087/502] works betta --- PyTutorGAE/js/pytutor.js | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 6f602fa0c..5e6c04485 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1541,7 +1541,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { connectionEndpointIDs.set(varDivID, heapObjID); } - //console.log('CHANGED', varname, prevValStringRepr, valStringRepr); + console.log('CHANGED', varname, prevValStringRepr, valStringRepr); } // SUPER HACK - set current value as a hidden string attribute @@ -1583,12 +1583,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // TODO: perhaps this table keeps on getting cleared out since it's done on enter()?!? .append('table') .attr('class', 'stackFrameVarTable') - .each(function(d, i) {console.log('stackFrameDiv.enter()', d.unique_hash);}) var stackVarTable = stackFrameDiv .order() // VERY IMPORTANT to put in the order corresponding to data elements - .each(function(d, i) {console.log('stackFrameDiv.order() POST', d.unique_hash);}) .select('table').selectAll('tr') .data(function(frame) { // each list element contains a reference to the entire frame @@ -1603,17 +1601,14 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable .enter() .append('tr') - .each(function(d, i) {console.log('stackVarTable.enter()', d);}) var stackVarTableCells = stackVarTable .selectAll('td') - .each(function(d, i) {console.log('stackVarTable UPDATE', d, i);}) .data(function(d, i) {return [d, d] /* map identical data down both columns */;}) stackVarTableCells.enter() .append('td') - .each(function(d, i) {console.log('stackVarTableCells.enter()', d, i);}) stackVarTableCells .order() // VERY IMPORTANT to put in the order corresponding to data elements @@ -1637,8 +1632,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var varname = d.varname; var frame = d.frame; - console.log('stackVarTableCells.each()', varname, i); - if (i == 1) { var val = frame.encoded_locals[varname]; @@ -1675,7 +1668,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { connectionEndpointIDs.set(varDivID, heapObjID); } - //console.log('CHANGED', varname, prevValStringRepr, valStringRepr); + console.log('CHANGED', varname, prevValStringRepr, valStringRepr); } // SUPER HACK - set current value as a hidden string attribute @@ -1690,9 +1683,15 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackFrameDiv.exit().remove(); - // TODO: sometimes mistakenly renders TWICE on, say, closures :( - stackFrameDiv - .insert('div', ':first-child') // prepend header after the dust settles + + // render stack frame headers in a "brute force" way by + // first clearing all of them ... + myViz.domRoot.find('.stackFrame,.zombieStackFrame').find('.stackFrameHeader').remove(); + + // ... and then rendering all of them again in one fell swoop + myViz.domRootD3.select('#stack').selectAll('.stackFrame,.zombieStackFrame') + .data(curEntry.stack_to_render) + .insert('div', ':first-child') // prepend before first child .attr('class', 'stackFrameHeader') .html(function(frame, i) { var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like @@ -1709,10 +1708,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; } - console.log('HEADER:', i, headerLabel); return headerLabel; - }); - + }) + .each(function(frame, i) {console.log('DRAW stackFrameHeader', frame.unique_hash, i);}) // finally add all the connectors! From c985f70908ae23fe15db2466571f9319adc5e884 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 21:37:06 -0700 Subject: [PATCH 088/502] bah --- PyTutorGAE/js/pytutor.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 5e6c04485..1b327ef6a 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1686,7 +1686,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // render stack frame headers in a "brute force" way by // first clearing all of them ... - myViz.domRoot.find('.stackFrame,.zombieStackFrame').find('.stackFrameHeader').remove(); + myViz.domRoot.find('#stack').find('.stackFrame,.zombieStackFrame').find('.stackFrameHeader').remove(); // ... and then rendering all of them again in one fell swoop myViz.domRootD3.select('#stack').selectAll('.stackFrame,.zombieStackFrame') @@ -1710,7 +1710,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { return headerLabel; }) - .each(function(frame, i) {console.log('DRAW stackFrameHeader', frame.unique_hash, i);}) // finally add all the connectors! From 787baa2c0628e142fc0d26bcfa64612b848508e2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 22:04:04 -0700 Subject: [PATCH 089/502] bam --- PyTutorGAE/js/pytutor.js | 30 ++++++++---------------------- 1 file changed, 8 insertions(+), 22 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 1b327ef6a..f07f99ddc 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1453,12 +1453,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // Render globals and then stack frames using d3: - // TODO: However, I need to think carefully about what to use as - // object keys for stack objects. Perhaps a combination of function - // name and current position index? This might handle recursive calls - // well (i.e., when there are multiple invocations of the same - // function on the stack) - // render all global variables IN THE ORDER they were created by the program, // in order to ensure continuity: @@ -1569,7 +1563,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var stackFrameDiv = stackDiv.selectAll('div') .data(curEntry.stack_to_render, function(frame) { - return frame.unique_hash; // VERY IMPORTANT for properly handling closures and nested functions + // VERY VERY VERY IMPORTANT for properly handling closures and nested functions + // (see the backend code for more details) + return frame.unique_hash; }); stackFrameDiv.enter() @@ -1578,9 +1574,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i); }) - //.append('div') - //.attr('class', 'stackFrameHeader') - // TODO: perhaps this table keeps on getting cleared out since it's done on enter()?!? .append('table') .attr('class', 'stackFrameVarTable') @@ -1609,30 +1602,23 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTableCells.enter() .append('td') + .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}) stackVarTableCells .order() // VERY IMPORTANT to put in the order corresponding to data elements - .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}) - .html(function(d, i) { + .each(function(d, i) { var varname = d.varname; var frame = d.frame; + if (i == 0) { if (varname == '__return__' && !frame.is_zombie) { - return 'Return value' + $(this).html('Return value'); } else { - return varname; + $(this).html(varname); } } else { - return ''; // will update in .each() - } - }) - .each(function(d, i) { - var varname = d.varname; - var frame = d.frame; - - if (i == 1) { var val = frame.encoded_locals[varname]; // include type in repr to prevent conflating integer 5 with string "5" From de4c91cbd9eb6c95f6f712d0f43f9dfde1932baf Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 22:14:42 -0700 Subject: [PATCH 090/502] more debug msgs --- PyTutorGAE/js/pytutor.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index f07f99ddc..ca10a0d36 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1283,6 +1283,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { assert(!connectionEndpointIDs.has(srcDivID)); connectionEndpointIDs.set(srcDivID, dstDivID); + console.log('HEAP->HEAP', srcDivID, dstDivID); assert(!heapConnectionEndpointIDs.has(srcDivID)); heapConnectionEndpointIDs.set(srcDivID, dstDivID); @@ -1533,6 +1534,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); connectionEndpointIDs.set(varDivID, heapObjID); + console.log('STACK->HEAP', varDivID, heapObjID); } console.log('CHANGED', varname, prevValStringRepr, valStringRepr); @@ -1652,9 +1654,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); connectionEndpointIDs.set(varDivID, heapObjID); + console.log('STACK->HEAP', varDivID, heapObjID); } - console.log('CHANGED', varname, prevValStringRepr, valStringRepr); + console.log('CHANGED', frame.unique_hash, varname, prevValStringRepr, valStringRepr); } // SUPER HACK - set current value as a hidden string attribute From 7922e482eccb4ad674b14db05bb6cefc8bae3aee Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 22:28:06 -0700 Subject: [PATCH 091/502] VITAL --- PyTutorGAE/js/pytutor.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index ca10a0d36..5fb8ca4bd 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1563,7 +1563,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var stackDiv = myViz.domRootD3.select('#stack'); - var stackFrameDiv = stackDiv.selectAll('div') + var stackFrameDiv = stackDiv.selectAll('div.stackFrame,div.zombieStackFrame') .data(curEntry.stack_to_render, function(frame) { // VERY VERY VERY IMPORTANT for properly handling closures and nested functions // (see the backend code for more details) @@ -1576,8 +1576,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i); }) + .each(function(frame, i) {console.log('NEW STACK FRAME', frame.unique_hash);}) .append('table') - .attr('class', 'stackFrameVarTable') + .attr('class', 'stackFrameVarTable'); var stackVarTable = stackFrameDiv @@ -1670,7 +1671,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable.exit().remove(); - stackFrameDiv.exit().remove(); + stackFrameDiv.exit() + .each(function(frame, i) {console.log('DEL STACK FRAME', frame.unique_hash, i);}) + .remove(); // render stack frame headers in a "brute force" way by From a0ccaff92bc8d2ca8c96ea3edcd062dbb18eb768 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 22:35:48 -0700 Subject: [PATCH 092/502] YAHHH --- PyTutorGAE/js/pytutor.js | 60 +++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 32 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 5fb8ca4bd..13b8e7e87 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1560,9 +1560,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } + // holy cow, the d3 code for stack rendering is ABSOLUTELY NUTS! var stackDiv = myViz.domRootD3.select('#stack'); + // VERY IMPORTANT for selectAll selector to be SUPER specific here! var stackFrameDiv = stackDiv.selectAll('div.stackFrame,div.zombieStackFrame') .data(curEntry.stack_to_render, function(frame) { // VERY VERY VERY IMPORTANT for properly handling closures and nested functions @@ -1570,13 +1572,36 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { return frame.unique_hash; }); - stackFrameDiv.enter() + var sfdEnter = stackFrameDiv.enter() .append('div') .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i); }) .each(function(frame, i) {console.log('NEW STACK FRAME', frame.unique_hash);}) + + sfdEnter + .append('div') + .attr('class', 'stackFrameHeader') + .html(function(frame, i) { + var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + var headerLabel = funcName + '()'; + + var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) + if (frameID) { + headerLabel = 'f' + frameID + ': ' + headerLabel; + } + + // optional (btw, this isn't a CSS id) + if (frame.parent_frame_id_list.length > 0) { + var parentFrameID = frame.parent_frame_id_list[0]; + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + + return headerLabel; + }) + + sfdEnter .append('table') .attr('class', 'stackFrameVarTable'); @@ -1614,12 +1639,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var frame = d.frame; if (i == 0) { - if (varname == '__return__' && !frame.is_zombie) { + if (varname == '__return__' && !frame.is_zombie) $(this).html('Return value'); - } - else { + else $(this).html(varname); - } } else { var val = frame.encoded_locals[varname]; @@ -1676,33 +1699,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .remove(); - // render stack frame headers in a "brute force" way by - // first clearing all of them ... - myViz.domRoot.find('#stack').find('.stackFrame,.zombieStackFrame').find('.stackFrameHeader').remove(); - - // ... and then rendering all of them again in one fell swoop - myViz.domRootD3.select('#stack').selectAll('.stackFrame,.zombieStackFrame') - .data(curEntry.stack_to_render) - .insert('div', ':first-child') // prepend before first child - .attr('class', 'stackFrameHeader') - .html(function(frame, i) { - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like - var headerLabel = funcName + '()'; - - var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) - if (frameID) { - headerLabel = 'f' + frameID + ': ' + headerLabel; - } - - // optional (btw, this isn't a CSS id) - if (frame.parent_frame_id_list.length > 0) { - var parentFrameID = frame.parent_frame_id_list[0]; - headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; - } - - return headerLabel; - }) - // finally add all the connectors! connectionEndpointIDs.forEach(function(varID, valueID) { From 3cf4482cdd115d7ba09a871f16d7cce85225cee0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 22:40:30 -0700 Subject: [PATCH 093/502] back to divs --- PyTutorGAE/js/pytutor.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 13b8e7e87..69431a4f3 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1529,7 +1529,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // make sure varname doesn't contain any weird // characters that are illegal for CSS ID's ... var varDivID = myViz.generateID('global__' + varnameToCssID(varname)); - $(this).append(' '); + $(this).append('
 
'); assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); @@ -1672,8 +1672,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // characters that are illegal for CSS ID's ... var varDivID = myViz.generateID(varnameToCssID(frame.unique_hash + '__' + varname)); - // creepy -
doesn't work here, but does ... ugh - $(this).append(' '); + $(this).append('
 
'); assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); From 577382ce9274dbe9955623b4fae31bb9bc403bfa Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 22:54:34 -0700 Subject: [PATCH 094/502] Unicode lambdas :) --- PyTutorGAE/pg_encoder.py | 5 ++++- PyTutorGAE/pg_logger.py | 5 +++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py index b15e10d19..ab671eef8 100644 --- a/PyTutorGAE/pg_encoder.py +++ b/PyTutorGAE/pg_encoder.py @@ -168,7 +168,10 @@ def encode(self, dat): if argspec.keywords: printed_args.extend(['**' + e for e in argspec.keywords]) - pretty_name = get_name(dat) + '(' + ', '.join(printed_args) + ')' + func_name = get_name(dat) + if func_name == '': + func_name = u"\u03BB" # Unicode lambda :) + pretty_name = func_name + '(' + ', '.join(printed_args) + ')' new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later else: typeStr = str(typ) diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 88ce6e2e0..e8b4a671f 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -258,9 +258,10 @@ def create_encoded_stack_entry(cur_frame): cur_name = cur_frame.f_code.co_name - # special case for lambdas - grab their line numbers too + # special case for lambdas - grab their line numbers too (or not) if cur_name == '': - cur_name = '' + # Unicode lambda :) + cur_name = u"\u03BB" # + ':line' + str(cur_frame.f_code.co_firstlineno) elif cur_name == '': cur_name = 'unnamed function' From 1220a8ea4cd0cca24add02ec61f052413d305d66 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 09:43:00 -0700 Subject: [PATCH 095/502] don't redraw ALL jsPlumb arrows on each iteration --- PyTutorGAE/js/pytutor.js | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 69431a4f3..517ae2f6a 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1118,11 +1118,6 @@ ExecutionVisualizer.prototype.precomputeCurTraceLayouts = function() { // of data structure aliasing. That is, aliased objects were rendered // multiple times, and a unique ID label was used to identify aliases. ExecutionVisualizer.prototype.renderDataStructures = function() { - // TODO: this is a known performance bottleneck (e.g., try to - // scroll quickly through the Towers of Hanoi example) since - // we are removing and redrawing ALL arrows on every call, so - // look into incrementally redrawing only what's changed between calls. - this.jsPlumbInstance.reset(); var myViz = this; // to prevent confusion of 'this' inside of nested functions @@ -1141,6 +1136,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // // The reason we need to prepend this.visualizerID is because jsPlumb needs // GLOBALLY UNIQUE IDs for use as connector endpoints. + + // the only elements in these sets are NEW elements to be rendered in this + // particular call to renderDataStructures. var connectionEndpointIDs = d3.map(); var heapConnectionEndpointIDs = d3.map(); // subset of connectionEndpointIDs for heap->heap connections @@ -1281,9 +1279,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var dstDivID = myViz.generateID('heap_object_' + objID); + // TODO: we might be able to further optimize, since we might be re-drawing + // HEAP->HEAP connections when we can just keep the existing ones assert(!connectionEndpointIDs.has(srcDivID)); connectionEndpointIDs.set(srcDivID, dstDivID); - console.log('HEAP->HEAP', srcDivID, dstDivID); + //console.log('HEAP->HEAP', srcDivID, dstDivID); assert(!heapConnectionEndpointIDs.has(srcDivID)); heapConnectionEndpointIDs.set(srcDivID, dstDivID); @@ -1534,10 +1534,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); connectionEndpointIDs.set(varDivID, heapObjID); - console.log('STACK->HEAP', varDivID, heapObjID); + //console.log('STACK->HEAP', varDivID, heapObjID); } - console.log('CHANGED', varname, prevValStringRepr, valStringRepr); + //console.log('CHANGED', varname, prevValStringRepr, valStringRepr); } // SUPER HACK - set current value as a hidden string attribute @@ -1578,7 +1578,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i); }) - .each(function(frame, i) {console.log('NEW STACK FRAME', frame.unique_hash);}) + //.each(function(frame, i) {console.log('NEW STACK FRAME', frame.unique_hash);}) sfdEnter .append('div') @@ -1677,10 +1677,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); connectionEndpointIDs.set(varDivID, heapObjID); - console.log('STACK->HEAP', varDivID, heapObjID); + //console.log('STACK->HEAP', varDivID, heapObjID); } - console.log('CHANGED', frame.unique_hash, varname, prevValStringRepr, valStringRepr); + //console.log('CHANGED', frame.unique_hash, varname, prevValStringRepr, valStringRepr); } // SUPER HACK - set current value as a hidden string attribute @@ -1694,7 +1694,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable.exit().remove(); stackFrameDiv.exit() - .each(function(frame, i) {console.log('DEL STACK FRAME', frame.unique_hash, i);}) + //.each(function(frame, i) {console.log('DEL STACK FRAME', frame.unique_hash, i);}) .remove(); @@ -1704,6 +1704,12 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { myViz.jsPlumbInstance.connect({source: varID, target: valueID}); }); + /* + myViz.jsPlumbInstance.select().each(function(c) { + console.log(c.sourceId, c.targetId); + }); + */ + function highlight_frame(frameID) { var allConnections = myViz.jsPlumbInstance.getConnections(); From d9c394658b30acba5ecfb05d4d60c670f392b4cb Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 09:58:06 -0700 Subject: [PATCH 096/502] ergh --- PyTutorGAE/js/pytutor.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 517ae2f6a..2cc863363 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1640,7 +1640,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { if (i == 0) { if (varname == '__return__' && !frame.is_zombie) - $(this).html('Return value'); + $(this).html('Return
value
'); else $(this).html(varname); } @@ -1698,8 +1698,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .remove(); + // crap, we need to repaint all of the existing connectors in case their endpoints have shifted + // due to page elements shifting around :( + myViz.jsPlumbInstance.repaintEverything(); - // finally add all the connectors! + // finally add all the NEW connectors that have arisen in this call to renderDataStructures connectionEndpointIDs.forEach(function(varID, valueID) { myViz.jsPlumbInstance.connect({source: varID, target: valueID}); }); From 6f2e34160a673c7312f2b1a3eec9cc32710e7a3d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 10:17:51 -0700 Subject: [PATCH 097/502] minor futzing --- PyTutorGAE/js/pytutor.js | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 2cc863363..0b010d218 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -53,9 +53,9 @@ function ExecutionVisualizer(domRootID, dat, params) { // cool, we can create a separate jsPlumb instance for each visualization: this.jsPlumbInstance = jsPlumb.getInstance({ Endpoint: ["Dot", {radius:3}], - EndpointStyles: [{fillStyle: lightGray}, {fillstyle: null} /* make right endpoint invisible */], + EndpointStyles: [{fillStyle: darkBlue}, {fillstyle: null} /* make right endpoint invisible */], Anchors: ["RightMiddle", "LeftMiddle"], - PaintStyle: {lineWidth:1, strokeStyle: lightGray}, + PaintStyle: {lineWidth:1, strokeStyle: darkBlue}, // bezier curve style: //Connector: [ "Bezier", { curviness:15 }], /* too much 'curviness' causes lines to run together */ @@ -1715,10 +1715,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { function highlight_frame(frameID) { - var allConnections = myViz.jsPlumbInstance.getConnections(); - for (var i = 0; i < allConnections.length; i++) { - var c = allConnections[i]; - + myViz.jsPlumbInstance.select().each(function(c) { // this is VERY VERY fragile code, since it assumes that going up // FOUR layers of parent() calls will get you from the source end // of the connector to the enclosing stack frame @@ -1735,12 +1732,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } // for heap->heap connectors else if (heapConnectionEndpointIDs.has(c.endpoints[0].elementId)) { - // then HIGHLIGHT IT! - c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); - c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); - //c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible - - $(c.canvas).css("z-index", 1000); // ... and move it to the VERY FRONT + // NOP since it's already the color and style we set by default } else { // else unhighlight it @@ -1750,7 +1742,8 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { $(c.canvas).css("z-index", 0); } - } + }); + // clear everything, then just activate this one ... myViz.domRoot.find(".stackFrame").removeClass("highlightedStackFrame"); From 10718750cb7c9abbe53ebb29f2fa1fc8e1ac92c8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 10:49:37 -0700 Subject: [PATCH 098/502] altered aliasing example --- example-code/aliasing.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/example-code/aliasing.txt b/example-code/aliasing.txt index 174ba2ec4..1426e8bb6 100644 --- a/example-code/aliasing.txt +++ b/example-code/aliasing.txt @@ -1,4 +1,9 @@ -# Example of aliasing +x = [1, 2, 3] +y = [4, 5, 6] +z = y +y = x +x = z + x = [1, 2, 3] y = x x.append(4) @@ -8,11 +13,12 @@ x.append(6) y.append(7) y = "hello" -def foo(lst): # breakpoint + +def foo(lst): lst.append("hello") bar(lst) -def bar(myLst): # breakpoint +def bar(myLst): print myLst foo(x) From 9ff092107d134a023e477d50b2b40803da6e14fa Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 11:27:47 -0700 Subject: [PATCH 099/502] more patchies --- PyTutorGAE/embedding-examples.js | 13 +++++++++++-- PyTutorGAE/generate_json_trace.py | 5 +++-- PyTutorGAE/js/opt-frontend.js | 6 ++---- PyTutorGAE/js/pytutor.js | 10 ++++++++-- example-code/aliasing.txt | 4 ++-- 5 files changed, 26 insertions(+), 12 deletions(-) diff --git a/PyTutorGAE/embedding-examples.js b/PyTutorGAE/embedding-examples.js index 5476cdd12..92d924683 100644 --- a/PyTutorGAE/embedding-examples.js +++ b/PyTutorGAE/embedding-examples.js @@ -1,10 +1,10 @@ // Traces generated by generate_json_trace.py -var aliasing = {"code": "# Example of aliasing\nx = [1, 2, 3]\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5]\nx.append(6)\ny.append(7)\ny = \"hello\"\n\ndef foo(lst): # breakpoint\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst): # breakpoint\n print myLst\n\nfoo(x)\nfoo(z)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3, 4]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5], "2": ["LIST", 1, 2, 3, 4, 5]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6], "2": ["LIST", 1, 2, 3, 4, 5]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null]}, "line": 15, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 11, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 15, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 1]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 16, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 1]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 13, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 11, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 15, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "bar", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 2]}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 16, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "foo", "stack_to_render": [{"func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 2]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 1], "foo": ["REF", 3], "bar": ["REF", 4], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 13, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 1], "z": ["REF", 2], "bar": ["REF", 4], "foo": ["REF", 3]}, "heap": {"1": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "2": ["LIST", 1, 2, 3, 4, 5, "hello"], "3": ["FUNCTION", "foo(lst)", null], "4": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}]}; +var aliasing = {"code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print myLst\n\nfoo(x)\nfoo(z)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 2], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 2], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 2], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3, 4]}, "line": 10, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3, 4, 5]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 14, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 17, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null]}, "line": 21, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 24, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 17, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 21, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 25, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 17, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 21, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "z": ["REF", 4], "bar": ["REF", 6], "foo": ["REF", 5]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 25, "event": "return"}]}; var aliasing5 = {"code": "x = None\nfor i in range(5, 0, -1):\n x = (i, x)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": null}, "heap": {}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 5, "x": null}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 5, "x": ["REF", 1]}, "heap": {"1": ["TUPLE", 5, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 4, "x": ["REF", 1]}, "heap": {"1": ["TUPLE", 5, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 4, "x": ["REF", 2]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 3, "x": ["REF", 2]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 3, "x": ["REF", 3]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 2, "x": ["REF", 3]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 2, "x": ["REF", 4]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 4]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 5]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]], "5": ["TUPLE", 1, ["REF", 4]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 5]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]], "5": ["TUPLE", 1, ["REF", 4]]}, "line": 2, "event": "return"}]}; -var hanoi = {"code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "__return__": null, "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "__return__": null, "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 16, "event": "return"}]}; +var hanoi = {"code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "__return__": null, "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "__return__": null, "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 16, "event": "return"}]}; var aliasingViz = null; @@ -15,5 +15,14 @@ $(document).ready(function() { aliasingViz = new ExecutionVisualizer('aliasingDiv', aliasing, {hideOutput: true, codeDivHeight: 150}); aliasing5Viz = new ExecutionVisualizer('aliasing5Div', aliasing5, {hideOutput: true}); hanoiViz = new ExecutionVisualizer('hanoiDiv', hanoi, {startingInstruction: 45, hideOutput: true}); + + // redraw connector arrows on window resize + $(window).resize(function() { + aliasingViz.redrawConnectors(); + aliasing5Viz.redrawConnectors(); + hanoiViz.redrawConnectors(); + }); + + }); diff --git a/PyTutorGAE/generate_json_trace.py b/PyTutorGAE/generate_json_trace.py index e973bc4a4..380463a56 100644 --- a/PyTutorGAE/generate_json_trace.py +++ b/PyTutorGAE/generate_json_trace.py @@ -6,8 +6,9 @@ def json_finalizer(input_code, output_trace): ret = dict(code=input_code, trace=output_trace) json_output = json.dumps(ret, indent=None) # use indent=None for most compact repr - print json_output + print(json_output) -pg_logger.exec_script_str(open(sys.argv[1]).read(), json_finalizer) +for f in sys.argv[1:]: + pg_logger.exec_script_str(open(f).read(), json_finalizer) diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index 551ed34f4..54beecbac 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -377,12 +377,10 @@ $(document).ready(function() { }); - // redraw everything on window resize so that connectors are in the - // right place - // TODO: can be SLOW on older browsers!!! + // redraw connector arrows on window resize $(window).resize(function() { if (appMode == 'visualize') { - myVisualizer.updateOutput(); + myVisualizer.redrawConnectors(); } }); diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 0b010d218..65d72fe9e 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1767,6 +1767,12 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } + +ExecutionVisualizer.prototype.redrawConnectors = function() { + this.jsPlumbInstance.repaintEverything(); +} + + // Utilities @@ -1790,9 +1796,9 @@ var hoverBreakpointColor = medLightBlue; function assert(cond) { - // TODO: add more precision in the error message if (!cond) { - alert("Error: ASSERTION FAILED!!!"); + alert("Assertion Failure (see console log for backtrace)"); + throw 'Assertion Failure'; } } diff --git a/example-code/aliasing.txt b/example-code/aliasing.txt index 1426e8bb6..eb326fc5d 100644 --- a/example-code/aliasing.txt +++ b/example-code/aliasing.txt @@ -4,11 +4,11 @@ z = y y = x x = z -x = [1, 2, 3] +x = [1, 2, 3] # a different [1, 2, 3] list! y = x x.append(4) y.append(5) -z = [1, 2, 3, 4, 5] +z = [1, 2, 3, 4, 5] # a different list! x.append(6) y.append(7) y = "hello" From 5b0df5efbf6af9878d687e329b19aad814c178bd Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 11:41:16 -0700 Subject: [PATCH 100/502] more changes to make it work on python 2 & 3 simultaneously --- PyTutorGAE/js/opt-frontend.js | 4 +++- PyTutorGAE/js/pytutor.js | 4 ++-- PyTutorGAE/pg_logger.py | 5 ++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index 54beecbac..1d0b56c55 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -29,6 +29,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // Pre-reqs: pytutor.js and jquery.ba-bbq.min.js should be imported BEFORE this file +var backend_script = 'exec'; // URL of backend script, which must eventually call pg_logger.py + var appMode = 'edit'; // 'edit' or 'visualize' var preseededCode = null; // if you passed in a 'code=' in the URL, then set this var @@ -137,7 +139,7 @@ $(document).ready(function() { $("#pyOutputPane").hide(); - $.get("exec", + $.get(backend_script, {user_script : pyInputCodeMirror.getValue()}, function(dataFromBackend) { var trace = dataFromBackend.trace; diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 65d72fe9e..41b08397b 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -32,7 +32,7 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // domRootID is the string ID of the root element where to render this instance // dat is data returned by the Python Tutor backend consisting of two fields: // code - string of executed code -// trace - a full execution trace +// trace - a full execution trace // params contains optional parameters, such as: // startingInstruction - the (one-indexed) execution point to display upon rendering // hideOutput - hide "Program output" and "Generate URL" displays @@ -356,7 +356,7 @@ ExecutionVisualizer.prototype.setKeyboardBindings = function() { leftTablePane.focus(); }); */ - + leftTablePane.keydown(function(k) { if (!myViz.keyStuckDown) { diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index e8b4a671f..8ec958967 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -36,7 +36,10 @@ import traceback import types -import cStringIO +if sys.version_info[0] == 3: + import io as cStringIO +else: + import cStringIO import pg_encoder From d8f7b0dbf4c829db5ab6349b0bd64b312fbd2bbe Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 12:05:22 -0700 Subject: [PATCH 101/502] integrated more of john's changes for python 3 compatibility --- PyTutorGAE/README | 4 +++ PyTutorGAE/pg_encoder.py | 65 +++++++++++++++++++++++++++++----------- PyTutorGAE/pg_logger.py | 3 -- 3 files changed, 52 insertions(+), 20 deletions(-) create mode 100644 PyTutorGAE/README diff --git a/PyTutorGAE/README b/PyTutorGAE/README new file mode 100644 index 000000000..b63b1d1fc --- /dev/null +++ b/PyTutorGAE/README @@ -0,0 +1,4 @@ +Thanks to John DeNero, this version of Online Python Tutor (v3) should work on both Python 2 and 3. + +TODO: write more detailed instructions for running on Google App Engine (Python 2.7) and CGI (Python 2.X or 3.X) + diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py index ab671eef8..cc86a87d6 100644 --- a/PyTutorGAE/pg_encoder.py +++ b/PyTutorGAE/pg_encoder.py @@ -22,6 +22,8 @@ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# Thanks to John DeNero for making the encoder work on both Python 2 and 3 + # Given an arbitrary piece of Python data, encode it in such a manner # that it can be later encoded into JSON. @@ -50,11 +52,17 @@ import re, types +import sys typeRE = re.compile("") classRE = re.compile("") import inspect +is_python3 = (sys.version_info[0] == 3) +if is_python3: + long = None # Avoid NameError when evaluating "long" + + def get_name(obj): """Return the name of an object.""" return obj.__name__ if hasattr(obj, '__name__') else get_name(type(obj)) @@ -141,23 +149,6 @@ def encode(self, dat): # don't display some built-in locals ... if k not in ('__module__', '__return__', '__locals__'): new_obj.append([self.encode(k), self.encode(v)]) - - elif typ in (types.InstanceType, types.ClassType, types.TypeType) or \ - classRE.match(str(typ)): - # ugh, classRE match is a bit of a hack :( - if typ == types.InstanceType or classRE.match(str(typ)): - new_obj.extend(['INSTANCE', dat.__class__.__name__]) - else: - superclass_names = [e.__name__ for e in dat.__bases__] - new_obj.extend(['CLASS', dat.__name__, superclass_names]) - - # traverse inside of its __dict__ to grab attributes - # (filter out useless-seeming ones): - user_attrs = sorted([e for e in dat.__dict__.keys() - if e not in ('__doc__', '__module__', '__return__')]) - - for attr in user_attrs: - new_obj.append([self.encode(attr), self.encode(dat.__dict__[attr])]) elif typ in (types.FunctionType, types.MethodType): # NB: In Python 3.0, getargspec is deprecated in favor of getfullargspec argspec = inspect.getargspec(dat) @@ -173,6 +164,8 @@ def encode(self, dat): func_name = u"\u03BB" # Unicode lambda :) pretty_name = func_name + '(' + ', '.join(printed_args) + ')' new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later + elif self.is_class(dat) or self.is_instance(dat): + self.encode_class_or_instance(dat, new_obj) else: typeStr = str(typ) m = typeRE.match(typeStr) @@ -181,3 +174,41 @@ def encode(self, dat): return ret + + def is_class(self, dat): + """Return whether dat is a class.""" + if is_python3: + return isinstance(dat, type) + else: + return type(dat) in (types.ClassType, types.TypeType) + + + def is_instance(self, dat): + """Return whether dat is an instance of a class.""" + if is_python3: + return isinstance(type(dat), type) and not isinstance(dat, type) + else: + # ugh, classRE match is a bit of a hack :( + return type(dat) == types.InstanceType or classRE.match(str(type(dat))) + + + def encode_class_or_instance(self, dat, new_obj): + """Encode dat as a class or instance.""" + if self.is_instance(dat): + new_obj.extend(['INSTANCE', get_name(dat.__class__)]) + else: + superclass_names = [e.__name__ for e in dat.__bases__ if e is not object] + new_obj.extend(['CLASS', get_name(dat), superclass_names]) + + # traverse inside of its __dict__ to grab attributes + # (filter out useless-seeming ones): + hidden = ('__doc__', '__module__', '__return__', '__dict__', + '__locals__', '__weakref__') + if hasattr(dat, '__dict__'): + user_attrs = sorted([e for e in dat.__dict__ if e not in hidden]) + else: + user_attrs = [] + + for attr in user_attrs: + new_obj.append([self.encode(attr), self.encode(dat.__dict__[attr])]) + diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 8ec958967..113ad852b 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -128,7 +128,6 @@ def __init__(self, finalizer_func): # to make an educated guess based on the contents of local # variables inherited from possible parent frame candidates. def get_parent_frame(self, frame): - # TODO(denero) Is this true in Python 3?!? for (func_obj, parent_frame) in self.closures.items(): # ok, there's a possible match, but let's compare the # local variables in parent_frame to those of frame @@ -280,7 +279,6 @@ def create_encoded_stack_entry(cur_frame): for pid in parent_frame_id_list: parent_frame = self.lookup_zombie_frame_by_id(pid) if k in parent_frame.f_locals: - # TODO(denero) Check Python3 # ignore __return__, which is never copied if k != '__return__': # these values SHOULD BE ALIASES @@ -298,7 +296,6 @@ def create_encoded_stack_entry(cur_frame): encoded_val = self.encoder.encode(v) # UGH, this is SUPER ugly but needed for nested function defs - # TODO(denero) Is this true in Python 3?!? if type(v) in (types.FunctionType, types.MethodType): try: enclosing_frame = self.closures[v] From a4b19af50bbf90fd283392004992f4ff400b8e1c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 14:00:28 -0700 Subject: [PATCH 102/502] minor UI tweaks --- PyTutorGAE/css/pytutor.css | 3 ++- PyTutorGAE/js/pytutor.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 286de2ab6..0913ff9e2 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -163,7 +163,8 @@ table.frameDataViz td.val { div#pyCodeOutputDiv { max-width: 550px; - max-height: 620px; + max-height: 450px; + /*max-height: 620px;*/ overflow: auto; /*margin-bottom: 4px;*/ } diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 41b08397b..a2ec1bcc6 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -125,7 +125,7 @@ ExecutionVisualizer.prototype.render = function() { \
\
\ - Click to focus and then use the left and right arrow keys to
\ + Click here to focus and then use the left and right arrow keys to
\ step through execution. Click on lines of code to set breakpoints.\
\
\ From 772dcb92313bfea6912fa9fc52fa907f06ad1dc9 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 14:57:21 -0700 Subject: [PATCH 103/502] sharpen up heap objects to prep for animations --- PyTutorGAE/css/pytutor.css | 7 +++++-- PyTutorGAE/js/pytutor.js | 14 +++++++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 0913ff9e2..a32d35844 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -562,8 +562,11 @@ div#heap { } td.toplevelHeapObject { - padding-left: 0px; - padding-right: 20px; + margin-left: 0px; + margin-right: 20px; + + padding: 8px; + border: 2px dotted white; /* to make room for transition animations */ } table.heapRow { diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index a2ec1bcc6..ba6008fb2 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1201,6 +1201,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { heapRows.enter().append('table') //.each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) .attr('class', 'heapRow') + .append('tr') .selectAll('td') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ function(objID) {return objID;} /* each object ID is unique for constancy */) @@ -1212,7 +1213,18 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // TODO: add a smoother transition in the future renderCompoundObject(objID, $(this), true); - }); + }) + /* + .transition() + .style('border-color', 'red') + .duration(100) + .transition() + .style('border-color', 'white') + .delay(100) + .duration(600) + */ + + // remove deleted rows heapRows.exit() From 032d06426113142a1b5fc6ff1adbeba808d557b3 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 15:53:47 -0700 Subject: [PATCH 104/502] simple heap transition animations --- PyTutorGAE/css/pytutor.css | 7 ++-- PyTutorGAE/js/pytutor.js | 67 +++++++++++++++----------------------- 2 files changed, 30 insertions(+), 44 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index a32d35844..ded26ab65 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -562,11 +562,10 @@ div#heap { } td.toplevelHeapObject { - margin-left: 0px; - margin-right: 20px; - + /* to make room for transition animations */ padding: 8px; - border: 2px dotted white; /* to make room for transition animations */ + border: 2px dotted white; + border-color: white; /* needed for d3 to do transitions */ } table.heapRow { diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index ba6008fb2..c6609376e 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1156,6 +1156,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { }); + // use d3 to render the heap by mapping curToplevelLayout into
\ -
\ +
\
Frames
\
\ +
\ +
\
\
\ @@ -168,7 +170,8 @@ ExecutionVisualizer.prototype.render = function() { // create a persistent globals frame - this.domRoot.find("#stack").append('
Global variables
'); @@ -1548,6 +1551,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { }); + // EXIT globalsD3.exit() .remove(); @@ -1568,6 +1572,73 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { */ + var stackD3 = d3.select('#stack') + .selectAll('div') + .data(curEntry.stack_to_render, function(d, i) { + // use a frankenstein combination of function name, zombie status, and INDEX as the key, + // to properly handle closures and recursive calls of the same function + return d.func_name + '_' + d.is_zombie + '_' + i; + }); + + // ENTER + stackD3.enter() + .append('div') + .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) + .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i);}) + + + // remember that the enter selection is added to the update + // selection so that we can process it later ... + + // UPDATE + stackD3.order() // VERY IMPORTANT to put in the order corresponding to data elements + .append('div') + .attr('class', 'stackFrameHeader') + .attr('id', function(d, i) { + return d.is_zombie ? myViz.generateID("zombie_stack_header" + i) : myViz.generateID("stack_header" + i); + }) + .html(function(frame, i) { + console.log('UPDATE', frame.func_name); + + var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + + var headerLabel = funcName + '()'; + + var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) + if (frameID) { + headerLabel = 'f' + frameID + ': ' + headerLabel; + } + + // optional (btw, this isn't a CSS id) + if (frame.parent_frame_id_list.length > 0) { + var parentFrameID = frame.parent_frame_id_list[0]; + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + + return headerLabel; + }) + .append('table') + .attr('class', 'stackFrameVarTable') + .selectAll('tr') + .data(function(frame, i) { + // each list element contains a reference to the entire frame object as well as the variable name + // TODO: look into whether we can use d3 parent nodes to avoid this hack ... http://bost.ocks.org/mike/nest/ + return frame.ordered_varnames.map(function(e) {return [e, frame];}); + }) + .enter() + .append('tr') + .append('td') + .html(function(d, i) { + var varname = d[0]; + var frame = d[1]; + return varname + '_' + frame.func_name; + }) + + // EXIT + stackD3.exit() + .remove() + + function renderStackFrame(frame, ind, is_zombie) { var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) From 809ed40e0bb736a4afe172750b3f577b13a18d7a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 13:04:05 -0700 Subject: [PATCH 075/502] works for some voodoo mysterious reason --- PyTutorGAE/js/pytutor.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 912eea0d4..8707667ab 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1585,18 +1585,17 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .append('div') .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i);}) - + .append('div') + .attr('class', 'stackFrameHeader') + .attr('id', function(d, i) { + return d.is_zombie ? myViz.generateID("zombie_stack_header" + i) : myViz.generateID("stack_header" + i); + }) // remember that the enter selection is added to the update // selection so that we can process it later ... // UPDATE stackD3.order() // VERY IMPORTANT to put in the order corresponding to data elements - .append('div') - .attr('class', 'stackFrameHeader') - .attr('id', function(d, i) { - return d.is_zombie ? myViz.generateID("zombie_stack_header" + i) : myViz.generateID("stack_header" + i); - }) .html(function(frame, i) { console.log('UPDATE', frame.func_name); @@ -1617,6 +1616,8 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { return headerLabel; }) + + var stackFrameTable = stackD3 .append('table') .attr('class', 'stackFrameVarTable') .selectAll('tr') @@ -1624,8 +1625,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // each list element contains a reference to the entire frame object as well as the variable name // TODO: look into whether we can use d3 parent nodes to avoid this hack ... http://bost.ocks.org/mike/nest/ return frame.ordered_varnames.map(function(e) {return [e, frame];}); - }) - .enter() + }, + function(d) {return d[0];} // use variable name as key + ); + + stackFrameTable.enter() .append('tr') .append('td') .html(function(d, i) { From 62c624a1714e3c62865433e30c1a69aa610f238f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 13:36:49 -0700 Subject: [PATCH 076/502] more frankenstein like stuff --- PyTutorGAE/js/pytutor.js | 50 ++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 8707667ab..f943c6acf 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1574,33 +1574,24 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var stackD3 = d3.select('#stack') .selectAll('div') - .data(curEntry.stack_to_render, function(d, i) { - // use a frankenstein combination of function name, zombie status, and INDEX as the key, - // to properly handle closures and recursive calls of the same function - return d.func_name + '_' + d.is_zombie + '_' + i; + .data(curEntry.stack_to_render, function(frame, i) { + // use a frankenstein combination of frame identifiers and also the INDEX (stack position) + // as the join key, to properly handle closures and recursive calls of the same function + return frame.func_name + '_' + String(frame.is_zombie) + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + i; }); - // ENTER + // ENTER - create a new stack frame div for each entry in curEntry.stack_to_render stackD3.enter() .append('div') .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i);}) - .append('div') - .attr('class', 'stackFrameHeader') - .attr('id', function(d, i) { - return d.is_zombie ? myViz.generateID("zombie_stack_header" + i) : myViz.generateID("stack_header" + i); - }) - - // remember that the enter selection is added to the update - // selection so that we can process it later ... - // UPDATE - stackD3.order() // VERY IMPORTANT to put in the order corresponding to data elements + // UPDATE: + stackD3.append('div') + .attr('class', 'stackFrameHeader') + .attr('id', function(frame, i) {return frame.is_zombie ? myViz.generateID("zombie_stack_header" + i) : myViz.generateID("stack_header" + i);}) .html(function(frame, i) { - console.log('UPDATE', frame.func_name); - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like - var headerLabel = funcName + '()'; var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) @@ -1615,11 +1606,15 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } return headerLabel; - }) + }); - var stackFrameTable = stackD3 - .append('table') - .attr('class', 'stackFrameVarTable') + + // remember that the enter selection is added to the update + // selection so that we can process it later ... + + /* + var stackFrameTable = stackD3.order() + .select('.stackFrameVarTable') .selectAll('tr') .data(function(frame, i) { // each list element contains a reference to the entire frame object as well as the variable name @@ -1629,16 +1624,25 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { function(d) {return d[0];} // use variable name as key ); + // ENTER - stack frame variables table stackFrameTable.enter() .append('tr') .append('td') + + // UPDATE - stack frame variables table + stackFrameTable .html(function(d, i) { var varname = d[0]; var frame = d[1]; return varname + '_' + frame.func_name; }) - // EXIT + // EXIT - stack frame variables table + stackFrameTable.exit() + .remove + */ + + // EXIT - stack frame stackD3.exit() .remove() From dde40fe38ac167a1c5d54e77949a3ab35c7e15d0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 13:57:49 -0700 Subject: [PATCH 077/502] the basics sorta work --- PyTutorGAE/js/pytutor.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index f943c6acf..dd1adf182 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1577,17 +1577,23 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .data(curEntry.stack_to_render, function(frame, i) { // use a frankenstein combination of frame identifiers and also the INDEX (stack position) // as the join key, to properly handle closures and recursive calls of the same function - return frame.func_name + '_' + String(frame.is_zombie) + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + i; + return frame.func_name + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + String(frame.is_zombie) + '_' + i; }); // ENTER - create a new stack frame div for each entry in curEntry.stack_to_render stackD3.enter() .append('div') + .each(function(frame, i) { + console.log('APPEND DIV', (frame.func_name + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + i)); + }) .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i);}) + /* // UPDATE: - stackD3.append('div') + var stackFrameTable = stackD3 + .order() // VERY IMPORTANT to put in the order corresponding to data elements + .append('div') .attr('class', 'stackFrameHeader') .attr('id', function(frame, i) {return frame.is_zombie ? myViz.generateID("zombie_stack_header" + i) : myViz.generateID("stack_header" + i);}) .html(function(frame, i) { @@ -1607,10 +1613,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { return headerLabel; }); - - - // remember that the enter selection is added to the update - // selection so that we can process it later ... + */ /* var stackFrameTable = stackD3.order() From 5d2e8521479b5c2f0a81d020483b304e36f12a61 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 14:13:59 -0700 Subject: [PATCH 078/502] something is up ?!? --- PyTutorGAE/js/pytutor.js | 57 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index dd1adf182..bb49e8a57 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1581,13 +1581,64 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { }); // ENTER - create a new stack frame div for each entry in curEntry.stack_to_render - stackD3.enter() - .append('div') + var stackEnter = stackD3.enter(); + + var stackFrame = stackEnter.append('div') .each(function(frame, i) { console.log('APPEND DIV', (frame.func_name + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + i)); }) .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) - .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i);}) + .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i);}); + + var stackVarsTable = stackFrame + .selectAll('li') + .data(function(frame, i) { + // each list element contains a reference to the entire frame object as well as the variable name + // TODO: look into whether we can use d3 parent nodes to avoid this hack ... http://bost.ocks.org/mike/nest/ + return frame.ordered_varnames.map(function(e) {return [e, frame];}); + }, + function(d) {return d[0];} // use variable name as key + ); + + stackVarsTable + .enter() + .append('li'); + + stackVarsTable + .html(function(d, i) { + var varname = d[0]; + var frame = d[1]; + return varname + '_' + frame.func_name; + }); + + stackVarsTable.exit().remove(); + + + /* + stackFrame.enter() + .append('div') + .attr('class', 'stackFrameHeader') + .attr('id', function(frame, i) {return frame.is_zombie ? myViz.generateID("zombie_stack_header" + i) : myViz.generateID("stack_header" + i);}) + .html(function(frame, i) { + var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + var headerLabel = funcName + '()'; + + var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) + if (frameID) { + headerLabel = 'f' + frameID + ': ' + headerLabel; + } + + // optional (btw, this isn't a CSS id) + if (frame.parent_frame_id_list.length > 0) { + var parentFrameID = frame.parent_frame_id_list[0]; + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + + return headerLabel; + }); + */ + + /* // UPDATE: From 5d097dacc92bc0f4baa836d198dff49a1470028b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 15:23:09 -0700 Subject: [PATCH 079/502] works slightly better --- PyTutorGAE/js/pytutor.js | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index bb49e8a57..581edf665 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1572,27 +1572,26 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { */ - var stackD3 = d3.select('#stack') - .selectAll('div') + var stackDiv = myViz.domRootD3.select('#stack'); + + var stackFrameDiv = stackDiv.selectAll('div') .data(curEntry.stack_to_render, function(frame, i) { // use a frankenstein combination of frame identifiers and also the INDEX (stack position) // as the join key, to properly handle closures and recursive calls of the same function return frame.func_name + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + String(frame.is_zombie) + '_' + i; }); - - // ENTER - create a new stack frame div for each entry in curEntry.stack_to_render - var stackEnter = stackD3.enter(); - var stackFrame = stackEnter.append('div') - .each(function(frame, i) { - console.log('APPEND DIV', (frame.func_name + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + i)); - }) + stackFrameDiv.enter().append('div') .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i);}); - var stackVarsTable = stackFrame + + var stackVarTable = stackFrameDiv + .each(function(frame, i) { + console.log('ENTER/UPDATE DIV', (frame.func_name + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + i)); + }) .selectAll('li') - .data(function(frame, i) { + .data(function(frame) { // each list element contains a reference to the entire frame object as well as the variable name // TODO: look into whether we can use d3 parent nodes to avoid this hack ... http://bost.ocks.org/mike/nest/ return frame.ordered_varnames.map(function(e) {return [e, frame];}); @@ -1600,19 +1599,18 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { function(d) {return d[0];} // use variable name as key ); - stackVarsTable + stackVarTable .enter() - .append('li'); - - stackVarsTable + .append('li') .html(function(d, i) { var varname = d[0]; var frame = d[1]; return varname + '_' + frame.func_name; }); - stackVarsTable.exit().remove(); + stackVarTable.exit().remove(); + stackFrameDiv.exit().remove(); /* stackFrame.enter() @@ -1696,10 +1694,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .remove */ - // EXIT - stack frame - stackD3.exit() - .remove() - function renderStackFrame(frame, ind, is_zombie) { var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like From 5b09f1e74e9a394d3996a8b48418da9bed2d9303 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 15:40:46 -0700 Subject: [PATCH 080/502] OMFG --- PyTutorGAE/js/pytutor.js | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 581edf665..b6b763f2b 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1586,7 +1586,33 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i);}); - var stackVarTable = stackFrameDiv + stackFrameDiv + .append('div') + .attr('class', 'stackFrameHeader') + .html(function(frame, i) { + var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + var headerLabel = funcName + '()'; + + var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) + if (frameID) { + headerLabel = 'f' + frameID + ': ' + headerLabel; + } + + // optional (btw, this isn't a CSS id) + if (frame.parent_frame_id_list.length > 0) { + var parentFrameID = frame.parent_frame_id_list[0]; + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + + return headerLabel; + }); + + + stackFrameDiv + .append('div') + .attr('class', 'derrrr') + + var stackVarTable = stackFrameDiv.select('div.derrrr') .each(function(frame, i) { console.log('ENTER/UPDATE DIV', (frame.func_name + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + i)); }) @@ -1602,6 +1628,8 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable .enter() .append('li') + + stackVarTable .html(function(d, i) { var varname = d[0]; var frame = d[1]; @@ -1610,6 +1638,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable.exit().remove(); + stackFrameDiv.exit().remove(); /* From 3352907d26159b480d2c0af89eddd3347dea3861 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 16:39:14 -0700 Subject: [PATCH 081/502] added a unique_hash field to the trace o.O --- PyTutorGAE/js/pytutor.js | 28 ++++++++++++++++++++-------- PyTutorGAE/pg_logger.py | 18 ++++++++++++++++++ 2 files changed, 38 insertions(+), 8 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index b6b763f2b..6b0a5df0d 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1102,7 +1102,6 @@ ExecutionVisualizer.prototype.precomputeCurTraceLayouts = function() { } - // The "3.0" version of renderDataStructures renders variables in // a stack, values in a separate heap, and draws line connectors // to represent both stack->heap object references and, more importantly, @@ -1575,18 +1574,27 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var stackDiv = myViz.domRootD3.select('#stack'); var stackFrameDiv = stackDiv.selectAll('div') - .data(curEntry.stack_to_render, function(frame, i) { - // use a frankenstein combination of frame identifiers and also the INDEX (stack position) - // as the join key, to properly handle closures and recursive calls of the same function - return frame.func_name + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + String(frame.is_zombie) + '_' + i; + .data(curEntry.stack_to_render, function(frame) { + return frame.unique_hash; // VERY IMPORTANT for properly handling closures and nested functions }); stackFrameDiv.enter().append('div') .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) - .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i);}); + //.attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack_" + htmlspecialchars(d.unique_hash)) + // : myViz.generateID("stack_" + htmlspecialchars(d.unique_hash)); + //}) + .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) + : myViz.generateID("stack" + i); + }) + + /* + // I suspect I need to use .order() somewhere, but I can't seem to get it in the right place :( stackFrameDiv + .each(function(frame, i) { + console.log('UPDATE stackFrameDiv', frame.unique_hash); + }) .append('div') .attr('class', 'stackFrameHeader') .html(function(frame, i) { @@ -1605,9 +1613,13 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } return headerLabel; - }); + }) + */ + + stackFrameDiv.exit().remove(); + /* stackFrameDiv .append('div') .attr('class', 'derrrr') @@ -1637,9 +1649,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { }); stackVarTable.exit().remove(); + */ - stackFrameDiv.exit().remove(); /* stackFrame.enter() diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 84988b929..88ce6e2e0 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -436,6 +436,24 @@ def create_encoded_stack_entry(cur_frame): stack_to_render.insert(j, e) + # create a unique hash for this stack entry, so that the + # frontend can uniquely identify it when doing incremental + # rendering. the strategy is to use a frankenstein-like mix of the + # relevant fields to properly disambiguate closures and recursive + # calls to the same function (stack_index is key for + # disambiguating recursion!) + for (stack_index, e) in enumerate(stack_to_render): + hash_str = e['func_name'] + if e['frame_id']: + hash_str += '_f' + str(e['frame_id']) + if e['parent_frame_id_list']: + hash_str += '_p' + '_'.join([str(i) for i in e['parent_frame_id_list']]) + if e['is_zombie']: + hash_str += '_z' + hash_str += '_i' + str(stack_index) + + e['unique_hash'] = hash_str + trace_entry = dict(line=lineno, event=event_type, From 11ddd4f668cc9139becaaff103d8993544210a13 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 17:07:35 -0700 Subject: [PATCH 082/502] something simple that sorta works, maybe patch up lata? --- PyTutorGAE/js/pytutor.js | 124 ++++++--------------------------------- 1 file changed, 19 insertions(+), 105 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 6b0a5df0d..de2179807 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1585,50 +1585,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { //}) .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i); - }) - - - - /* - // I suspect I need to use .order() somewhere, but I can't seem to get it in the right place :( - stackFrameDiv - .each(function(frame, i) { - console.log('UPDATE stackFrameDiv', frame.unique_hash); - }) - .append('div') - .attr('class', 'stackFrameHeader') - .html(function(frame, i) { - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like - var headerLabel = funcName + '()'; - - var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) - if (frameID) { - headerLabel = 'f' + frameID + ': ' + headerLabel; - } - - // optional (btw, this isn't a CSS id) - if (frame.parent_frame_id_list.length > 0) { - var parentFrameID = frame.parent_frame_id_list[0]; - headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; - } - - return headerLabel; - }) - */ - - stackFrameDiv.exit().remove(); - - - /* - stackFrameDiv - .append('div') - .attr('class', 'derrrr') - - var stackVarTable = stackFrameDiv.select('div.derrrr') - .each(function(frame, i) { - console.log('ENTER/UPDATE DIV', (frame.func_name + '_' + String(frame.frame_id) + '_' + String(frame.parent_frame_id_list) + '_' + i)); - }) - .selectAll('li') + }); + + var stackVarTable = stackFrameDiv.selectAll('li') .data(function(frame) { // each list element contains a reference to the entire frame object as well as the variable name // TODO: look into whether we can use d3 parent nodes to avoid this hack ... http://bost.ocks.org/mike/nest/ @@ -1645,20 +1604,18 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .html(function(d, i) { var varname = d[0]; var frame = d[1]; - return varname + '_' + frame.func_name; + return varname; }); stackVarTable.exit().remove(); - */ - /* - stackFrame.enter() + stackFrameDiv.select('div') + .data(function .append('div') .attr('class', 'stackFrameHeader') - .attr('id', function(frame, i) {return frame.is_zombie ? myViz.generateID("zombie_stack_header" + i) : myViz.generateID("stack_header" + i);}) - .html(function(frame, i) { + .text(function(frame, i) { var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like var headerLabel = funcName + '()'; @@ -1674,66 +1631,21 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } return headerLabel; - }); - */ - - - - /* - // UPDATE: - var stackFrameTable = stackD3 - .order() // VERY IMPORTANT to put in the order corresponding to data elements - .append('div') - .attr('class', 'stackFrameHeader') - .attr('id', function(frame, i) {return frame.is_zombie ? myViz.generateID("zombie_stack_header" + i) : myViz.generateID("stack_header" + i);}) - .html(function(frame, i) { - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like - var headerLabel = funcName + '()'; - - var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) - if (frameID) { - headerLabel = 'f' + frameID + ': ' + headerLabel; - } - - // optional (btw, this isn't a CSS id) - if (frame.parent_frame_id_list.length > 0) { - var parentFrameID = frame.parent_frame_id_list[0]; - headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; - } - - return headerLabel; - }); + }) + .each(function(frame, i) { + console.log('ENTER stackFrameDiv', frame.unique_hash, i); + }) */ - /* - var stackFrameTable = stackD3.order() - .select('.stackFrameVarTable') - .selectAll('tr') - .data(function(frame, i) { - // each list element contains a reference to the entire frame object as well as the variable name - // TODO: look into whether we can use d3 parent nodes to avoid this hack ... http://bost.ocks.org/mike/nest/ - return frame.ordered_varnames.map(function(e) {return [e, frame];}); - }, - function(d) {return d[0];} // use variable name as key - ); - - // ENTER - stack frame variables table - stackFrameTable.enter() - .append('tr') - .append('td') - // UPDATE - stack frame variables table - stackFrameTable - .html(function(d, i) { - var varname = d[0]; - var frame = d[1]; - return varname + '_' + frame.func_name; + // I suspect I need to use .order() somewhere, but I can't seem to get it in the right place :( + stackFrameDiv + .each(function(frame, i) { + console.log('UPDATE stackFrameDiv', frame.unique_hash, i); }) - // EXIT - stack frame variables table - stackFrameTable.exit() - .remove - */ + stackFrameDiv.exit().remove(); + function renderStackFrame(frame, ind, is_zombie) { @@ -1872,6 +1784,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // highlight the top-most non-zombie stack frame or, if not available, globals + /* var frame_already_highlighted = false; $.each(curEntry.stack_to_render, function(i, e) { if (e.is_highlighted) { @@ -1883,6 +1796,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { if (!frame_already_highlighted) { highlight_frame(myViz.generateID('globals')); } + */ } From ef1d0849605f5e7c505a03797b4b5d6ea1495222 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 17:25:14 -0700 Subject: [PATCH 083/502] AHHH --- PyTutorGAE/js/pytutor.js | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index de2179807..abf19b437 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1580,14 +1580,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackFrameDiv.enter().append('div') .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) - //.attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack_" + htmlspecialchars(d.unique_hash)) - // : myViz.generateID("stack_" + htmlspecialchars(d.unique_hash)); - //}) .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i); }); - var stackVarTable = stackFrameDiv.selectAll('li') + var stackVarTable = stackFrameDiv.selectAll('table tr' /* MULTI-LEVEL SELECTIONS!!! GAHHHH!!! */) .data(function(frame) { // each list element contains a reference to the entire frame object as well as the variable name // TODO: look into whether we can use d3 parent nodes to avoid this hack ... http://bost.ocks.org/mike/nest/ @@ -1598,9 +1595,17 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable .enter() - .append('li') + .append('tr') - stackVarTable + + var stackVarTableCells = stackVarTable + .selectAll('td') + .data(function(d, i) {return [d, d] /* map identical data down both columns */;}) + + stackVarTableCells.enter() + .append('td') + + stackVarTableCells .html(function(d, i) { var varname = d[0]; var frame = d[1]; From b61d7f209686b000176cabd4663059eaf85b1dea Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 17:41:42 -0700 Subject: [PATCH 084/502] sorta works now --- PyTutorGAE/js/pytutor.js | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index abf19b437..1508d77d9 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1596,7 +1596,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable .enter() .append('tr') - var stackVarTableCells = stackVarTable .selectAll('td') @@ -1609,12 +1608,29 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .html(function(d, i) { var varname = d[0]; var frame = d[1]; - return varname; + if (i == 0) { + return varname; + } + else { + return frame.encoded_locals[varname]; + } }); + stackVarTableCells.exit().remove(); + stackVarTable.exit().remove(); + // I suspect I need to use .order() somewhere, but I can't seem to get it in the right place :( + stackFrameDiv + .each(function(frame, i) { + console.log('UPDATE stackFrameDiv', frame.unique_hash, i); + }) + + stackFrameDiv.exit().remove(); + + + /* stackFrameDiv.select('div') .data(function @@ -1643,15 +1659,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { */ - // I suspect I need to use .order() somewhere, but I can't seem to get it in the right place :( - stackFrameDiv - .each(function(frame, i) { - console.log('UPDATE stackFrameDiv', frame.unique_hash, i); - }) - - stackFrameDiv.exit().remove(); - - function renderStackFrame(frame, ind, is_zombie) { var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like From 58e6ede234a250598d28ff7827a3242c55cd0969 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 18:28:57 -0700 Subject: [PATCH 085/502] krazy --- PyTutorGAE/css/pytutor.css | 1 + PyTutorGAE/js/pytutor.js | 139 +++++++++++++++++++++++++------------ 2 files changed, 95 insertions(+), 45 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 8ab3d6ff5..286de2ab6 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -301,6 +301,7 @@ button.smallBtn { .retval, .returnWarning { font-size: 9pt; + color: #9d1e18; } .returnWarning { diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 1508d77d9..385ffb840 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1534,7 +1534,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // make sure varname doesn't contain any weird // characters that are illegal for CSS ID's ... var varDivID = myViz.generateID('global__' + varnameToCssID(varname)); - $(this).append('
 
'); + $(this).append(' '); assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); @@ -1564,12 +1564,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } - /* - $.each(curEntry.stack_to_render, function(i, e) { - renderStackFrame(e, i, e.is_zombie); - }); - */ - var stackDiv = myViz.domRootD3.select('#stack'); @@ -1578,17 +1572,47 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { return frame.unique_hash; // VERY IMPORTANT for properly handling closures and nested functions }); - stackFrameDiv.enter().append('div') + stackFrameDiv.enter() + .append('div') .attr('class', function(d, i) {return d.is_zombie ? 'zombieStackFrame' : 'stackFrame';}) .attr('id', function(d, i) {return d.is_zombie ? myViz.generateID("zombie_stack" + i) : myViz.generateID("stack" + i); + }) + //.append('div') + //.attr('class', 'stackFrameHeader') + // TODO: perhaps this table keeps on getting cleared out since it's done on enter()?!? + .append('table') + .attr('class', 'stackFrameVarTable') + + + /* + stackFrameDiv.select('div.stackFrameHeader') + .html(function(frame, i) { + var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + var headerLabel = funcName + '()'; + + var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) + if (frameID) { + headerLabel = 'f' + frameID + ': ' + headerLabel; + } + + // optional (btw, this isn't a CSS id) + if (frame.parent_frame_id_list.length > 0) { + var parentFrameID = frame.parent_frame_id_list[0]; + headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + } + + return headerLabel; }); + */ - var stackVarTable = stackFrameDiv.selectAll('table tr' /* MULTI-LEVEL SELECTIONS!!! GAHHHH!!! */) + var stackVarTable = stackFrameDiv + .order() // VERY IMPORTANT to put in the order corresponding to data elements + .select('table').selectAll('tr') .data(function(frame) { // each list element contains a reference to the entire frame object as well as the variable name // TODO: look into whether we can use d3 parent nodes to avoid this hack ... http://bost.ocks.org/mike/nest/ - return frame.ordered_varnames.map(function(e) {return [e, frame];}); + return frame.ordered_varnames.map(function(varname) {return [varname, frame];}); }, function(d) {return d[0];} // use variable name as key ); @@ -1597,6 +1621,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .enter() .append('tr') + var stackVarTableCells = stackVarTable .selectAll('td') .data(function(d, i) {return [d, d] /* map identical data down both columns */;}) @@ -1605,58 +1630,77 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .append('td') stackVarTableCells + .order() // VERY IMPORTANT to put in the order corresponding to data elements + .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}) .html(function(d, i) { var varname = d[0]; var frame = d[1]; if (i == 0) { - return varname; + if (varname == '__return__' && !frame.is_zombie) { + return 'Return value' + } + else { + return varname; + } } else { - return frame.encoded_locals[varname]; + return ''; // will update in .each() } - }); + }) + .each(function(d, i) { + var varname = d[0]; + var frame = d[1]; - stackVarTableCells.exit().remove(); + if (i == 1) { + var val = frame.encoded_locals[varname]; - stackVarTable.exit().remove(); + // include type in repr to prevent conflating integer 5 with string "5" + var valStringRepr = String(typeof val) + ':' + String(val); + // SUPER HACK - retrieve previous value as a hidden attribute + var prevValStringRepr = $(this).attr('data-curvalue'); - // I suspect I need to use .order() somewhere, but I can't seem to get it in the right place :( - stackFrameDiv - .each(function(frame, i) { - console.log('UPDATE stackFrameDiv', frame.unique_hash, i); - }) + // IMPORTANT! only clear the div and render a new element if the + // value has changed + if (valStringRepr != prevValStringRepr) { + // TODO: render a transition - stackFrameDiv.exit().remove(); + $(this).empty(); // crude but effective for now + if (isPrimitiveType(val)) { + renderPrimitiveObject(val, $(this)); + } + else { + // add a stub so that we can connect it with a connector later. + // IE needs this div to be NON-EMPTY in order to properly + // render jsPlumb endpoints, so that's why we add an " "! + // make sure varname and frame.unique_hash don't contain any weird + // characters that are illegal for CSS ID's ... + var varDivID = myViz.generateID(varnameToCssID(frame.unique_hash + '__' + varname)); - /* - stackFrameDiv.select('div') - .data(function - .append('div') - .attr('class', 'stackFrameHeader') - .text(function(frame, i) { - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like - var headerLabel = funcName + '()'; + // creepy -
doesn't work here, but does ... ugh + $(this).append(' '); - var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) - if (frameID) { - headerLabel = 'f' + frameID + ': ' + headerLabel; - } + assert(!connectionEndpointIDs.has(varDivID)); + var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); + connectionEndpointIDs.set(varDivID, heapObjID); + } - // optional (btw, this isn't a CSS id) - if (frame.parent_frame_id_list.length > 0) { - var parentFrameID = frame.parent_frame_id_list[0]; - headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; + console.log('CHANGED', varname, prevValStringRepr, valStringRepr); + } + + // SUPER HACK - set current value as a hidden string attribute + $(this).attr('data-curvalue', valStringRepr); } + }); - return headerLabel; - }) - .each(function(frame, i) { - console.log('ENTER stackFrameDiv', frame.unique_hash, i); - }) - */ + + stackVarTableCells.exit().remove(); + + stackVarTable.exit().remove(); + + stackFrameDiv.exit().remove(); @@ -1744,6 +1788,13 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } } + /* + $.each(curEntry.stack_to_render, function(i, e) { + renderStackFrame(e, i, e.is_zombie); + }); + */ + + // finally add all the connectors! connectionEndpointIDs.forEach(function(varID, valueID) { @@ -1796,7 +1847,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // highlight the top-most non-zombie stack frame or, if not available, globals - /* var frame_already_highlighted = false; $.each(curEntry.stack_to_render, function(i, e) { if (e.is_highlighted) { @@ -1808,7 +1858,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { if (!frame_already_highlighted) { highlight_frame(myViz.generateID('globals')); } - */ } From 890f23246ed790699964b4940194219e9c5ab9fe Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 9 Aug 2012 21:01:48 -0700 Subject: [PATCH 086/502] cleaned up even more (?!?) --- PyTutorGAE/js/pytutor.js | 159 ++++++++++----------------------------- 1 file changed, 39 insertions(+), 120 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 385ffb840..6f602fa0c 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1541,7 +1541,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { connectionEndpointIDs.set(varDivID, heapObjID); } - console.log('CHANGED', varname, prevValStringRepr, valStringRepr); + //console.log('CHANGED', varname, prevValStringRepr, valStringRepr); } // SUPER HACK - set current value as a hidden string attribute @@ -1583,58 +1583,44 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // TODO: perhaps this table keeps on getting cleared out since it's done on enter()?!? .append('table') .attr('class', 'stackFrameVarTable') + .each(function(d, i) {console.log('stackFrameDiv.enter()', d.unique_hash);}) - - /* - stackFrameDiv.select('div.stackFrameHeader') - .html(function(frame, i) { - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like - var headerLabel = funcName + '()'; - - var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) - if (frameID) { - headerLabel = 'f' + frameID + ': ' + headerLabel; - } - // optional (btw, this isn't a CSS id) - if (frame.parent_frame_id_list.length > 0) { - var parentFrameID = frame.parent_frame_id_list[0]; - headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; - } - - return headerLabel; - }); - */ - var stackVarTable = stackFrameDiv .order() // VERY IMPORTANT to put in the order corresponding to data elements + .each(function(d, i) {console.log('stackFrameDiv.order() POST', d.unique_hash);}) .select('table').selectAll('tr') .data(function(frame) { - // each list element contains a reference to the entire frame object as well as the variable name - // TODO: look into whether we can use d3 parent nodes to avoid this hack ... http://bost.ocks.org/mike/nest/ - return frame.ordered_varnames.map(function(varname) {return [varname, frame];}); + // each list element contains a reference to the entire frame + // object as well as the variable name + // TODO: look into whether we can use d3 parent nodes to avoid + // this hack ... http://bost.ocks.org/mike/nest/ + return frame.ordered_varnames.map(function(varname) {return {varname:varname, frame:frame};}); }, - function(d) {return d[0];} // use variable name as key + function(d) {return d.varname;} // use variable name as key ); stackVarTable .enter() .append('tr') + .each(function(d, i) {console.log('stackVarTable.enter()', d);}) var stackVarTableCells = stackVarTable .selectAll('td') + .each(function(d, i) {console.log('stackVarTable UPDATE', d, i);}) .data(function(d, i) {return [d, d] /* map identical data down both columns */;}) stackVarTableCells.enter() .append('td') + .each(function(d, i) {console.log('stackVarTableCells.enter()', d, i);}) stackVarTableCells .order() // VERY IMPORTANT to put in the order corresponding to data elements .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}) .html(function(d, i) { - var varname = d[0]; - var frame = d[1]; + var varname = d.varname; + var frame = d.frame; if (i == 0) { if (varname == '__return__' && !frame.is_zombie) { return 'Return value' @@ -1648,8 +1634,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } }) .each(function(d, i) { - var varname = d[0]; - var frame = d[1]; + var varname = d.varname; + var frame = d.frame; + + console.log('stackVarTableCells.each()', varname, i); if (i == 1) { var val = frame.encoded_locals[varname]; @@ -1687,7 +1675,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { connectionEndpointIDs.set(varDivID, heapObjID); } - console.log('CHANGED', varname, prevValStringRepr, valStringRepr); + //console.log('CHANGED', varname, prevValStringRepr, valStringRepr); } // SUPER HACK - set current value as a hidden string attribute @@ -1702,98 +1690,29 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackFrameDiv.exit().remove(); + // TODO: sometimes mistakenly renders TWICE on, say, closures :( + stackFrameDiv + .insert('div', ':first-child') // prepend header after the dust settles + .attr('class', 'stackFrameHeader') + .html(function(frame, i) { + var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + var headerLabel = funcName + '()'; + var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) + if (frameID) { + headerLabel = 'f' + frameID + ': ' + headerLabel; + } - function renderStackFrame(frame, ind, is_zombie) { - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like - var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) - - // optional (btw, this isn't a CSS id) - var parentFrameID = null; - if (frame.parent_frame_id_list.length > 0) { - parentFrameID = frame.parent_frame_id_list[0]; - } - - var localVars = frame.encoded_locals - - // the stackFrame div's id is simply its index ("stack") - - var divClass, divID, headerDivID; - if (is_zombie) { - divClass = 'zombieStackFrame'; - divID = myViz.generateID("zombie_stack" + ind); - headerDivID = myViz.generateID("zombie_stack_header" + ind); - } - else { - divClass = 'stackFrame'; - divID = myViz.generateID("stack" + ind); - headerDivID = myViz.generateID("stack_header" + ind); - } - - myViz.domRoot.find("#stack").append('
'); - - var headerLabel = funcName + '()'; - if (frameID) { - headerLabel = 'f' + frameID + ': ' + headerLabel; - } - if (parentFrameID) { - headerLabel = headerLabel + ' [parent=f' + parentFrameID + ']'; - } - myViz.domRoot.find("#stack #" + divID).append('
' + headerLabel + '
'); - - if (frame.ordered_varnames.length > 0) { - var tableID = divID + '_table'; - myViz.domRoot.find("#stack #" + divID).append('
'); - - var tbl = myViz.domRoot.find("#" + tableID); - - $.each(frame.ordered_varnames, function(xxx, varname) { - var val = localVars[varname]; - - // special treatment for displaying return value and indicating - // that the function is about to return to its caller - // - // DON'T do this for zombie frames - if (varname == '__return__' && !is_zombie) { - assert(curEntry.event == 'return'); // sanity check - - tbl.append('
About to return
Return value:
' + varname + '
// and ","
elements @@ -1166,21 +1167,42 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { }); + // insert new heap rows + heapRows.enter().append('table') + //.each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) + .attr('class', 'heapRow') + .append('tr') + + // delete a heap row + heapRows.exit() + //.each(function(objLst, i) {console.log('DEL ROW:', objLst, i);}) + .remove(); + + // update an existing heap row var heapColumns = heapRows - //.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) + .each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) .selectAll('td') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ function(objID) {return objID;} /* each object ID is unique for constancy */); - // ENTER + // insert a new toplevelHeapObject heapColumns.enter().append('td') .attr('class', 'toplevelHeapObject') - .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}); + .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) + .style('opacity', '0') + .style('border-color', 'red') // remember that the enter selection is added to the update // selection so that we can process it later ... + .transition() + .style('opacity', '1') /* fade in */ + .duration(500) + .transition() + .style('border-color', 'white') + .delay(500) + .duration(300); - // UPDATE + // update a toplevelHeapObject heapColumns .order() // VERY IMPORTANT to put in the order corresponding to data elements .each(function(objID, i) { @@ -1192,46 +1214,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { renderCompoundObject(objID, $(this), true); }); - // EXIT + // delete a toplevelHeapObject heapColumns.exit() .remove(); - // insert new heap rows - heapRows.enter().append('table') - //.each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) - .attr('class', 'heapRow') - .append('tr') - .selectAll('td') - .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ - function(objID) {return objID;} /* each object ID is unique for constancy */) - .enter().append('td') - .attr('class', 'toplevelHeapObject') - .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) - .each(function(objID, i) { - //console.log('NEW ELT', objID); - - // TODO: add a smoother transition in the future - renderCompoundObject(objID, $(this), true); - }) - /* - .transition() - .style('border-color', 'red') - .duration(100) - .transition() - .style('border-color', 'white') - .delay(100) - .duration(600) - */ - - - - // remove deleted rows - heapRows.exit() - //.each(function(objLst, i) {console.log('DEL ROW:', objLst, i);}) - .remove(); - - function renderNestedObject(obj, d3DomElement) { if (isPrimitiveType(obj)) { From b412ebeff0a57f39e7fe3f19fb0d326d454a8483 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 17:39:05 -0700 Subject: [PATCH 105/502] started some experimental transition code --- PyTutorGAE/css/pytutor.css | 2 +- PyTutorGAE/js/pytutor.js | 88 ++++++++++++++++++++++++-------------- 2 files changed, 56 insertions(+), 34 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index ded26ab65..992d8cacf 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -563,7 +563,7 @@ div#heap { td.toplevelHeapObject { /* to make room for transition animations */ - padding: 8px; + padding: 5px; border: 2px dotted white; border-color: white; /* needed for d3 to do transitions */ } diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index c6609376e..ef11a141a 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -90,6 +90,8 @@ function ExecutionVisualizer(domRootID, dat, params) { this.sortedBreakpointsList = null; // sorted and synced with breakpointLines this.hoverBreakpoints = null; // set of breakpoints because we're HOVERING over a given line + this.enableTransitions = false; // EXPERIMENTAL - enable transition effects + this.hasRendered = false; @@ -347,16 +349,6 @@ ExecutionVisualizer.prototype.setKeyboardBindings = function() { leftTablePane.attr('tabindex', '0'); leftTablePane.css('outline', 'none'); // don't display a tacky border when focused - - // focus on mouse entering td#left_pane (so that the user doesn't need - // to click to focus) - // This is actually annoying because the display JERKS to focus on elements ... - /* - leftTablePane.mouseenter(function() { - leftTablePane.focus(); - }); - */ - leftTablePane.keydown(function(k) { if (!myViz.keyStuckDown) { @@ -1171,39 +1163,58 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { heapRows.enter().append('table') //.each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) .attr('class', 'heapRow') - .append('tr') + .append('tr'); // delete a heap row - heapRows.exit() - //.each(function(objLst, i) {console.log('DEL ROW:', objLst, i);}) - .remove(); + var hrExit = heapRows.exit(); + + if (myViz.enableTransitions) { + hrExit + .style('opacity', '1') + .transition() + .style('opacity', '0') + .duration(500) + .each('end', function() { + hrExit.remove(); + myViz.redrawConnectors(); + }); + } + else { + hrExit.remove(); + } // update an existing heap row - var heapColumns = heapRows - .each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) + var toplevelHeapObjects = heapRows + //.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) .selectAll('td') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ function(objID) {return objID;} /* each object ID is unique for constancy */); // insert a new toplevelHeapObject - heapColumns.enter().append('td') + var tlhEnter = toplevelHeapObjects.enter().append('td') .attr('class', 'toplevelHeapObject') - .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}) - .style('opacity', '0') - .style('border-color', 'red') - // remember that the enter selection is added to the update - // selection so that we can process it later ... - .transition() - .style('opacity', '1') /* fade in */ - .duration(500) - .transition() - .style('border-color', 'white') - .delay(500) - .duration(300); + .attr('id', function(d, i) {return 'toplevel_heap_object_' + d;}); + + if (myViz.enableTransitions) { + tlhEnter + .style('opacity', '0') + .style('border-color', 'red') + .transition() + .style('opacity', '1') /* fade in */ + .duration(700) + .each('end', function() { + tlhEnter.transition() + .style('border-color', 'white') /* kill border */ + .duration(300) + }); + } + + // remember that the enter selection is added to the update + // selection so that we can process it later ... // update a toplevelHeapObject - heapColumns + toplevelHeapObjects .order() // VERY IMPORTANT to put in the order corresponding to data elements .each(function(objID, i) { //console.log('NEW/UPDATE ELT', objID); @@ -1215,9 +1226,20 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { }); // delete a toplevelHeapObject - heapColumns.exit() - .remove(); - + var tlhExit = toplevelHeapObjects.exit(); + + if (myViz.enableTransitions) { + tlhExit.transition() + .style('opacity', '0') /* fade out */ + .duration(500) + .each('end', function() { + tlhExit.remove(); + myViz.redrawConnectors(); + }); + } + else { + tlhExit.remove(); + } function renderNestedObject(obj, d3DomElement) { From 61b4f03a6af549f6d80d999894546bcff163365d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 17:46:03 -0700 Subject: [PATCH 106/502] finished integrating john's changes for now --- PyTutorGAE/convert_2to3.py | 90 ++++++++++++++++++++++++++++++++++++++ PyTutorGAE/css/pytutor.css | 5 ++- 2 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 PyTutorGAE/convert_2to3.py diff --git a/PyTutorGAE/convert_2to3.py b/PyTutorGAE/convert_2to3.py new file mode 100644 index 000000000..d5fb41d69 --- /dev/null +++ b/PyTutorGAE/convert_2to3.py @@ -0,0 +1,90 @@ +# Convert project from Python 2 to Python 3 and test that JSON traces are +# unchanged for all examples. +# +# python3 convert_2to3.py +# +# Runs under Python 2.7 and Python 3.x without 2to3 conversion +# +# Created by John DeNero + +import generate_json_trace +import os +import sys +import json + + +def write_trace(python, example_path, output_path): + '''Use system call to generate a JSON trace using some python binary.''' + example = os.path.split(example_path)[1] + print('Generating JSON for "{0}" with {1}'.format(example, python)) + cmd = '{0} generate_json_trace.py {1} > {2}' + os.system(cmd.format(python, example_path, output_path)) + + +def write_py2_traces(examples_dir, traces_dir): + '''Write JSON traces for all examples using Python 2.7.''' + for path, _, filenames in os.walk(examples_dir): + for example in filenames: + example_path = os.path.join(path, example) + outfile = path.replace(os.path.sep, '_') + '_' + example + output_path = os.path.join(traces_dir, outfile) + write_trace('python2.7', example_path, output_path) + + +def verify_py3_traces(examples_dir, traces_dir): + '''Write and compare JSON traces for all examples using Python 3.''' + diffs = [] + for path, _, filenames in os.walk(examples_dir): + for example in filenames: + example_path = os.path.join(path, example) + outfile = path.replace(os.path.sep, '_') + '_' + example + output_path = os.path.join(traces_dir, outfile + '.py3k') + write_trace('python3', example_path, output_path) + + py2_path = os.path.join(traces_dir, outfile) + py2_result = json.load(open(py2_path)) + py3_result = json.load(open(output_path)) + if py2_result['trace'] != py3_result['trace']: + diffs.append(example) + return diffs + + +known_differences = """Known differences include: + +fib.txt: "while True:" is evaluated once in Python 3, but repeatedly in Python. + +map.txt: 2to3 converts call to map() to a list comprehension. + +OOP*.txt, ll2.txt: __init__ functions orphan a __locals__ dict on the heap in + Python 3, but it is not rendered in the front end. + +wentworth_try_finally.txt: Python 3 integer division is true, not floor. +""" + +if __name__ == '__main__': + examples_dir = 'example-code' + if not os.path.exists(examples_dir): + print('Examples directory {0} does not exist.'.format(examples_dir)) + sys.exit(1) + + traces_dir = examples_dir + '-traces' + if os.path.exists(traces_dir): + print('Testing directory {0} already exists.'.format(traces_dir)) + sys.exit(1) + os.mkdir(traces_dir) + + write_py2_traces(examples_dir, traces_dir) + + # Convert examples to Python 3 + os.system('2to3 -w -n --no-diffs {0}/*.txt {0}/*/*.txt'.format(examples_dir)) + + diffs = verify_py3_traces(examples_dir, traces_dir) + + if diffs: + print('Trace differences for: {0}'.format(diffs)) + print('See {0} for traces.'.format(traces_dir)) + print(known_differences) + else: + print('Traces are identical; cleaning up') + shutil.rm(traces_dir) + diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 992d8cacf..85e83adb2 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -563,7 +563,10 @@ div#heap { td.toplevelHeapObject { /* to make room for transition animations */ - padding: 5px; + padding-left: 8px; + padding-right: 8px; + padding-top: 4px; + padding-bottom: 4px; border: 2px dotted white; border-color: white; /* needed for d3 to do transitions */ } From 614fafe15fb1c435c803c55f857d776e0a0a6341 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 18:35:42 -0700 Subject: [PATCH 107/502] removed useless thing --- PyTutorGAE/js/pytutor.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index ef11a141a..86622e82c 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1162,8 +1162,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // insert new heap rows heapRows.enter().append('table') //.each(function(objLst, i) {console.log('NEW ROW:', objLst, i);}) - .attr('class', 'heapRow') - .append('tr'); + .attr('class', 'heapRow'); // delete a heap row var hrExit = heapRows.exit(); From 839025b465a9524eaadd697cc5e0a0b4a205e548 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 18:55:03 -0700 Subject: [PATCH 108/502] need most precise selections for selectAll, or else d3 will freak out --- PyTutorGAE/js/pytutor.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 86622e82c..b8e040f9e 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1186,7 +1186,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // update an existing heap row var toplevelHeapObjects = heapRows //.each(function(objLst, i) { console.log('UPDATE ROW:', objLst, i); }) - .selectAll('td') + .selectAll('td.toplevelHeapObject') .data(function(d, i) {return d.slice(1, d.length);}, /* map over each row, skipping row ID tag */ function(objID) {return objID;} /* each object ID is unique for constancy */); @@ -1505,7 +1505,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // ENTER globalsD3.enter() .append('tr') - .selectAll('td') + .selectAll('td.stackFrameVar,td.stackFrameValue') .data(function(d, i){return d;}) /* map varname down both columns */ .enter() .append('td') @@ -1641,11 +1641,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable .enter() - .append('tr') + .append('tr'); var stackVarTableCells = stackVarTable - .selectAll('td') + .selectAll('td.stackFrameVar,td.stackFrameValue') .data(function(d, i) {return [d, d] /* map identical data down both columns */;}) stackVarTableCells.enter() From 831e202608454dd45c4b31d4345cf154613be6ab Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 10 Aug 2012 21:53:37 -0700 Subject: [PATCH 109/502] fixed memory leak due to not detaching jsPlumb connectors --- PyTutorGAE/js/pytutor.js | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index b8e040f9e..6049e5a3f 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1094,6 +1094,8 @@ ExecutionVisualizer.prototype.precomputeCurTraceLayouts = function() { } +var heapPtrSrcRE = /__heap_pointer_src_/; + // The "3.0" version of renderDataStructures renders variables in // a stack, values in a separate heap, and draws line connectors // to represent both stack->heap object references and, more importantly, @@ -1120,6 +1122,19 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // Heap object rendering phase: + // This is VERY crude, but to prevent multiple redundant HEAP->HEAP + // connectors from being drawn with the same source and origin, we need to first + // DELETE ALL existing HEAP->HEAP connections, and then re-render all of + // them in each call to this function. The reason why we can't safely + // hold onto them is because there's no way to guarantee that the + // *__heap_pointer_src_ IDs are consistent across execution points. + myViz.jsPlumbInstance.select().each(function(c) { + if (c.sourceId.match(heapPtrSrcRE)) { + myViz.jsPlumbInstance.detachAllConnections(c.sourceId); + } + }); + + // Key: CSS ID of the div element representing the stack frame variable // (for stack->heap connections) or heap object (for heap->heap connections) // the format is: '__heap_pointer_src_' @@ -1299,8 +1314,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var dstDivID = myViz.generateID('heap_object_' + objID); - // TODO: we might be able to further optimize, since we might be re-drawing - // HEAP->HEAP connections when we can just keep the existing ones assert(!connectionEndpointIDs.has(srcDivID)); connectionEndpointIDs.set(srcDivID, dstDivID); //console.log('HEAP->HEAP', srcDivID, dstDivID); @@ -1555,6 +1568,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); connectionEndpointIDs.set(varDivID, heapObjID); //console.log('STACK->HEAP', varDivID, heapObjID); + + // GARBAGE COLLECTION GOTCHA! we need to get rid of the old + // connector in preparation for rendering a new one: + myViz.jsPlumbInstance.detachAllConnections(varDivID); } //console.log('CHANGED', varname, prevValStringRepr, valStringRepr); @@ -1698,6 +1715,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); connectionEndpointIDs.set(varDivID, heapObjID); //console.log('STACK->HEAP', varDivID, heapObjID); + + // GARBAGE COLLECTION GOTCHA! we need to get rid of the old + // connector in preparation for rendering a new one: + myViz.jsPlumbInstance.detachAllConnections(varDivID); } //console.log('CHANGED', frame.unique_hash, varname, prevValStringRepr, valStringRepr); @@ -1729,9 +1750,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { /* myViz.jsPlumbInstance.select().each(function(c) { - console.log(c.sourceId, c.targetId); + console.log('CONN:', c.sourceId, c.targetId); }); */ + //console.log('---', myViz.jsPlumbInstance.select().length, '---'); function highlight_frame(frameID) { From 67e1b6467588c78d4e760205d691b6031d86550b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 14 Aug 2012 13:54:33 -0700 Subject: [PATCH 110/502] abstracted out CSS a bit better --- PyTutorGAE/css/opt-frontend.css | 64 +++++++++++++++++++++++++++++++++ PyTutorGAE/css/pytutor.css | 58 +----------------------------- PyTutorGAE/js/pytutor.js | 2 +- PyTutorGAE/tutor.html | 3 +- 4 files changed, 68 insertions(+), 59 deletions(-) create mode 100644 PyTutorGAE/css/opt-frontend.css diff --git a/PyTutorGAE/css/opt-frontend.css b/PyTutorGAE/css/opt-frontend.css new file mode 100644 index 000000000..68bdd71e1 --- /dev/null +++ b/PyTutorGAE/css/opt-frontend.css @@ -0,0 +1,64 @@ +/* CSS accompanying ../tutor.html */ + +h1 { + font-weight: normal; + font-size: 20pt; + font-family: georgia, serif; + line-height: 1em; /* enforce single spacing so that Georgia works */ + + margin-top: 0px; + margin-bottom: 8px; +} + +h2 { + font-size: 12pt; + font-weight: normal; + font-family: georgia, serif; + line-height: 1.1em; /* enforce single spacing so that Georgia works */ + + margin-top: 2px; + margin-bottom: 20px; +} + + +body { + background-color: white; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 10pt; +} + +a { + color: #3D58A2; +} + +a:visited { + color: #3D58A2; +} + +a:hover { + color: #3D58A2; +} + +span { + padding: 0px; +} + +table#pyOutputPane { + padding: 10px; +} + +#pyInputPane { + margin-top: 20px; + margin-bottom: 20px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + +#codeInputPane { + margin-top: 5px; + font-size: 12pt; +} + diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 85e83adb2..f7a23aac1 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -65,63 +65,11 @@ Complementary Color: */ -h1 { - font-weight: normal; - font-size: 20pt; - font-family: georgia, serif; - line-height: 1em; /* enforce single spacing so that Georgia works */ - - margin-top: 0px; - margin-bottom: 8px; -} - -h2 { - font-size: 12pt; - font-weight: normal; - font-family: georgia, serif; - line-height: 1.1em; /* enforce single spacing so that Georgia works */ - - margin-top: 2px; - margin-bottom: 20px; -} - - -body { - background-color: white; +table.visualizer { font-family: verdana, arial, helvetica, sans-serif; font-size: 10pt; } -a { - color: #3D58A2; -} - -a:visited { - color: #3D58A2; -} - -a:hover { - color: #3D58A2; -} - -span { - padding: 0px; -} - -#pyInputPane { - margin-top: 20px; - margin-bottom: 20px; - - max-width: 700px; - /* center align */ - margin-left: auto; - margin-right: auto; -} - -#codeInputPane { - margin-top: 5px; - font-size: 12pt; -} td#stack_td, td#heap_td { @@ -129,10 +77,6 @@ td#heap_td { font-size: 10pt; /* don't make fonts in the heap so big! */ } -table#pyOutputPane { - padding: 15px; -} - #dataViz { margin-left: 30px; } diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 6049e5a3f..4424b6315 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -118,7 +118,7 @@ ExecutionVisualizer.prototype.render = function() { // TODO: make less gross! this.domRoot.html( - '\ + '
\ \ ","
\
\ diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index 8750fcbbc..0b417e87e 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -59,6 +59,7 @@ + @@ -142,7 +143,7 @@ -
+
"]||(!O.indexOf("
"]||!O.indexOf("",""]||!o.support.htmlSerialize&&[1,"div
","
"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); -/* - * Sizzle CSS Selector Engine - v0.9.3 - * Copyright 2009, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * More information: http://sizzlejs.com/ - */ -(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return UT[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="

";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="
";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("
").append(M.responseText.replace(//g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='
';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file diff --git a/PyTutorGAE/js/jquery-1.6.min.js b/PyTutorGAE/js/jquery-1.6.min.js new file mode 100644 index 000000000..c72011dfa --- /dev/null +++ b/PyTutorGAE/js/jquery-1.6.min.js @@ -0,0 +1,16 @@ +/*! + * jQuery JavaScript Library v1.6 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon May 2 13:50:00 2011 -0400 + */ +(function(a,b){function cw(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function ct(a){if(!ch[a]){var b=f("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d===""){ci||(ci=c.createElement("iframe"),ci.frameBorder=ci.width=ci.height=0),c.body.appendChild(ci);if(!cj||!ci.createElement)cj=(ci.contentWindow||ci.contentDocument).document,cj.write("");b=cj.createElement(a),cj.body.appendChild(b),d=f.css(b,"display"),c.body.removeChild(ci)}ch[a]=d}return ch[a]}function cs(a,b){var c={};f.each(cn.concat.apply([],cn.slice(0,b)),function(){c[this]=a});return c}function cr(){co=b}function cq(){setTimeout(cr,0);return co=f.now()}function cg(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function cf(){try{return new a.XMLHttpRequest}catch(b){}}function b_(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g=0===c})}function V(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function N(a,b){return(a&&a!=="*"?a+".":"")+b.replace(z,"`").replace(A,"&")}function M(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function K(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function E(){return!0}function D(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){name="data-"+c.replace(j,"$1-$2").toLowerCase(),d=a.getAttribute(name);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(e){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function H(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(H,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=d.userAgent,x,y,z,A=Object.prototype.toString,B=Object.prototype.hasOwnProperty,C=Array.prototype.push,D=Array.prototype.slice,E=String.prototype.trim,F=Array.prototype.indexOf,G={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?g=[null,a,null]:g=i.exec(a);if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6",length:0,size:function(){return this.length},toArray:function(){return D.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?C.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(D.apply(this,arguments),"slice",D.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:C,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!y){y=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",z,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",z),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&H()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):G[A.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;if(a.constructor&&!B.call(a,"constructor")&&!B.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a);return c===b||B.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(b,c,d){a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),d=c.documentElement,(!d||!d.nodeName||d.nodeName==="parsererror")&&e.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
a",b=a.getElementsByTagName("*"),d=a.getElementsByTagName("a")[0];if(!b||!b.length||!d)return{};e=c.createElement("select"),f=e.appendChild(c.createElement("option")),g=a.getElementsByTagName("input")[0],i={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.55$/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:g.value==="on",optSelected:f.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},g.checked=!0,i.noCloneChecked=g.cloneNode(!0).checked,e.disabled=!0,i.optDisabled=!f.disabled;try{delete a.test}catch(r){i.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function click(){i.noCloneEvent=!1,a.detachEvent("onclick",click)}),a.cloneNode(!0).fireEvent("onclick")),g=c.createElement("input"),g.value="t",g.setAttribute("type","radio"),i.radioValue=g.value==="t",g.setAttribute("checked","checked"),a.appendChild(g),j=c.createDocumentFragment(),j.appendChild(a.firstChild),i.checkClone=j.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",k=c.createElement("body"),l={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"};for(p in l)k.style[p]=l[p];k.appendChild(a),c.documentElement.appendChild(k),i.appendChecked=g.checked,i.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,i.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
",i.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
t
",m=a.getElementsByTagName("td"),q=m[0].offsetHeight===0,m[0].style.display="",m[1].style.display="none",i.reliableHiddenOffsets=q&&m[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(h=c.createElement("div"),h.style.width="0",h.style.marginRight="0",a.appendChild(h),i.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(h,null).marginRight,10)||0)===0),k.innerHTML="",c.documentElement.removeChild(k);if(a.attachEvent)for(p in{submit:1,change:1,focusin:1})o="on"+p,q=o in a,q||(a.setAttribute(o,"return;"),q=typeof a[o]=="function"),i[p+"Bubbles"]=q;return i}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g=f.expando,h=typeof c=="string",i,j=a.nodeType,k=j?f.cache:a,l=j?a[f.expando]:a[f.expando]&&f.expando;if((!l||e&&l&&!k[l][g])&&h&&d===b)return;l||(j?a[f.expando]=l=++f.uuid:l=f.expando),k[l]||(k[l]={},j||(k[l].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?k[l][g]=f.extend(k[l][g],c):k[l]=f.extend(k[l],c);i=k[l],e&&(i[g]||(i[g]={}),i=i[g]),d!==b&&(i[c]=d);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,d){if(!!f.acceptData(b)){var e=f.expando,g=b.nodeType,h=g?f.cache:b,i=g?b[f.expando]:f.expando;if(!h[i])return;if(c){var j=d?h[i][e]:h[i];if(j){delete j[c];if(!l(j))return}}if(d){delete h[i][e];if(!l(h[i]))return}var k=h[i][e];f.support.deleteExpando||h!=a?delete h[i]:h[i]=null,k?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=k):g&&(f.support.deleteExpando?delete b[f.expando]:b.removeAttribute?b.removeAttribute(f.expando):b[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;return(e.value||"").replace(p,"")}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||"set"in c&&c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b=a.selectedIndex,c=[],d=a.options,e=a.type==="select-one";if(b<0)return null;for(var g=e?b:0,h=e?b+1:d.length;g=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex",readonly:"readOnly"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);var h,i,j=g!==1||!f.isXMLDoc(a);c=j&&f.attrFix[c]||c,i=f.attrHooks[c]||(v&&(f.nodeName(a,"form")||u.test(c))?v:b);if(d!==b){if(d===null||d===!1&&!t.test(c)){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;d===!0&&!t.test(c)&&(d=c),a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j)return i.get(a,c);h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){a.nodeType===1&&(b=f.attrFix[b]||b,f.support.getSetAttribute?a.removeAttribute(b):(f.attr(a,b,""),a.removeAttributeNode(a.getAttributeNode(b))))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.getAttribute("value");a.setAttribute("type",b),c&&(a.value=c);return b}}},tabIndex:{get:function(a){var c=a.getAttributeNode("tabIndex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}},propFix:{},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);c=i&&f.propFix[c]||c,h=f.propHooks[c];return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==b?g:a[c]},propHooks:{}}),f.support.getSetAttribute||(f.attrFix=f.extend(f.attrFix,{"for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder"}),v=f.attrHooks.name=f.attrHooks.value=f.valHooks.button={get:function(a,c){var d;if(c==="value"&&!f.nodeName(a,"button"))return a.getAttribute(c);d=a.getAttributeNode(c);return d&&d.specified?d.nodeValue:b},set:function(a,b,c){var d=a.getAttributeNode(c);if(d){d.nodeValue=b;return b}}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=Object.prototype.hasOwnProperty,x=/\.(.*)$/,y=/^(?:textarea|input|select)$/i,z=/\./g,A=/ /g,B=/[^\w\s.|`]/g,C=function(a){return a.replace(B,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=D;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=D);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),C).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},J=function J(a){var c=a.target,d,e;if(!!y.test(c.nodeName)&&!c.readOnly){d=f._data(c,"_change_data"),e=I(c),(a.type!=="focusout"||c.type!=="radio")&&f._data(c,"_change_data",e);if(d===b||e===d)return;if(d!=null||e)a.type="change",a.liveFired=b,f.event.trigger(a,arguments[1],c)}};f.event.special.change={filters:{focusout:J,beforedeactivate:J,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&J.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&J.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",I(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in H)f.event.add(this,c+".specialChange",H[c]);return y.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return y.test(this.nodeName)}},H=f.event.special.change.filters,H.focus=H.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){return a.nodeName.toLowerCase()==="input"&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=T.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a=="string")return f.inArray(this[0],a?f(a):this.parent().children());return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(V(c[0])||V(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=S.call(arguments);O.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!U[a]?f.unique(e):e,(this.length>1||Q.test(d))&&P.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var X=/ jQuery\d+="(?:\d+|null)"/g,Y=/^\s+/,Z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,$=/<([\w:]+)/,_=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
","
"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(X,""):null;if(typeof a=="string"&&!bb.test(a)&&(f.support.leadingWhitespace||!Y.test(a))&&!be[($.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Z,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[];for(var i=0,j;(j=a[i])!=null;i++){typeof j=="number"&&(j+="");if(!j)continue;if(typeof j=="string")if(!ba.test(j))j=b.createTextNode(j);else{j=j.replace(Z,"<$1>");var k=($.exec(j)||["",""])[1].toLowerCase(),l=be[k]||be._default,m=l[0],n=b.createElement("div");n.innerHTML=l[1]+j+l[2];while(m--)n=n.lastChild;if(!f.support.tbody){var o=_.test(j),p=k==="table"&&!o?n.firstChild&&n.firstChild.childNodes:l[1]===""&&!o?n.childNodes:[];for(var q=p.length-1;q>=0;--q)f.nodeName(p[q],"tbody")&&!p[q].childNodes.length&&p[q].parentNode.removeChild(p[q])}!f.support.leadingWhitespace&&Y.test(j)&&n.insertBefore(b.createTextNode(Y.exec(j)[0]),n.firstChild),j=n.childNodes}var r;if(!f.support.appendChecked)if(j[0]&&typeof (r=j.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle;c.zoom=1;var e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bx(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(by=function(a,c){var d,e,g;c=c.replace(bp,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bz=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bq.test(d)&&br.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bx=by||bz,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bC=/%20/g,bD=/\[\]$/,bE=/\r?\n/g,bF=/#.*$/,bG=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bH=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bI=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,bJ=/^(?:GET|HEAD)$/,bK=/^\/\//,bL=/\?/,bM=/)<[^<]*)*<\/script>/gi,bN=/^(?:select|textarea)/i,bO=/\s+/,bP=/([?&])_=[^&]*/,bQ=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bR=f.fn.load,bS={},bT={},bU,bV;try{bU=e.href}catch(bW){bU=c.createElement("a"),bU.href="",bU=bU.href}bV=bQ.exec(bU.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bR)return bR.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
").append(c.replace(bM,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bN.test(this.nodeName)||bH.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bE,"\r\n")}}):{name:b.name,value:c.replace(bE,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?f.extend(!0,a,f.ajaxSettings,b):(b=a,a=f.extend(!0,f.ajaxSettings,b));for(var c in{context:1,url:1})c in b?a[c]=b[c]:c in f.ajaxSettings&&(a[c]=f.ajaxSettings[c]);return a},ajaxSettings:{url:bU,isLocal:bI.test(bV[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML}},ajaxPrefilter:bX(bS),ajaxTransport:bX(bT),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a?4:0;var o,r,u,w=l?b$(d,v,l):b,x,y;if(a>=200&&a<300||a===304){if(d.ifModified){if(x=v.getResponseHeader("Last-Modified"))f.lastModified[k]=x;if(y=v.getResponseHeader("Etag"))f.etag[k]=y}if(a===304)c="notmodified",o=!0;else try{r=b_(d,w),c="success",o=!0}catch(z){c="parsererror",u=z}}else{u=c;if(!c||a)c="error",a<0&&(a=0)}v.status=a,v.statusText=c,o?h.resolveWith(e,[r,c,v]):h.rejectWith(e,[v,c,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,c]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bG.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bF,"").replace(bK,bV[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bO),d.crossDomain==null&&(r=bQ.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bV[1]&&r[2]==bV[2]&&(r[3]||(r[1]==="http:"?80:443))==(bV[3]||(bV[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bY(bS,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bJ.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bL.test(d.url)?"&":"?")+d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bP,"$1_="+x);d.url=y+(y===d.url?(bL.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", */*; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bY(bT,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){status<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bZ(g,a[g],c,e);return d.join("&").replace(bC,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var ca=f.now(),cb=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+ca++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(cb.test(b.url)||e&&cb.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(cb,l),b.url===j&&(e&&(k=k.replace(cb,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cc=a.ActiveXObject?function(){for(var a in ce)ce[a](0,1)}:!1,cd=0,ce;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cf()||cg()}:cf,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cc&&delete ce[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cd,cc&&(ce||(ce={},f(a).unload(cc)),ce[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ch={},ci,cj,ck=/^(?:toggle|show|hide)$/,cl=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cm,cn=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],co,cp=a.webkitRequestAnimationFrame||a.mozRequestAnimationFrame||a.oRequestAnimationFrame;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cs("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a=f.timers,b=a.length;while(b--)a[b]()||a.splice(b,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cm),cm=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cu=/^t(?:able|d|h)$/i,cv=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cw(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cu.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="
";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cv.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cv.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cw(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cw(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){return this[0]?parseFloat(f.css(this[0],d,"padding")):null},f.fn["outer"+c]=function(a){return this[0]?parseFloat(f.css(this[0],d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c];return e.document.compatMode==="CSS1Compat"&&g||e.document.body["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var h=f.css(e,d),i=parseFloat(h);return f.isNaN(i)?h:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index 1d0b56c55..c5ca2f22c 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -35,6 +35,7 @@ var appMode = 'edit'; // 'edit' or 'visualize' var preseededCode = null; // if you passed in a 'code=' in the URL, then set this var var preseededCurInstr = null; // if you passed in a 'curInstr=' in the URL, then set this var +var preseededMode = null; // if you passed in a 'mode=' in the URL, then set this var var myVisualizer = null; // singleton ExecutionVisualizer instance @@ -47,7 +48,7 @@ function enterEditMode() { var pyInputCodeMirror; // CodeMirror object that contains the input text function setCodeMirrorVal(dat) { - pyInputCodeMirror.setValue(dat); + pyInputCodeMirror.setValue(dat.rtrim() /* kill trailing spaces */); } @@ -68,8 +69,9 @@ $(document).ready(function() { $(window).bind("hashchange", function(e) { appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode - // globals defined in pytutor.js + // yuck, globals! preseededCode = $.bbq.getState('code'); + preseededMode = $.bbq.getState('mode'); if (!preseededCurInstr) { // TODO: kinda gross hack preseededCurInstr = Number($.bbq.getState('curInstr')); @@ -85,9 +87,8 @@ $(document).ready(function() { if (!myVisualizer) { appMode = 'edit'; - if (preseededCode) { - // if you've pre-seeded 'code' and 'curInstr' params in the URL hash, - // then punt for now ... + if (preseededCode && preseededMode == 'visualize') { + // punt for now ... } else { $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index d94556b8b..789da6dc2 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -27,6 +27,23 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/* To import, put this at the top of your HTML page: + + + + + + + + + + + + +*/ + + + var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer instance // domRootID is the string ID of the root element where to render this instance @@ -38,8 +55,9 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // startingInstruction - the (zero-indexed) execution point to display upon rendering // hideOutput - hide "Program output" and "Generate URL" displays // codeDivHeight - maximum height of #pyCodeOutputDiv (in pixels) +// editCodeBaseURL - the base URL to visit when the user clicks 'Edit code' function ExecutionVisualizer(domRootID, dat, params) { - this.curInputCode = dat.code; + this.curInputCode = dat.code.rtrim(); // kill trailing spaces this.curTrace = dat.trace; this.curInstr = 0; @@ -125,7 +143,7 @@ ExecutionVisualizer.prototype.render = function() {
\
\
\ - \ + Edit code\
\
\ Click here to focus and then use the left and right arrow keys to
\ @@ -172,6 +190,18 @@ ExecutionVisualizer.prototype.render = function() { '); + if (this.params.editCodeBaseURL) { + var urlStr = $.param.fragment(this.params.editCodeBaseURL, + {code: this.curInputCode}, + 2); + this.domRoot.find('#editBtn').attr('href', urlStr); + } + else { + this.domRoot.find('#editBtn').attr('href', "#"); + this.domRoot.find('#editBtn').click(function(){return false;}); // DISABLE the link! + } + + // create a persistent globals frame // (note that we need to keep #globals_area separate from #stack for d3 to work its magic) this.domRoot.find("#globals_area").append('
+ + + + + + + + + - + + - - - - - - - - - - - - - - - From 95e4d35983305a3df655004966391e1959832aaf Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 14 Aug 2012 19:28:46 -0700 Subject: [PATCH 116/502] some minor renaming to prepare for adding more zombie frames --- PyTutorGAE/js/pytutor.js | 2 +- PyTutorGAE/pg_logger.py | 28 ++++++++++++++-------------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 789da6dc2..8c37eb308 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1712,7 +1712,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var frame = d.frame; if (i == 0) { - if (varname == '__return__' && !frame.is_zombie) + if (varname == '__return__') $(this).html('Return
value
'); else $(this).html(varname); diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 113ad852b..438345a46 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -98,10 +98,10 @@ def __init__(self, finalizer_func): # Value: parent frame self.closures = {} - # List of frames to KEEP AROUND after the function exits, - # because nested functions were defined in those frames. - # ORDER matters for aesthetics. - self.zombie_frames = [] + # List of frames to KEEP AROUND after the function exits + # because nested functions were defined within those frames. + # (ORDER matters for aesthetics) + self.zombie_parent_frames = [] # all globals that ever appeared in the program, in the order in # which they appeared. note that this might be a superset of all @@ -148,19 +148,19 @@ def get_parent_frame(self, frame): return None - def get_zombie_frame_id(self, f): + def get_zombie_parent_frame_id(self, f): # should be None unless this is a zombie frame try: # make the frame id's one-indexed for clarity # (and to prevent possible confusion with None) - return self.zombie_frames.index(f) + 1 + return self.zombie_parent_frames.index(f) + 1 except ValueError: pass return None def lookup_zombie_frame_by_id(self, idx): # remember this is one-indexed - return self.zombie_frames[idx - 1] + return self.zombie_parent_frames[idx - 1] # unused ... @@ -230,7 +230,7 @@ def interaction(self, frame, traceback, event_type): # only render zombie frames that are NO LONGER on the stack cur_stack_frames = [e[0] for e in self.stack] - zombie_frames_to_render = [e for e in self.zombie_frames if e not in cur_stack_frames] + zombie_frames_to_render = [e for e in self.zombie_parent_frames if e not in cur_stack_frames] # each element is a pair of (function name, ENCODED locals dict) @@ -250,7 +250,7 @@ def create_encoded_stack_entry(cur_frame): while True: p = self.get_parent_frame(f) if p: - pid = self.get_zombie_frame_id(p) + pid = self.get_zombie_parent_frame_id(p) assert pid parent_frame_id_list.append(pid) f = p @@ -299,7 +299,7 @@ def create_encoded_stack_entry(cur_frame): if type(v) in (types.FunctionType, types.MethodType): try: enclosing_frame = self.closures[v] - enclosing_frame_id = self.get_zombie_frame_id(enclosing_frame) + enclosing_frame_id = self.get_zombie_parent_frame_id(enclosing_frame) self.encoder.set_function_parent_frame_ID(encoded_val, enclosing_frame_id) except KeyError: pass @@ -340,7 +340,7 @@ def create_encoded_stack_entry(cur_frame): assert e in encoded_locals return dict(func_name=cur_name, - frame_id=self.get_zombie_frame_id(cur_frame), + frame_id=self.get_zombie_parent_frame_id(cur_frame), parent_frame_id_list=parent_frame_id_list, encoded_locals=encoded_locals, ordered_varnames=ordered_varnames) @@ -355,8 +355,8 @@ def create_encoded_stack_entry(cur_frame): if (type(v) in (types.FunctionType, types.MethodType) and \ v not in self.closures): self.closures[v] = top_frame - if not top_frame in self.zombie_frames: - self.zombie_frames.append(top_frame) + if not top_frame in self.zombie_parent_frames: + self.zombie_parent_frames.append(top_frame) # climb up until you find '', which is (hopefully) the global scope @@ -382,7 +382,7 @@ def create_encoded_stack_entry(cur_frame): if type(v) in (types.FunctionType, types.MethodType): try: enclosing_frame = self.closures[v] - enclosing_frame_id = self.get_zombie_frame_id(enclosing_frame) + enclosing_frame_id = self.get_zombie_parent_frame_id(enclosing_frame) self.encoder.set_function_parent_frame_ID(encoded_val, enclosing_frame_id) except KeyError: pass From 6541e1e48f23f398a598f8514776f9ee3e4c172b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 15 Aug 2012 08:56:21 -0700 Subject: [PATCH 117/502] slight style adjustment for frames --- PyTutorGAE/css/pytutor.css | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index f7a23aac1..f5a232ade 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -449,13 +449,13 @@ div.stackFrame, div.zombieStackFrame { padding-left: 6px; padding-right: 6px; padding-bottom: 4px; - font-size: 11pt; + font-size: 10pt; border-left: 2px solid #666666; } div.zombieStackFrame { - border-left: 1px dotted #aaaaaa; /* make zombie borders thinner */ - color: #aaaaaa; + border-left: 1px dotted #999999; /* make zombie borders thinner */ + color: #999999; } div.highlightedStackFrame { From bc4e8ae18f662188459f398d2376101fc34c4141 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 15 Aug 2012 09:02:34 -0700 Subject: [PATCH 118/502] first pass at cumulative display mode --- PyTutorGAE/pg_logger.py | 108 +++++++++++++++++++++++----------------- 1 file changed, 61 insertions(+), 47 deletions(-) diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 438345a46..3d53364ef 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -78,7 +78,7 @@ def filter_var_dict(d): class PGLogger(bdb.Bdb): - def __init__(self, finalizer_func): + def __init__(self, finalizer_func, cumulative_display=False): bdb.Bdb.__init__(self) self.mainpyfile = '' self._wait_for_mainpyfile = 0 @@ -87,6 +87,12 @@ def __init__(self, finalizer_func): # processes it self.finalizer_func = finalizer_func + # if True, then displays ALL stack frames that have ever existed + # rather than only those currently on the stack (and their + # lexical parents) + self.cumulative_display = cumulative_display + self.cumulative_display = True + # each entry contains a dict with the information for a single # executed line self.trace = [] @@ -98,10 +104,16 @@ def __init__(self, finalizer_func): # Value: parent frame self.closures = {} - # List of frames to KEEP AROUND after the function exits - # because nested functions were defined within those frames. - # (ORDER matters for aesthetics) - self.zombie_parent_frames = [] + # Key: id() of frame object + # Value: monotonically increasing small ID, based on call order + self.frame_ordered_ids = {} + self.cur_frame_id = 1 + + # List of frames to KEEP AROUND after the function exits. + # If cumulative_display is True, then keep ALL frames in + # zombie_frames; otherwise keep only frames where + # nested functions were defined within them. + self.zombie_frames = [] # all globals that ever appeared in the program, in the order in # which they appeared. note that this might be a superset of all @@ -116,6 +128,10 @@ def __init__(self, finalizer_func): self.executed_script = None # Python script to be executed! + def get_frame_id(self, cur_frame): + return self.frame_ordered_ids[id(cur_frame)] + + # Returns the (lexical) parent frame of the function that was called # to create the stack frame 'frame'. # @@ -148,19 +164,12 @@ def get_parent_frame(self, frame): return None - def get_zombie_parent_frame_id(self, f): - # should be None unless this is a zombie frame - try: - # make the frame id's one-indexed for clarity - # (and to prevent possible confusion with None) - return self.zombie_parent_frames.index(f) + 1 - except ValueError: - pass - return None - - def lookup_zombie_frame_by_id(self, idx): - # remember this is one-indexed - return self.zombie_parent_frames[idx - 1] + def lookup_zombie_frame_by_id(self, frame_id): + # TODO: kinda inefficient + for e in self.zombie_frames: + if self.get_frame_id(e) == frame_id: + return e + assert False # should never get here # unused ... @@ -227,10 +236,19 @@ def interaction(self, frame, traceback, event_type): self.encoder.reset_heap() # VERY VERY VERY IMPORTANT, # or else we won't properly capture heap object mutations in the trace! + if event_type == 'call': + tfid = id(top_frame) + assert tfid not in self.frame_ordered_ids + self.frame_ordered_ids[tfid] = self.cur_frame_id + self.cur_frame_id += 1 + + if self.cumulative_display: + self.zombie_frames.append(top_frame) + # only render zombie frames that are NO LONGER on the stack cur_stack_frames = [e[0] for e in self.stack] - zombie_frames_to_render = [e for e in self.zombie_parent_frames if e not in cur_stack_frames] + zombie_frames_to_render = [e for e in self.zombie_frames if e not in cur_stack_frames] # each element is a pair of (function name, ENCODED locals dict) @@ -242,15 +260,13 @@ def create_encoded_stack_entry(cur_frame): ret = {} - # your immediate parent frame ID is parent_frame_id_list[0] - # and all other members are your further ancestors parent_frame_id_list = [] f = cur_frame while True: p = self.get_parent_frame(f) if p: - pid = self.get_zombie_parent_frame_id(p) + pid = self.get_frame_id(p) assert pid parent_frame_id_list.append(pid) f = p @@ -299,7 +315,7 @@ def create_encoded_stack_entry(cur_frame): if type(v) in (types.FunctionType, types.MethodType): try: enclosing_frame = self.closures[v] - enclosing_frame_id = self.get_zombie_parent_frame_id(enclosing_frame) + enclosing_frame_id = self.get_frame_id(enclosing_frame) self.encoder.set_function_parent_frame_ID(encoded_val, enclosing_frame_id) except KeyError: pass @@ -340,7 +356,8 @@ def create_encoded_stack_entry(cur_frame): assert e in encoded_locals return dict(func_name=cur_name, - frame_id=self.get_zombie_parent_frame_id(cur_frame), + frame_id=self.get_frame_id(cur_frame), + # TODO: fixme parent_frame_id_list=parent_frame_id_list, encoded_locals=encoded_locals, ordered_varnames=ordered_varnames) @@ -355,8 +372,8 @@ def create_encoded_stack_entry(cur_frame): if (type(v) in (types.FunctionType, types.MethodType) and \ v not in self.closures): self.closures[v] = top_frame - if not top_frame in self.zombie_parent_frames: - self.zombie_parent_frames.append(top_frame) + if not top_frame in self.zombie_frames: + self.zombie_frames.append(top_frame) # climb up until you find '', which is (hopefully) the global scope @@ -382,7 +399,7 @@ def create_encoded_stack_entry(cur_frame): if type(v) in (types.FunctionType, types.MethodType): try: enclosing_frame = self.closures[v] - enclosing_frame_id = self.get_zombie_parent_frame_id(enclosing_frame) + enclosing_frame_id = self.get_frame_id(enclosing_frame) self.encoder.set_function_parent_frame_ID(encoded_val, enclosing_frame_id) except KeyError: pass @@ -402,40 +419,38 @@ def create_encoded_stack_entry(cur_frame): # making it look aesthetically pretty stack_to_render = []; - # first push all regular stack entries BACKWARDS + # first push all regular stack entries if encoded_stack_locals: - stack_to_render = encoded_stack_locals[::-1] - for e in stack_to_render: + for e in encoded_stack_locals: e['is_zombie'] = False e['is_highlighted'] = False + stack_to_render.append(e) - stack_to_render[-1]['is_highlighted'] = True + # highlight the top-most active stack entry + stack_to_render[0]['is_highlighted'] = True - # zombie_encoded_stack_locals consists of exited functions that have returned - # nested functions. Push zombie stack entries at the BEGINNING of stack_to_render, - # EXCEPT put zombie entries BEHIND regular entries that are their parents - for e in zombie_encoded_stack_locals[::-1]: + # now push all zombie stack entries + for e in zombie_encoded_stack_locals: # don't display return value for zombie frames + # TODO: reconsider ... + ''' try: e['ordered_varnames'].remove('__return__') except ValueError: pass + ''' e['is_zombie'] = True e['is_highlighted'] = False # never highlight zombie entries - # j should be 0 most of the time, so we're always inserting new - # elements to the front of stack_to_render (which is why we are - # iterating backwards over zombie_stack_locals). - j = 0 - while j < len(stack_to_render): - if stack_to_render[j]['frame_id'] in e['parent_frame_id_list']: - j += 1 - continue - break + stack_to_render.append(e) + + # now sort by frame_id since that sorts frames in "chronological + # order" based on the order they were invoked + stack_to_render.sort(key=lambda e: e['frame_id']) + - stack_to_render.insert(j, e) # create a unique hash for this stack entry, so that the # frontend can uniquely identify it when doing incremental @@ -445,8 +460,7 @@ def create_encoded_stack_entry(cur_frame): # disambiguating recursion!) for (stack_index, e) in enumerate(stack_to_render): hash_str = e['func_name'] - if e['frame_id']: - hash_str += '_f' + str(e['frame_id']) + hash_str += '_f' + str(e['frame_id']) if e['parent_frame_id_list']: hash_str += '_p' + '_'.join([str(i) for i in e['parent_frame_id_list']]) if e['is_zombie']: From eec35c38174cf390ea7bee96f1003219b41ab7d2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 15 Aug 2012 09:33:44 -0700 Subject: [PATCH 119/502] sync'ed display with frontend --- PyTutorGAE/js/pytutor.js | 6 +++--- PyTutorGAE/pg_logger.py | 32 +++++++++++++++++--------------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 8c37eb308..beebb8739 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1660,9 +1660,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like var headerLabel = funcName + '()'; - var frameID = frame.frame_id; // optional (btw, this isn't a CSS id) - if (frameID) { - headerLabel = 'f' + frameID + ': ' + headerLabel; + // only display if you're someone's parent + if (frame.is_parent) { + headerLabel = 'f' + frame.frame_id + ': ' + headerLabel; } // optional (btw, this isn't a CSS id) diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 3d53364ef..10c099b4a 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -91,7 +91,6 @@ def __init__(self, finalizer_func, cumulative_display=False): # rather than only those currently on the stack (and their # lexical parents) self.cumulative_display = cumulative_display - self.cumulative_display = True # each entry contains a dict with the information for a single # executed line @@ -104,7 +103,7 @@ def __init__(self, finalizer_func, cumulative_display=False): # Value: parent frame self.closures = {} - # Key: id() of frame object + # Key: frame object # Value: monotonically increasing small ID, based on call order self.frame_ordered_ids = {} self.cur_frame_id = 1 @@ -115,6 +114,10 @@ def __init__(self, finalizer_func, cumulative_display=False): # nested functions were defined within them. self.zombie_frames = [] + # set of elements within zombie_frames that are also + # LEXICAL PARENTS of other frames + self.parent_frames_set = set() + # all globals that ever appeared in the program, in the order in # which they appeared. note that this might be a superset of all # the globals that exist at any particular execution point, @@ -129,7 +132,7 @@ def __init__(self, finalizer_func, cumulative_display=False): def get_frame_id(self, cur_frame): - return self.frame_ordered_ids[id(cur_frame)] + return self.frame_ordered_ids[cur_frame] # Returns the (lexical) parent frame of the function that was called @@ -237,9 +240,8 @@ def interaction(self, frame, traceback, event_type): # or else we won't properly capture heap object mutations in the trace! if event_type == 'call': - tfid = id(top_frame) - assert tfid not in self.frame_ordered_ids - self.frame_ordered_ids[tfid] = self.cur_frame_id + assert top_frame not in self.frame_ordered_ids + self.frame_ordered_ids[top_frame] = self.cur_frame_id self.cur_frame_id += 1 if self.cumulative_display: @@ -356,8 +358,8 @@ def create_encoded_stack_entry(cur_frame): assert e in encoded_locals return dict(func_name=cur_name, + is_parent=(cur_frame in self.parent_frames_set), frame_id=self.get_frame_id(cur_frame), - # TODO: fixme parent_frame_id_list=parent_frame_id_list, encoded_locals=encoded_locals, ordered_varnames=ordered_varnames) @@ -372,6 +374,7 @@ def create_encoded_stack_entry(cur_frame): if (type(v) in (types.FunctionType, types.MethodType) and \ v not in self.closures): self.closures[v] = top_frame + self.parent_frames_set.add(top_frame) # unequivocally add to this set!!! if not top_frame in self.zombie_frames: self.zombie_frames.append(top_frame) @@ -456,16 +459,17 @@ def create_encoded_stack_entry(cur_frame): # frontend can uniquely identify it when doing incremental # rendering. the strategy is to use a frankenstein-like mix of the # relevant fields to properly disambiguate closures and recursive - # calls to the same function (stack_index is key for - # disambiguating recursion!) - for (stack_index, e) in enumerate(stack_to_render): + # calls to the same function + for e in stack_to_render: hash_str = e['func_name'] + # frame_id is UNIQUE, so it can disambiguate recursive calls hash_str += '_f' + str(e['frame_id']) - if e['parent_frame_id_list']: - hash_str += '_p' + '_'.join([str(i) for i in e['parent_frame_id_list']]) + + # TODO: this is no longer needed, right? (since frame_id is unique) + #if e['parent_frame_id_list']: + # hash_str += '_p' + '_'.join([str(i) for i in e['parent_frame_id_list']]) if e['is_zombie']: hash_str += '_z' - hash_str += '_i' + str(stack_index) e['unique_hash'] = hash_str @@ -475,8 +479,6 @@ def create_encoded_stack_entry(cur_frame): func_name=tos[0].f_code.co_name, globals=encoded_globals, ordered_globals=ordered_globals, - #stack_locals=encoded_stack_locals, # DEPRECATED in favor of stack_to_render - #zombie_stack_locals=zombie_encoded_stack_locals, # DEPRECATED in favor of stack_to_render stack_to_render=stack_to_render, heap=self.encoder.get_heap(), stdout=get_user_stdout(tos[0])) From 0efd6998ba41bff9cf02093110a09a555753143a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 15 Aug 2012 09:41:12 -0700 Subject: [PATCH 120/502] slightly more robust error handling --- PyTutorGAE/js/opt-frontend.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index c5ca2f22c..e7d50c644 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -148,9 +148,9 @@ $(document).ready(function() { // don't enter visualize mode if there are killer errors: if (!trace || (trace.length == 0) || - ((trace.length == 1) && trace[0].event == 'uncaught_exception')) { + (trace[trace.length - 1].event == 'uncaught_exception')) { - if (trace.length > 0) { + if (trace.length == 1) { var errorLineNo = trace[0].line - 1; /* CodeMirror lines are zero-indexed */ if (errorLineNo !== undefined) { // highlight the faulting line in pyInputCodeMirror @@ -167,7 +167,7 @@ $(document).ready(function() { alert(trace[0].exception_msg); } else { - alert("Whoa, unknown error! Please reload and try again."); + alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net"); } $('#executeBtn').html("Visualize execution"); From f98d4fd1765647ee1eac3bf4597b769b61d34bf6 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 15 Aug 2012 21:15:12 -0700 Subject: [PATCH 121/502] added hooks to activate cumulative_mode from the web and command-line --- PyTutorGAE/css/pytutor.css | 4 ++-- PyTutorGAE/generate_json_trace.py | 5 ++++- PyTutorGAE/js/opt-frontend.js | 3 ++- PyTutorGAE/pg_logger.py | 16 ++++++++++------ PyTutorGAE/pythontutor.py | 8 +++++++- PyTutorGAE/tutor.html | 5 +++-- PyTutorGAE/web_exec.py | 4 +++- 7 files changed, 31 insertions(+), 14 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index f5a232ade..617e4d581 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -454,8 +454,8 @@ div.stackFrame, div.zombieStackFrame { } div.zombieStackFrame { - border-left: 1px dotted #999999; /* make zombie borders thinner */ - color: #999999; + border-left: 1px dotted #aaa; /* make zombie borders thinner */ + color: #aaa; } div.highlightedStackFrame { diff --git a/PyTutorGAE/generate_json_trace.py b/PyTutorGAE/generate_json_trace.py index 380463a56..e0799d437 100644 --- a/PyTutorGAE/generate_json_trace.py +++ b/PyTutorGAE/generate_json_trace.py @@ -1,5 +1,8 @@ # Generates a JSON trace that is compatible with the js/pytutor.js frontend +CUMULATIVE_MODE = False + + import sys, pg_logger, json @@ -10,5 +13,5 @@ def json_finalizer(input_code, output_trace): for f in sys.argv[1:]: - pg_logger.exec_script_str(open(f).read(), json_finalizer) + pg_logger.exec_script_str(open(f).read(), CUMULATIVE_MODE, json_finalizer) diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index e7d50c644..d53d5b2b8 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -141,7 +141,8 @@ $(document).ready(function() { $.get(backend_script, - {user_script : pyInputCodeMirror.getValue()}, + {user_script : pyInputCodeMirror.getValue(), + cumulative_mode: $('#cumulativeMode').prop('checked')}, function(dataFromBackend) { var trace = dataFromBackend.trace; diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 10c099b4a..a5354895b 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -78,7 +78,7 @@ def filter_var_dict(d): class PGLogger(bdb.Bdb): - def __init__(self, finalizer_func, cumulative_display=False): + def __init__(self, cumulative_mode, finalizer_func): bdb.Bdb.__init__(self) self.mainpyfile = '' self._wait_for_mainpyfile = 0 @@ -90,7 +90,7 @@ def __init__(self, finalizer_func, cumulative_display=False): # if True, then displays ALL stack frames that have ever existed # rather than only those currently on the stack (and their # lexical parents) - self.cumulative_display = cumulative_display + self.cumulative_mode = cumulative_mode # each entry contains a dict with the information for a single # executed line @@ -109,7 +109,7 @@ def __init__(self, finalizer_func, cumulative_display=False): self.cur_frame_id = 1 # List of frames to KEEP AROUND after the function exits. - # If cumulative_display is True, then keep ALL frames in + # If cumulative_mode is True, then keep ALL frames in # zombie_frames; otherwise keep only frames where # nested functions were defined within them. self.zombie_frames = [] @@ -244,7 +244,7 @@ def interaction(self, frame, traceback, event_type): self.frame_ordered_ids[top_frame] = self.cur_frame_id self.cur_frame_id += 1 - if self.cumulative_display: + if self.cumulative_mode: self.zombie_frames.append(top_frame) @@ -465,6 +465,10 @@ def create_encoded_stack_entry(cur_frame): # frame_id is UNIQUE, so it can disambiguate recursive calls hash_str += '_f' + str(e['frame_id']) + # needed to refresh GUI display ... + if e['is_parent']: + hash_str += '_p' + # TODO: this is no longer needed, right? (since frame_id is unique) #if e['parent_frame_id_list']: # hash_str += '_p' + '_'.join([str(i) for i in e['parent_frame_id_list']]) @@ -596,8 +600,8 @@ def finalize(self): # the MAIN meaty function!!! -def exec_script_str(script_str, finalizer_func): - logger = PGLogger(finalizer_func) +def exec_script_str(script_str, cumulative_mode, finalizer_func): + logger = PGLogger(cumulative_mode, finalizer_func) try: logger._runscript(script_str) diff --git a/PyTutorGAE/pythontutor.py b/PyTutorGAE/pythontutor.py index 89e0078dc..9f40d6696 100644 --- a/PyTutorGAE/pythontutor.py +++ b/PyTutorGAE/pythontutor.py @@ -58,7 +58,13 @@ def json_finalizer(self, input_code, output_trace): def get(self): self.response.headers['Content-Type'] = 'application/json' self.response.headers['Cache-Control'] = 'no-cache' - pg_logger.exec_script_str(self.request.get('user_script'), self.json_finalizer) + + # convert from string to a Python boolean ... + cumulative_mode = (self.request.get('cumulative_mode') == 'true') + + pg_logger.exec_script_str(self.request.get('user_script'), + cumulative_mode, + self.json_finalizer) app = webapp2.WSGIApplication([('/', TutorPage), diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index 14612741b..6010d8477 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -66,11 +66,12 @@

- -

+

Display exited functions

+ +

Try these small examples:
aliasing | diff --git a/PyTutorGAE/web_exec.py b/PyTutorGAE/web_exec.py index c699c70b2..f9b6a523a 100644 --- a/PyTutorGAE/web_exec.py +++ b/PyTutorGAE/web_exec.py @@ -21,5 +21,7 @@ def cgi_finalizer(input_code, output_trace): else: form = cgi.FieldStorage() user_script = form['user_script'].value + # convert from string to a Python boolean ... + cumulative_mode = (form['cumulative_mode'].value == 'true') -pg_logger.exec_script_str(user_script, cgi_finalizer) +pg_logger.exec_script_str(user_script, cumulative_mode, cgi_finalizer) From 5365558735134817828647592382f5fdf93853b7 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 16 Aug 2012 07:35:56 -0700 Subject: [PATCH 122/502] more robust 'Generate URL' handling, including cumulative_mode --- PyTutorGAE/css/opt-frontend.css | 5 +++++ PyTutorGAE/css/pytutor.css | 6 ------ PyTutorGAE/js/opt-frontend.js | 25 +++++++++++++++++++------ PyTutorGAE/js/pytutor.js | 11 ----------- PyTutorGAE/tutor.html | 8 ++++++++ 5 files changed, 32 insertions(+), 23 deletions(-) diff --git a/PyTutorGAE/css/opt-frontend.css b/PyTutorGAE/css/opt-frontend.css index 68bdd71e1..7dcb24cbc 100644 --- a/PyTutorGAE/css/opt-frontend.css +++ b/PyTutorGAE/css/opt-frontend.css @@ -62,3 +62,8 @@ table#pyOutputPane { font-size: 12pt; } +button.smallBtn { + font-size: 10pt; + padding: 3px; +} + diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 617e4d581..327be9b61 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -175,12 +175,6 @@ button.medBtn { padding: 3px; } -button.smallBtn { - font-size: 10pt; - padding: 3px; -} - - /* VCR control buttons for stepping through execution */ diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index d53d5b2b8..8877c08a9 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -35,7 +35,6 @@ var appMode = 'edit'; // 'edit' or 'visualize' var preseededCode = null; // if you passed in a 'code=' in the URL, then set this var var preseededCurInstr = null; // if you passed in a 'curInstr=' in the URL, then set this var -var preseededMode = null; // if you passed in a 'mode=' in the URL, then set this var var myVisualizer = null; // singleton ExecutionVisualizer instance @@ -69,11 +68,15 @@ $(document).ready(function() { $(window).bind("hashchange", function(e) { appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode - // yuck, globals! - preseededCode = $.bbq.getState('code'); - preseededMode = $.bbq.getState('mode'); + preseededCode = $.bbq.getState('code'); // yuck, global! + var preseededMode = $.bbq.getState('mode'); - if (!preseededCurInstr) { // TODO: kinda gross hack + if ($.bbq.getState('cumulative_mode') == 'true') { + $('#cumulativeMode').prop('checked', true); + } + + // only bother with curInstr when we're visualizing ... + if (!preseededCurInstr && preseededMode == 'visualize') { // TODO: kinda gross hack preseededCurInstr = Number($.bbq.getState('curInstr')); } @@ -168,7 +171,7 @@ $(document).ready(function() { alert(trace[0].exception_msg); } else { - alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net"); + alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)"); } $('#executeBtn').html("Visualize execution"); @@ -388,5 +391,15 @@ $(document).ready(function() { } }); + $('#genUrlBtn').bind('click', function() { + var urlStr = $.param.fragment(window.location.href, + {code: pyInputCodeMirror.getValue(), + curInstr: (appMode == 'visualize') ? myVisualizer.curInstr : 0, + mode: appMode, + cumulative_mode: $('#cumulativeMode').prop('checked') + }, + 2); + $('#urlOutput').val(urlStr); + }); }); diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index beebb8739..adb258fd9 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -163,7 +163,6 @@ ExecutionVisualizer.prototype.render = function() {

\ Program output:
\ \ -

\
\ \ \ @@ -219,14 +218,6 @@ ExecutionVisualizer.prototype.render = function() { this.domRoot.find('#progOutputs').hide(); } - this.domRoot.find('#genUrlBtn').bind('click', function() { - var urlStr = $.param.fragment(window.location.href, - {code: myViz.curInputCode, curInstr: myViz.curInstr, mode: 'visualize'}, - 2); - myViz.domRoot.find('#urlOutput').val(urlStr); - }); - - this.domRoot.find("#jmpFirstInstr").click(function() { myViz.curInstr = 0; myViz.updateOutput(); @@ -683,8 +674,6 @@ ExecutionVisualizer.prototype.updateOutput = function() { assert(this.curTrace); - this.domRoot.find('#urlOutput').val(''); // blank out - var curEntry = this.curTrace[this.curInstr]; var hasError = false; diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index 6010d8477..29f6bcf05 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -141,6 +141,14 @@ \
\ Click here to focus and then use the left and right arrow keys to
\ - step through execution. Click on lines of code to set breakpoints.\ + step through execution. Click on lines of code to set/unset breakpoints.\
\
\
\ @@ -229,17 +229,11 @@ ExecutionVisualizer.prototype.render = function() { }); this.domRoot.find("#jmpStepBack").click(function() { - if (myViz.curInstr > 0) { - myViz.curInstr -= 1; - myViz.updateOutput(); - } + myViz.stepBack(); }); this.domRoot.find("#jmpStepFwd").click(function() { - if (myViz.curInstr < myViz.curTrace.length - 1) { - myViz.curInstr += 1; - myViz.updateOutput(); - } + myViz.stepForward(); }); // disable controls initially ... @@ -314,58 +308,109 @@ ExecutionVisualizer.prototype.render = function() { }; +// find the previous/next breakpoint to c or return -1 if it doesn't exist +ExecutionVisualizer.prototype.findPrevBreakpoint = function() { + var myViz = this; + var c = myViz.curInstr; -ExecutionVisualizer.prototype.setKeyboardBindings = function() { - var myViz = this; // to prevent confusion of 'this' inside of nested functions - - // find the previous/next breakpoint to c or return -1 if it doesn't exist - function findPrevBreakpoint(c) { - if (myViz.sortedBreakpointsList.length == 0) { - return -1; + if (myViz.sortedBreakpointsList.length == 0) { + return -1; + } + else { + for (var i = 1; i < myViz.sortedBreakpointsList.length; i++) { + var prev = myViz.sortedBreakpointsList[i-1]; + var cur = myViz.sortedBreakpointsList[i]; + if (c <= prev) + return -1; + if (cur >= c) + return prev; } - else { - for (var i = 1; i < myViz.sortedBreakpointsList.length; i++) { - var prev = myViz.sortedBreakpointsList[i-1]; - var cur = myViz.sortedBreakpointsList[i]; - if (c <= prev) - return -1; - if (cur >= c) - return prev; - } - // final edge case: - var lastElt = myViz.sortedBreakpointsList[myViz.sortedBreakpointsList.length - 1]; - return (lastElt < c) ? lastElt : -1; - } + // final edge case: + var lastElt = myViz.sortedBreakpointsList[myViz.sortedBreakpointsList.length - 1]; + return (lastElt < c) ? lastElt : -1; } +} + +ExecutionVisualizer.prototype.findNextBreakpoint = function() { + var myViz = this; + var c = myViz.curInstr; - function findNextBreakpoint(c) { - if (myViz.sortedBreakpointsList.length == 0) { - return -1; + if (myViz.sortedBreakpointsList.length == 0) { + return -1; + } + // usability hack: if you're currently on a breakpoint, then + // single-step forward to the next execution point, NOT the next + // breakpoint. it's often useful to see what happens when the line + // at a breakpoint executes. + else if ($.inArray(c, myViz.sortedBreakpointsList) >= 0) { + return c + 1; + } + else { + for (var i = 0; i < myViz.sortedBreakpointsList.length - 1; i++) { + var cur = myViz.sortedBreakpointsList[i]; + var next = myViz.sortedBreakpointsList[i+1]; + if (c < cur) + return cur; + if (cur <= c && c < next) // subtle + return next; } - // usability hack: if you're currently on a breakpoint, then - // single-step forward to the next execution point, NOT the next - // breakpoint. it's often useful to see what happens when the line - // at a breakpoint executes. - else if ($.inArray(c, myViz.sortedBreakpointsList) >= 0) { - return c + 1; + + // final edge case: + var lastElt = myViz.sortedBreakpointsList[myViz.sortedBreakpointsList.length - 1]; + return (lastElt > c) ? lastElt : -1; + } +} + + +// returns true if action successfully taken +ExecutionVisualizer.prototype.stepForward = function() { + var myViz = this; + + if (myViz.curInstr < myViz.curTrace.length - 1) { + // if there is a next breakpoint, then jump to it ... + if (myViz.sortedBreakpointsList.length > 0) { + var nextBreakpoint = myViz.findNextBreakpoint(); + if (nextBreakpoint != -1) + myViz.curInstr = nextBreakpoint; + else + myViz.curInstr += 1; // prevent "getting stuck" on a solitary breakpoint } else { - for (var i = 0; i < myViz.sortedBreakpointsList.length - 1; i++) { - var cur = myViz.sortedBreakpointsList[i]; - var next = myViz.sortedBreakpointsList[i+1]; - if (c < cur) - return cur; - if (cur <= c && c < next) // subtle - return next; - } + myViz.curInstr += 1; + } + myViz.updateOutput(); + return true; + } - // final edge case: - var lastElt = myViz.sortedBreakpointsList[myViz.sortedBreakpointsList.length - 1]; - return (lastElt > c) ? lastElt : -1; + return false; +} + +// returns true if action successfully taken +ExecutionVisualizer.prototype.stepBack = function() { + var myViz = this; + + if (myViz.curInstr > 0) { + // if there is a prev breakpoint, then jump to it ... + if (myViz.sortedBreakpointsList.length > 0) { + var prevBreakpoint = myViz.findPrevBreakpoint(); + if (prevBreakpoint != -1) + myViz.curInstr = prevBreakpoint; + else + myViz.curInstr -= 1; // prevent "getting stuck" on a solitary breakpoint + } + else { + myViz.curInstr -= 1; } + myViz.updateOutput(); + return true; } + return false; +} + +ExecutionVisualizer.prototype.setKeyboardBindings = function() { + var myViz = this; // to prevent confusion of 'this' inside of nested functions // Set keyboard event listeners for td#left_pane. Note that it must @@ -379,39 +424,13 @@ ExecutionVisualizer.prototype.setKeyboardBindings = function() { leftTablePane.keydown(function(k) { if (!myViz.keyStuckDown) { if (k.keyCode == 37) { // left arrow - if (myViz.curInstr > 0) { - // if there is a prev breakpoint, then jump to it ... - if (myViz.sortedBreakpointsList.length > 0) { - var prevBreakpoint = findPrevBreakpoint(myViz.curInstr); - if (prevBreakpoint != -1) - myViz.curInstr = prevBreakpoint; - else - myViz.curInstr -= 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint - } - else { - myViz.curInstr -= 1; - } - myViz.updateOutput(); - + if (myViz.stepBack()) { k.preventDefault(); // don't horizontally scroll the display myViz.keyStuckDown = true; } } else if (k.keyCode == 39) { // right arrow - if (myViz.curInstr < myViz.curTrace.length - 1) { - // if there is a next breakpoint, then jump to it ... - if (myViz.sortedBreakpointsList.length > 0) { - var nextBreakpoint = findNextBreakpoint(myViz.curInstr); - if (nextBreakpoint != -1) - myViz.curInstr = nextBreakpoint; - else - myViz.curInstr += 1; // prevent keyboard keys from "getting stuck" on a solitary breakpoint - } - else { - myViz.curInstr += 1; - } - myViz.updateOutput(); - + if (myViz.stepForward()) { k.preventDefault(); // don't horizontally scroll the display myViz.keyStuckDown = true; } From 03ff2037e8e094f455db805838b998b837d6386e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 17 Aug 2012 16:40:55 -0700 Subject: [PATCH 124/502] on mouseover of stack frame variables, highlight all pointer aliases --- PyTutorGAE/js/pytutor.js | 40 ++++++++++++++++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 9ee8bc5d1..7596d274f 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1532,6 +1532,34 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // Render globals and then stack frames using d3: + function highlightAliasedConnectors(d, i) { + // if this row contains a stack pointer, then highlight its arrow and + // ALL aliases that also point to the same heap object + var stackPtrId = $(this).find('div.stack_pointer').attr('id'); + if (stackPtrId) { + var foundTargetId = null; + myViz.jsPlumbInstance.select({source: stackPtrId}).each(function(c) {foundTargetId = c.targetId;}); + + // use foundTargetId to highlight ALL ALIASES + myViz.jsPlumbInstance.select().each(function(c) { + if (c.targetId == foundTargetId) { + c.setHover(true); + } + else { + c.setHover(false); + } + }); + } + } + + function unhighlightAllConnectors(d, i) { + myViz.jsPlumbInstance.select().each(function(c) { + c.setHover(false); + }); + } + + + // render all global variables IN THE ORDER they were created by the program, // in order to ensure continuity: @@ -1562,6 +1590,8 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // ENTER globalsD3.enter() .append('tr') + .on('mouseover', highlightAliasedConnectors) + .on('mouseout', unhighlightAllConnectors) .selectAll('td.stackFrameVar,td.stackFrameValue') .data(function(d, i){return d;}) /* map varname down both columns */ .enter() @@ -1606,7 +1636,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // make sure varname doesn't contain any weird // characters that are illegal for CSS ID's ... var varDivID = myViz.generateID('global__' + varnameToCssID(varname)); - $(this).append('
 
'); + $(this).append('
 
'); assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); @@ -1702,8 +1732,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable .enter() - .append('tr'); - + .append('tr') + .on('mouseover', highlightAliasedConnectors) + .on('mouseout', unhighlightAllConnectors); + var stackVarTableCells = stackVarTable .selectAll('td.stackFrameVar,td.stackFrameValue') @@ -1753,7 +1785,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // characters that are illegal for CSS ID's ... var varDivID = myViz.generateID(varnameToCssID(frame.unique_hash + '__' + varname)); - $(this).append('
 
'); + $(this).append('
 
'); assert(!connectionEndpointIDs.has(varDivID)); var heapObjID = myViz.generateID('heap_object_' + getRefID(val)); From 633d95aaf3e528e1a18ebb3ce62211e63196e4c0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 18 Aug 2012 22:57:46 -0700 Subject: [PATCH 125/502] convert tab into two spaces in code editor --- PyTutorGAE/js/opt-frontend.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index 8877c08a9..4f4abec76 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -56,7 +56,9 @@ $(document).ready(function() { pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { mode: 'python', lineNumbers: true, - tabSize: 2 + tabSize: 2, + // convert tab into two spaces: + extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} }); pyInputCodeMirror.setSize(null, '450px'); From 403b605604ed3c95163d66a1a67e05acd070e1d0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 18 Aug 2012 23:16:24 -0700 Subject: [PATCH 126/502] minor --- PyTutorGAE/css/pytutor.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 327be9b61..b7cdba610 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -643,3 +643,8 @@ div#submittedSolutionDisplay { /* necessary for CodeMirror line highlighting to work! */ .CodeMirror .errorLine { background: #F89D99 !important; } + +/* darken slider handle a bit */ +.ui-slider .ui-slider-handle { + border: 1px solid #999; +} From 30adc0e03b5552e6f1d9e2138949fdbc0773e216 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 16:03:59 -0700 Subject: [PATCH 127/502] first round of color makeover! --- PyTutorGAE/css/pytutor.css | 20 ++++-- .../ui-lightness/jquery-ui-1.8.21.custom.css | 7 +- PyTutorGAE/js/pytutor.js | 71 ++++++++++++++----- 3 files changed, 75 insertions(+), 23 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index b7cdba610..8206a1bb5 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -26,7 +26,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ - /* Color scheme ideas: @@ -251,7 +250,6 @@ button.medBtn { table.listTbl { border: 0px solid black; - background-color: #F5F798; border-spacing: 0px; } @@ -267,7 +265,6 @@ table.tupleTbl td.tupleHeader { } table.tupleTbl { - background-color: #F5F798; border-spacing: 0px; color: black; @@ -277,6 +274,11 @@ table.tupleTbl { } +table.listTbl, table.tupleTbl { + background-color: #ffffc6 /*#fcf08f*/ /*#f7fab9*/; +} + + table.listTbl td.listElt { border-bottom: 1px solid #555555; /* must match td.listHeader border */ border-left: 1px solid #555555; /* must match td.listHeader border */ @@ -444,7 +446,7 @@ div.stackFrame, div.zombieStackFrame { padding-right: 6px; padding-bottom: 4px; font-size: 10pt; - border-left: 2px solid #666666; + /*border-left: 2px solid #666666;*/ } div.zombieStackFrame { @@ -453,10 +455,16 @@ div.zombieStackFrame { } div.highlightedStackFrame { - background-color: #dddddd; - border-left: 2px solid #F15149; + background-color: #c4e9ef /*#e4faeb*/ /*#b0e1e9*/ /*#6b83c1*/ /*#8cd7d1*/ /*#4ac0b6*/ /*#b0e1e9*/ /*#3e8dad*/ /*#dddddd*/; + /*border-left: 2px solid #F15149;*/ } + +div.stackFrame, div.highlightedStackFrame { + border-left: 2px solid /*#d0d7d8*/ #a6b3b6 /*#7c8f94*/; +} + + div.stackFrameHeader { font-family: Andale mono, monospace; font-size: 10pt; diff --git a/PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css b/PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css index f7b3d09ef..1dd6d8af4 100644 --- a/PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css +++ b/PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css @@ -65,8 +65,13 @@ ----------------------------------*/ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } + +/* pgbovine - eliminate hover colors */ +/* .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } .ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +*/ + .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } .ui-widget :active { outline: none; } @@ -307,4 +312,4 @@ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; } \ No newline at end of file +.ui-slider-vertical .ui-slider-range-max { top: 0; } diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 7596d274f..918393604 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -72,9 +72,9 @@ function ExecutionVisualizer(domRootID, dat, params) { // cool, we can create a separate jsPlumb instance for each visualization: this.jsPlumbInstance = jsPlumb.getInstance({ Endpoint: ["Dot", {radius:3}], - EndpointStyles: [{fillStyle: darkBlue}, {fillstyle: null} /* make right endpoint invisible */], + EndpointStyles: [{fillStyle: connectorBaseColor}, {fillstyle: null} /* make right endpoint invisible */], Anchors: ["RightMiddle", "LeftMiddle"], - PaintStyle: {lineWidth:1, strokeStyle: darkBlue}, + PaintStyle: {lineWidth:1, strokeStyle: connectorBaseColor}, // bezier curve style: //Connector: [ "Bezier", { curviness:15 }], /* too much 'curviness' causes lines to run together */ @@ -83,8 +83,8 @@ function ExecutionVisualizer(domRootID, dat, params) { // state machine curve style: Connector: [ "StateMachine" ], Overlays: [[ "Arrow", { length: 10, width:7, foldback:0.55, location:1 }]], - EndpointHoverStyles: [{fillStyle: pinkish}, {fillstyle: null} /* make right endpoint invisible */], - HoverPaintStyle: {lineWidth:2, strokeStyle: pinkish}, + EndpointHoverStyles: [{fillStyle: connectorHighlightColor}, {fillstyle: null} /* make right endpoint invisible */], + HoverPaintStyle: {lineWidth: 1, strokeStyle: connectorHighlightColor}, }); @@ -782,7 +782,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { .style('background-color', function(d) { if (d.lineNumber == curEntry.line) { d.backgroundColor = hasError ? errorColor : - (isTerminated ? lightBlue : lightLineColor); + (isTerminated ? terminatedLineColor : highlightedLineColor); } else { d.backgroundColor = null; @@ -792,7 +792,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { }) .style('border-top', function(d) { if ((d.lineNumber == curEntry.line) && !hasError && !isTerminated) { - return '1px solid ' + errorColor; + return '1px solid ' + highlightedLineTopBorderColor; } else { // put a default white top border to keep space usage consistent @@ -1842,8 +1842,8 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // if this connector starts in the selected stack frame ... if (stackFrameDiv.attr('id') == frameID) { // then HIGHLIGHT IT! - c.setPaintStyle({lineWidth:1, strokeStyle: darkBlue}); - c.endpoints[0].setPaintStyle({fillStyle: darkBlue}); + c.setPaintStyle({lineWidth:1, strokeStyle: connectorBaseColor}); + c.endpoints[0].setPaintStyle({fillStyle: connectorBaseColor}); //c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible $(c.canvas).css("z-index", 1000); // ... and move it to the VERY FRONT @@ -1854,8 +1854,8 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { } else { // else unhighlight it - c.setPaintStyle({lineWidth:1, strokeStyle: lightGray}); - c.endpoints[0].setPaintStyle({fillStyle: lightGray}); + c.setPaintStyle({lineWidth:1, strokeStyle: connectorInactiveColor}); + c.endpoints[0].setPaintStyle({fillStyle: connectorInactiveColor}); //c.endpoints[1].setVisible(false, true, true); // JUST set right endpoint to be invisible $(c.canvas).css("z-index", 0); @@ -1894,23 +1894,62 @@ ExecutionVisualizer.prototype.redrawConnectors = function() { // Utilities + + /* colors - see pytutor.css */ var lightYellow = '#F5F798'; -var lightLineColor = '#FFFFCC'; + +//var highlightedLineColor = '#FFFFCC'; +//var highlightedLineColor = '#88e777'; +//var highlightedLineColor = '#9beb8d'; +//var highlightedLineColor = '#aeefa2'; +//var highlightedLineColor = '#c1f2b8'; +//var highlightedLineColor = '#c1f2b8'; +//var highlightedLineColor = '#d0d7d8'; +//var highlightedLineColor = '#b8f2cc'; +//var highlightedLineColor = '#e3faeb'; +var highlightedLineColor = '#cef6db'; + + +//var highlightedLineTopBorderColor = '#3b5998'; +var highlightedLineTopBorderColor = '#005583'; + +//var visitedLineColor = '#3D58A2'; +var visitedLineColor = highlightedLineTopBorderColor; + var errorColor = '#F87D76'; -var visitedLineColor = '#3D58A2'; -var lightGray = "#cccccc"; +//var terminatedLineColor = "#899CD1"; +//var terminatedLineColor = '#3e8dad'; +//var terminatedLineColor = '#4ac0b6'; +//var terminatedLineColor = '#77e69e'; +//var terminatedLineColor = '#8deaad'; +var terminatedLineColor = '#a2eebd'; + var darkBlue = "#3D58A2"; var medBlue = "#41507A"; var medLightBlue = "#6F89D1"; -var lightBlue = "#899CD1"; var pinkish = "#F15149"; var lightPink = "#F89D99"; var darkRed = "#9D1E18"; -var breakpointColor = pinkish; -var hoverBreakpointColor = medLightBlue; +//var connectorBaseColor = darkBlue; +//var connectorBaseColor = "#005583"; +//var connectorBaseColor = "#425c9d"; +//var connectorBaseColor = "#3b5998"; +var connectorBaseColor = '#005583'; + +//var connectorHighlightColor = pinkish; +var connectorHighlightColor = '#d03939'; + +var connectorInactiveColor = '#cccccc'; +//var connectorInactiveColor = '#ecf2f5'; + +//var breakpointColor = pinkish; +var breakpointColor = connectorHighlightColor; + +//var hoverBreakpointColor = medLightBlue; +var hoverBreakpointColor = connectorBaseColor; function assert(cond) { From 3a7bcbf9e49842cbdf30a2f3e50ecd8f77d95bf4 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 16:51:06 -0700 Subject: [PATCH 128/502] more goodies --- PyTutorGAE/css/pytutor.css | 33 +++++++++++++++++--------------- PyTutorGAE/embedding-examples.js | 10 +++++++--- PyTutorGAE/embedding-test.html | 4 ++-- 3 files changed, 27 insertions(+), 20 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 8206a1bb5..776b54b95 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -157,7 +157,8 @@ div#editCodeLinkDiv { #errorOutput { - background-color: #F87D76; + color: #d03939; + /*background-color: #F87D76;*/ font-size: 12pt; padding: 2px; line-height: 1.5em; @@ -239,12 +240,12 @@ button.medBtn { .retval, .returnWarning { font-size: 9pt; - color: #9d1e18; + /*color: #9d1e18;*/ } .returnWarning { padding-top: 10px; - color: #9d1e18; + /*color: #9d1e18;*/ } @@ -274,10 +275,18 @@ table.tupleTbl { } -table.listTbl, table.tupleTbl { +table.listTbl, table.tupleTbl, table.setTbl { background-color: #ffffc6 /*#fcf08f*/ /*#f7fab9*/; } +table.dictTbl, +table.dictTbl td.dictVal, +table.instTbl, +table.instTbl td.instVal { + background-color: #ffffc6 /*#fcf08f*/ /*#f7fab9*/; + /*background-color: #F5F798;*/ +} + table.listTbl td.listElt { border-bottom: 1px solid #555555; /* must match td.listHeader border */ @@ -309,7 +318,7 @@ table.tupleTbl td.tupleElt { table.setTbl { border: 1px solid #555555; - background-color: #F5F798; + /*background-color: #F5F798;*/ border-spacing: 0px; text-align: center; } @@ -331,13 +340,6 @@ table.instTbl td.instKey { background-color: white; } -table.dictTbl, -table.dictTbl td.dictVal, -table.instTbl, -table.instTbl td.instVal { - background-color: #F5F798; -} - table.dictTbl td.dictKey, table.classTbl td.classKey, @@ -451,17 +453,18 @@ div.stackFrame, div.zombieStackFrame { div.zombieStackFrame { border-left: 1px dotted #aaa; /* make zombie borders thinner */ - color: #aaa; + color: #c0c0c0 /*#aaa*/; } div.highlightedStackFrame { - background-color: #c4e9ef /*#e4faeb*/ /*#b0e1e9*/ /*#6b83c1*/ /*#8cd7d1*/ /*#4ac0b6*/ /*#b0e1e9*/ /*#3e8dad*/ /*#dddddd*/; + background-color: #a8d0df /*#c1ebf7*/ /*#8bc0d5*/ /*#afd1d7*/ /*#95c2ca*/ /*#aae4f4*/ /*#c4e9ef*/ /*#c1c7e5*/ /*#afcede*/ /*#9dc3d6*/ /*#b8f0ff - BAD*/ /*#e4faeb*/ /*#b0e1e9*/ /*#6b83c1*/ /*#8cd7d1*/ /*#4ac0b6*/ /*#b0e1e9*/ /*#3e8dad*/ /*#dddddd*/; /*border-left: 2px solid #F15149;*/ } + div.stackFrame, div.highlightedStackFrame { - border-left: 2px solid /*#d0d7d8*/ #a6b3b6 /*#7c8f94*/; + border-left: 2px solid #a6b3b6 /*#8a9b9f*/ /*#98a7ab*/ /*#d0d7d8*/ /*#7c8f94*/; } diff --git a/PyTutorGAE/embedding-examples.js b/PyTutorGAE/embedding-examples.js index 9236cb9b5..e8d5e6589 100644 --- a/PyTutorGAE/embedding-examples.js +++ b/PyTutorGAE/embedding-examples.js @@ -1,5 +1,9 @@ // Traces generated by generate_json_trace.py +var stuff = {"code": "# Philip's 10-minute intro to Python\n\n# numbers!\nage = 26\npi = 3.14159\n\n# strings!\ns = 'Rutherford Birchard Hayes'\ntokens = s.split()\nfirstName = tokens[0]\nmiddleName = tokens[1]\nlastName = tokens[2]\ns2 = firstName + ' ' + middleName + ' ' + lastName\n\n# 'if' statement - indentation matters!\nif (s == s2):\n print 'yes!!!'\nelse:\n print 'nooooooo'\n\n# list (mutable sequence)\nbeatles = ['John', 'Paul', 'George']\nbeatles.append('Ringo')\n\n# 'for' loop - indentation matters!\nfor b in beatles:\n print 'Hello', b\n\n# tuple (immutable sequence)\nages = (18, 21, 28, 21, 22, 18, 19, 34, 9)\n\n# set (no order, no duplicates)\nuniqueAges = set(ages)\nuniqueAges.add(18) # already in set, no effect\nuniqueAges.remove(21)\n\n# no guaranteed order when iterating over a set\nfor thisAge in uniqueAges:\n print thisAge\n\n# testing set membership\nif 18 in uniqueAges:\n print 'There is an 18-year-old present!'\n\n# sorting\nbeatles.sort() # in-place\norderedUniqueAges = sorted(uniqueAges) # new list\n\n# dict - mapping unique keys to values\nnetWorth = {}\nnetWorth['Donald Trump'] = 3000000000\nnetWorth['Bill Gates'] = 58000000000\nnetWorth['Tom Cruise'] = 40000000\nnetWorth['Joe Postdoc'] = 20000\n\n# iterating over key-value pairs:\nfor (person, worth) in netWorth.iteritems():\n if worth < 1000000:\n print 'haha', person, 'is not a millionaire'\n\n# testing dict membership\nif 'Tom Cruise' in netWorth:\n print 'show me the money!'\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 4, "event": "step_line"}, {"ordered_globals": ["age"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"age": 26}, "heap": {}, "line": 5, "event": "step_line"}, {"ordered_globals": ["age", "pi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"age": 26, "pi": 3.14159}, "heap": {}, "line": 8, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"age": 26, "pi": 3.14159, "s": "Rutherford Birchard Hayes"}, "heap": {}, "line": 9, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"tokens": ["REF", 1], "age": 26, "pi": 3.14159, "s": "Rutherford Birchard Hayes"}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 10, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"tokens": ["REF", 1], "age": 26, "pi": 3.14159, "s": "Rutherford Birchard Hayes", "firstName": "Rutherford"}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 17, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George"]}, "line": 23, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 30, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9]}, "line": 33, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 21, 22, 28]}, "line": 34, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 21, 22, 28]}, "line": 35, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 42, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 43, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 46, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 47, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "orderedUniqueAges": ["REF", 5], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "uniqueAges": ["REF", 4], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34]}, "line": 50, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT"]}, "line": 51, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000]]}, "line": 52, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000]]}, "line": 53, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Tom Cruise", 40000000]]}, "line": 54, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Donald Trump", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 3000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Donald Trump", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 3000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Bill Gates", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 58000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Bill Gates", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 58000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Joe Postdoc", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 20000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Joe Postdoc", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 20000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 59, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Joe Postdoc", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 20000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 62, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 63, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\nshow me the money!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 63, "event": "return"}]} + +var closure4 = {"code": "def f(x):\n def g(y):\n return x + y\n return g\n\ng1 = f(1)\ng2 = f(2)\ng1(3) + g2(4)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"x": 1}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1", "ordered_varnames": ["x"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null]}, "line": 1, "event": "call"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"x": 1}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1", "ordered_varnames": ["x"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"x": 1, "g": ["REF", 2]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1_p", "ordered_varnames": ["x", "g"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1_p", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 4, "event": "return"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"x": 2}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2", "ordered_varnames": ["x"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 1, "event": "call"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"x": 2}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2", "ordered_varnames": ["x"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"x": 2, "g": ["REF", 3]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2_p", "ordered_varnames": ["x", "g"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2_p", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 4, "event": "return"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 3, "encoded_locals": {"y": 3}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "g_f3", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 2, "event": "call"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 3, "encoded_locals": {"y": 3}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "g_f3", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 3, "encoded_locals": {"y": 3, "__return__": 4}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "g_f3", "ordered_varnames": ["y", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "return"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 4, "encoded_locals": {"y": 4}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [2], "unique_hash": "g_f4", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 2, "event": "call"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 4, "encoded_locals": {"y": 4}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [2], "unique_hash": "g_f4", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 4, "encoded_locals": {"y": 4, "__return__": 6}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [2], "unique_hash": "g_f4", "ordered_varnames": ["y", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "return"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 8, "event": "return"}]} + var aliasing = {"code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print myLst\n\nfoo(x)\nfoo(z)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 2], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 2], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 2], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3, 4]}, "line": 10, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3, 4, 5]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 14, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 17, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null]}, "line": 21, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 24, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 17, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 21, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 25, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 17, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 21, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "z": ["REF", 4], "bar": ["REF", 6], "foo": ["REF", 5]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 25, "event": "return"}]}; var aliasing5 = {"code": "x = None\nfor i in range(5, 0, -1):\n x = (i, x)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": null}, "heap": {}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 5, "x": null}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 5, "x": ["REF", 1]}, "heap": {"1": ["TUPLE", 5, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 4, "x": ["REF", 1]}, "heap": {"1": ["TUPLE", 5, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 4, "x": ["REF", 2]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 3, "x": ["REF", 2]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 3, "x": ["REF", 3]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 2, "x": ["REF", 3]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 2, "x": ["REF", 4]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 4]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 5]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]], "5": ["TUPLE", 1, ["REF", 4]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 5]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]], "5": ["TUPLE", 1, ["REF", 4]]}, "line": 2, "event": "return"}]}; @@ -7,18 +11,18 @@ var aliasing5 = {"code": "x = None\nfor i in range(5, 0, -1):\n x = (i, x)\n", var hanoi = {"code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "__return__": null, "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "__return__": null, "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 16, "event": "return"}]}; -var aliasingViz = null; +var stuffViz = null; var aliasing5Viz = null; var hanoiViz = null; $(document).ready(function() { - aliasingViz = new ExecutionVisualizer('aliasingDiv', aliasing, {hideOutput: true, codeDivHeight: 150, editCodeBaseURL: 'http://localhost:8080/'}); + stuffViz = new ExecutionVisualizer('closure4Div', stuff, {hideOutput: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); aliasing5Viz = new ExecutionVisualizer('aliasing5Div', aliasing5, {hideOutput: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); hanoiViz = new ExecutionVisualizer('hanoiDiv', hanoi, {startingInstruction: 45, hideOutput: true, editCodeBaseURL: 'http://localhost:8080/'}); // redraw connector arrows on window resize $(window).resize(function() { - aliasingViz.redrawConnectors(); + stuffViz.redrawConnectors(); aliasing5Viz.redrawConnectors(); hanoiViz.redrawConnectors(); }); diff --git a/PyTutorGAE/embedding-test.html b/PyTutorGAE/embedding-test.html index de203486f..769e628b4 100644 --- a/PyTutorGAE/embedding-test.html +++ b/PyTutorGAE/embedding-test.html @@ -23,9 +23,9 @@ -

Aliasing:

+

Closures:

-
+

Aliasing 5:

From 9dd6590874ed435a6b8dbef68a29fb2682c67d11 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 16:53:26 -0700 Subject: [PATCH 129/502] aoooooga! --- PyTutorGAE/css/pytutor.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 776b54b95..1769fc66d 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -457,7 +457,7 @@ div.zombieStackFrame { } div.highlightedStackFrame { - background-color: #a8d0df /*#c1ebf7*/ /*#8bc0d5*/ /*#afd1d7*/ /*#95c2ca*/ /*#aae4f4*/ /*#c4e9ef*/ /*#c1c7e5*/ /*#afcede*/ /*#9dc3d6*/ /*#b8f0ff - BAD*/ /*#e4faeb*/ /*#b0e1e9*/ /*#6b83c1*/ /*#8cd7d1*/ /*#4ac0b6*/ /*#b0e1e9*/ /*#3e8dad*/ /*#dddddd*/; + background-color: #c5dfea /*#a8d0df*/ /*#c1ebf7*/ /*#8bc0d5*/ /*#afd1d7*/ /*#95c2ca*/ /*#aae4f4*/ /*#c4e9ef*/ /*#c1c7e5*/ /*#afcede*/ /*#9dc3d6*/ /*#b8f0ff - BAD*/ /*#e4faeb*/ /*#b0e1e9*/ /*#6b83c1*/ /*#8cd7d1*/ /*#4ac0b6*/ /*#b0e1e9*/ /*#3e8dad*/ /*#dddddd*/; /*border-left: 2px solid #F15149;*/ } From 348df7e162728a16a0bd8e7a58f572e7234598ba Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 17:13:40 -0700 Subject: [PATCH 130/502] peachly --- PyTutorGAE/css/pytutor.css | 22 ++++++++++------------ PyTutorGAE/embedding-examples.js | 1 + 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 1769fc66d..b36b71b2e 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -279,14 +279,6 @@ table.listTbl, table.tupleTbl, table.setTbl { background-color: #ffffc6 /*#fcf08f*/ /*#f7fab9*/; } -table.dictTbl, -table.dictTbl td.dictVal, -table.instTbl, -table.instTbl td.instVal { - background-color: #ffffc6 /*#fcf08f*/ /*#f7fab9*/; - /*background-color: #F5F798;*/ -} - table.listTbl td.listElt { border-bottom: 1px solid #555555; /* must match td.listHeader border */ @@ -329,15 +321,20 @@ table.setTbl td.setElt { table.dictTbl { - border: 1px solid #555555; - border-collapse: collapse; + /*border: 1px solid #555555;*/ + /*border-collapse: collapse;*/ border-spacing: 1px; } table.dictTbl td.dictKey, table.instTbl td.instKey { - background-color: white; + background-color: #faebbf /*#fde9bb*/ /*#fce1a2*/ /*#ffff78*/ /*#ffffc6*/; +} + +table.dictTbl td.dictVal, +table.instTbl td.instVal { + background-color: #ffffc6; } @@ -379,11 +376,12 @@ table.classTbl td.classVal { table.instTbl { border-collapse: collapse; border-spacing: 1px; + border: 1px #555555 solid; } table.dictTbl tr.dictEntry, table.instTbl tr.instEntry { - border: 1px #555555 solid; + /*border: 1px #555555 solid;*/ } diff --git a/PyTutorGAE/embedding-examples.js b/PyTutorGAE/embedding-examples.js index e8d5e6589..6e1053553 100644 --- a/PyTutorGAE/embedding-examples.js +++ b/PyTutorGAE/embedding-examples.js @@ -2,6 +2,7 @@ var stuff = {"code": "# Philip's 10-minute intro to Python\n\n# numbers!\nage = 26\npi = 3.14159\n\n# strings!\ns = 'Rutherford Birchard Hayes'\ntokens = s.split()\nfirstName = tokens[0]\nmiddleName = tokens[1]\nlastName = tokens[2]\ns2 = firstName + ' ' + middleName + ' ' + lastName\n\n# 'if' statement - indentation matters!\nif (s == s2):\n print 'yes!!!'\nelse:\n print 'nooooooo'\n\n# list (mutable sequence)\nbeatles = ['John', 'Paul', 'George']\nbeatles.append('Ringo')\n\n# 'for' loop - indentation matters!\nfor b in beatles:\n print 'Hello', b\n\n# tuple (immutable sequence)\nages = (18, 21, 28, 21, 22, 18, 19, 34, 9)\n\n# set (no order, no duplicates)\nuniqueAges = set(ages)\nuniqueAges.add(18) # already in set, no effect\nuniqueAges.remove(21)\n\n# no guaranteed order when iterating over a set\nfor thisAge in uniqueAges:\n print thisAge\n\n# testing set membership\nif 18 in uniqueAges:\n print 'There is an 18-year-old present!'\n\n# sorting\nbeatles.sort() # in-place\norderedUniqueAges = sorted(uniqueAges) # new list\n\n# dict - mapping unique keys to values\nnetWorth = {}\nnetWorth['Donald Trump'] = 3000000000\nnetWorth['Bill Gates'] = 58000000000\nnetWorth['Tom Cruise'] = 40000000\nnetWorth['Joe Postdoc'] = 20000\n\n# iterating over key-value pairs:\nfor (person, worth) in netWorth.iteritems():\n if worth < 1000000:\n print 'haha', person, 'is not a millionaire'\n\n# testing dict membership\nif 'Tom Cruise' in netWorth:\n print 'show me the money!'\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 4, "event": "step_line"}, {"ordered_globals": ["age"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"age": 26}, "heap": {}, "line": 5, "event": "step_line"}, {"ordered_globals": ["age", "pi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"age": 26, "pi": 3.14159}, "heap": {}, "line": 8, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"age": 26, "pi": 3.14159, "s": "Rutherford Birchard Hayes"}, "heap": {}, "line": 9, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"tokens": ["REF", 1], "age": 26, "pi": 3.14159, "s": "Rutherford Birchard Hayes"}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 10, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"tokens": ["REF", 1], "age": 26, "pi": 3.14159, "s": "Rutherford Birchard Hayes", "firstName": "Rutherford"}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 17, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George"]}, "line": 23, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 30, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9]}, "line": 33, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 21, 22, 28]}, "line": 34, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 21, 22, 28]}, "line": 35, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 42, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 43, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 46, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 47, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "orderedUniqueAges": ["REF", 5], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "uniqueAges": ["REF", 4], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34]}, "line": 50, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT"]}, "line": 51, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000]]}, "line": 52, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000]]}, "line": 53, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Tom Cruise", 40000000]]}, "line": 54, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Donald Trump", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 3000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Donald Trump", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 3000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Bill Gates", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 58000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Bill Gates", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 58000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Joe Postdoc", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 20000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Joe Postdoc", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 20000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 59, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Joe Postdoc", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 20000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 62, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 63, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\nshow me the money!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 63, "event": "return"}]} +var stuff = {"code": "# Object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601()\nprint pat.course\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint pat.building\npat.building = 32\nprint pat.building\n\nprint pat.salutation()\nprint Staff601.salutation(pat)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 5, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": []}], "globals": {}, "heap": {}, "line": 5, "event": "call"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": []}], "globals": {}, "heap": {}, "line": 5, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": []}], "globals": {}, "heap": {}, "line": 6, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"course": "6.01"}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": ["course"]}], "globals": {}, "heap": {}, "line": 7, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01"}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": ["building", "course"]}], "globals": {}, "heap": {}, "line": 8, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "room": 501}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": ["building", "course", "room"]}], "globals": {}, "heap": {}, "line": 10, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": true, "is_parent": true, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]]]}, "line": 10, "event": "return"}, {"ordered_globals": ["Staff601"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601"]}, "line": 14, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["name", "Pat"]]}, "line": 17, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["name", "Pat"]]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["name", "Pat"], ["role", "Professor"]]}, "line": 20, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["name", "Pat"], ["role", "Professor"]]}, "line": 21, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 24, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 2, "encoded_locals": {"self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f2", "ordered_varnames": ["self"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 10, "event": "call"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 2, "encoded_locals": {"self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f2", "ordered_varnames": ["self"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": "Professor Pat", "self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f2", "ordered_varnames": ["self", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 11, "event": "return"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 25, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 3, "encoded_locals": {"self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f3", "ordered_varnames": ["self"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 10, "event": "call"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 3, "encoded_locals": {"self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f3", "ordered_varnames": ["self"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 3, "encoded_locals": {"__return__": "Professor Pat", "self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f3", "ordered_varnames": ["self", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 11, "event": "return"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\nProfessor Pat\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 25, "event": "return"}]} var closure4 = {"code": "def f(x):\n def g(y):\n return x + y\n return g\n\ng1 = f(1)\ng2 = f(2)\ng1(3) + g2(4)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"x": 1}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1", "ordered_varnames": ["x"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null]}, "line": 1, "event": "call"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"x": 1}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1", "ordered_varnames": ["x"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"x": 1, "g": ["REF", 2]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1_p", "ordered_varnames": ["x", "g"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1_p", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 4, "event": "return"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"x": 2}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2", "ordered_varnames": ["x"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 1, "event": "call"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"x": 2}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2", "ordered_varnames": ["x"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"x": 2, "g": ["REF", 3]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2_p", "ordered_varnames": ["x", "g"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2_p", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 4, "event": "return"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 3, "encoded_locals": {"y": 3}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "g_f3", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 2, "event": "call"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 3, "encoded_locals": {"y": 3}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "g_f3", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 3, "encoded_locals": {"y": 3, "__return__": 4}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "g_f3", "ordered_varnames": ["y", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "return"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 4, "encoded_locals": {"y": 4}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [2], "unique_hash": "g_f4", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 2, "event": "call"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 4, "encoded_locals": {"y": 4}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [2], "unique_hash": "g_f4", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 4, "encoded_locals": {"y": 4, "__return__": 6}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [2], "unique_hash": "g_f4", "ordered_varnames": ["y", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "return"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 8, "event": "return"}]} var aliasing = {"code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print myLst\n\nfoo(x)\nfoo(z)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 2], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 2], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 2], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3, 4]}, "line": 10, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3, 4, 5]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 14, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 17, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null]}, "line": 21, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 24, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 17, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 21, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 25, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 17, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 21, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "z": ["REF", 4], "bar": ["REF", 6], "foo": ["REF", 5]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 25, "event": "return"}]}; From 3d9b35df0ba8893c2efef414c1c06fd12e04cd1a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 17:25:47 -0700 Subject: [PATCH 131/502] aaoga2 --- PyTutorGAE/css/pytutor.css | 62 +++++++++++++++----------------------- 1 file changed, 25 insertions(+), 37 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index b36b71b2e..3d74cc86a 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -328,19 +328,21 @@ table.dictTbl { table.dictTbl td.dictKey, -table.instTbl td.instKey { +table.instTbl td.instKey, +table.classTbl td.classKey { background-color: #faebbf /*#fde9bb*/ /*#fce1a2*/ /*#ffff78*/ /*#ffffc6*/; } table.dictTbl td.dictVal, -table.instTbl td.instVal { +table.instTbl td.instVal, +table.classTbl td.classVal { background-color: #ffffc6; } table.dictTbl td.dictKey, -table.classTbl td.classKey, -table.instTbl td.instKey { +table.instTbl td.instKey, +table.classTbl td.classKey { padding-top: 8px; padding-bottom: 8px; padding-left: 8px; @@ -350,54 +352,40 @@ table.instTbl td.instKey { vertical-align: center; } -table.classTbl td.classKey { - color: #dddddd; -} - -table.classTbl { - background-color: #dddddd; - border-collapse: collapse; - border-spacing: 1px; +table.dictTbl td.dictVal, +table.instTbl td.instVal, +table.classTbl td.classVal { + padding-top: 10px; + padding-bottom: 10px; + padding-right: 10px; + padding-left: 8px; + vertical-align: center; } -table.classTbl tr.classEntry { - border: 1px #777777 solid; -} -table.classTbl td.classKey { - background-color: #222222; +table.classTbl td, +table.instTbl td { + border-bottom: 1px #888 solid; } -table.classTbl td.classVal { - background-color: #ffffff; +table.classTbl td.classVal, +table.instTbl td.instVal { + border-left: 1px #888 solid; } - +table.classTbl, table.instTbl { - border-collapse: collapse; border-spacing: 1px; - border: 1px #555555 solid; -} - -table.dictTbl tr.dictEntry, -table.instTbl tr.instEntry { + /*border-collapse: collapse;*/ /*border: 1px #555555 solid;*/ } - -table.dictTbl td.dictVal, -table.classTbl td.classVal, -table.instTbl td.instVal { - padding-top: 10px; - padding-bottom: 10px; - padding-right: 10px; - padding-left: 8px; - vertical-align: center; +table.classTbl { + border-collapse: collapse; + border: 1px #888 solid; } - - .typeLabel { font-size: 8pt; color: #222222; From c0fe140676611736a45b14eb130420eafbb24581 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 17:31:00 -0700 Subject: [PATCH 132/502] bah --- PyTutorGAE/css/pytutor.css | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 3d74cc86a..8217905a8 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -343,10 +343,10 @@ table.classTbl td.classVal { table.dictTbl td.dictKey, table.instTbl td.instKey, table.classTbl td.classKey { - padding-top: 8px; - padding-bottom: 8px; - padding-left: 8px; - padding-right: 8px; + padding-top: 15px; + padding-bottom: 5px; + padding-left: 12px; + padding-right: 4px; text-align: right; vertical-align: center; @@ -355,14 +355,14 @@ table.classTbl td.classKey { table.dictTbl td.dictVal, table.instTbl td.instVal, table.classTbl td.classVal { - padding-top: 10px; - padding-bottom: 10px; - padding-right: 10px; - padding-left: 8px; + padding-top: 15px; + padding-bottom: 5px; + padding-right: 12px; + padding-left: 4px; + vertical-align: center; } - table.classTbl td, table.instTbl td { border-bottom: 1px #888 solid; From de9dbcdfa1172f8be8b545dbf6a3b47fc3d2d04d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 17:34:34 -0700 Subject: [PATCH 133/502] final touches on color cleanup --- PyTutorGAE/css/pytutor.css | 9 --------- 1 file changed, 9 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 8217905a8..99ce26059 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -206,7 +206,6 @@ button.medBtn { /* Python data value rendering */ .nullObj { - color: #555555; font-size: 9pt; } @@ -229,12 +228,10 @@ button.medBtn { .customObj { font-family: Andale mono, monospace; - /*font-style: italic;*/ } .funcObj { font-family: Andale mono, monospace; - /*font-style: italic;*/ } .retval, @@ -243,12 +240,6 @@ button.medBtn { /*color: #9d1e18;*/ } -.returnWarning { - padding-top: 10px; - /*color: #9d1e18;*/ -} - - table.listTbl { border: 0px solid black; border-spacing: 0px; From 9a5c47e56d850806ee79cb2bc440248829cf735b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 18:26:03 -0700 Subject: [PATCH 134/502] minor --- PyTutorGAE/embedding-examples.js | 2 +- PyTutorGAE/embedding-test.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/embedding-examples.js b/PyTutorGAE/embedding-examples.js index 6e1053553..d03022cd8 100644 --- a/PyTutorGAE/embedding-examples.js +++ b/PyTutorGAE/embedding-examples.js @@ -17,7 +17,7 @@ var aliasing5Viz = null; var hanoiViz = null; $(document).ready(function() { - stuffViz = new ExecutionVisualizer('closure4Div', stuff, {hideOutput: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); + stuffViz = new ExecutionVisualizer('stuffDiv', stuff, {hideOutput: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); aliasing5Viz = new ExecutionVisualizer('aliasing5Div', aliasing5, {hideOutput: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); hanoiViz = new ExecutionVisualizer('hanoiDiv', hanoi, {startingInstruction: 45, hideOutput: true, editCodeBaseURL: 'http://localhost:8080/'}); diff --git a/PyTutorGAE/embedding-test.html b/PyTutorGAE/embedding-test.html index 769e628b4..f6fbd56d8 100644 --- a/PyTutorGAE/embedding-test.html +++ b/PyTutorGAE/embedding-test.html @@ -23,9 +23,9 @@ -

Closures:

+

Stuff:

-
+

Aliasing 5:

From ba78a06d3a975b191a4cbbc3908997d4f2418c6e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 18:47:30 -0700 Subject: [PATCH 135/502] css cleanup --- PyTutorGAE/css/pytutor.css | 112 ++++++++----------------------------- 1 file changed, 22 insertions(+), 90 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 99ce26059..6dc8a1a50 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -26,43 +26,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* -Color scheme ideas: - -Current scheme: pastel blue and yellow with a hint of red: - http://colorschemedesigner.com/#3N32mmmuew0w0 - -Primary Color: - 3D58A2 41507A 142B69 6F89D1 899CD1 -Secondary Color A: - EBF048 B1B456 989C17 F4F776 F5F798 -Secondary Color B: - F15149 B55B56 9D1E18 F87D76 F89D99 - - -Alternates: - -pastel green, yellow, and purple: - http://colorschemedesigner.com/#2P32PbX--w0w0 - - Primary Color: - A0FFA0 8ABF8A 34A634 B8FFB8 CBFFCB - Secondary Color A: - FFEFA0 BFB68A A69234 FFF3B8 FFF6CB - Secondary Color B: - BFABFF 9B90BF 5237A6 CFC0FF DCD1FF - - -pastel blue and yellow: - http://colorschemedesigner.com/#0W21TjruJw0w0 - -Primary Color: - F5C260 B89B64 9F741F FAD388 FADEA6 -Complementary Color: - 4A67A4 49597B 18326A 7C97D1 93A7D1 - - -*/ +/* Most recent color scheme redesign: 2012-08-19 */ table.visualizer { font-family: verdana, arial, helvetica, sans-serif; @@ -203,12 +167,13 @@ button.medBtn { } -/* Python data value rendering */ +/* Rendering of primitive types */ .nullObj { - font-size: 9pt; + font-size: 8pt; } +/* .numberObj { font-size: 10pt; } @@ -216,36 +181,29 @@ button.medBtn { .boolObj { font-size: 10pt; } +*/ -.stringObj { - /* don't add a color since strings need to be rendered against various backgrounds */ +.stringObj, .customObj, .funcObj { font-family: Andale mono, monospace; - font-size: 10pt; } -.keyObj { +.retval { + font-size: 9pt; } -.customObj { - font-family: Andale mono, monospace; -} -.funcObj { - font-family: Andale mono, monospace; -} +/* Rendering of basic compound types */ -.retval, -.returnWarning { - font-size: 9pt; - /*color: #9d1e18;*/ +table.listTbl, table.tupleTbl, table.setTbl { + background-color: #ffffc6; } + table.listTbl { border: 0px solid black; border-spacing: 0px; } - table.listTbl td.listHeader, table.tupleTbl td.tupleHeader { padding-left: 5px; @@ -266,11 +224,6 @@ table.tupleTbl { } -table.listTbl, table.tupleTbl, table.setTbl { - background-color: #ffffc6 /*#fcf08f*/ /*#f7fab9*/; -} - - table.listTbl td.listElt { border-bottom: 1px solid #555555; /* must match td.listHeader border */ border-left: 1px solid #555555; /* must match td.listHeader border */ @@ -301,7 +254,6 @@ table.tupleTbl td.tupleElt { table.setTbl { border: 1px solid #555555; - /*background-color: #F5F798;*/ border-spacing: 0px; text-align: center; } @@ -311,17 +263,17 @@ table.setTbl td.setElt { } -table.dictTbl { - /*border: 1px solid #555555;*/ - /*border-collapse: collapse;*/ +table.dictTbl, +table.instTbl, +table.classTbl { border-spacing: 1px; + /*border-collapse: collapse;*/ } - table.dictTbl td.dictKey, table.instTbl td.instKey, table.classTbl td.classKey { - background-color: #faebbf /*#fde9bb*/ /*#fce1a2*/ /*#ffff78*/ /*#ffffc6*/; + background-color: #faebbf; } table.dictTbl td.dictVal, @@ -354,6 +306,7 @@ table.classTbl td.classVal { vertical-align: center; } + table.classTbl td, table.instTbl td { border-bottom: 1px #888 solid; @@ -364,13 +317,6 @@ table.instTbl td.instVal { border-left: 1px #888 solid; } -table.classTbl, -table.instTbl { - border-spacing: 1px; - /*border-collapse: collapse;*/ - /*border: 1px #555555 solid;*/ -} - table.classTbl { border-collapse: collapse; border: 1px #888 solid; @@ -383,15 +329,6 @@ table.classTbl { margin-bottom: 1px; } -td.dictKey .typeLabel { - color: #eeeeee; -} - -.aliasLabel { - font-size: 10pt; - color: #222222; -} - #footer { color: #666666; font-size: 9pt; @@ -425,23 +362,19 @@ div.stackFrame, div.zombieStackFrame { padding-right: 6px; padding-bottom: 4px; font-size: 10pt; - /*border-left: 2px solid #666666;*/ } div.zombieStackFrame { - border-left: 1px dotted #aaa; /* make zombie borders thinner */ - color: #c0c0c0 /*#aaa*/; + border-left: 1px dotted #aaa; + color: #c0c0c0; } div.highlightedStackFrame { - background-color: #c5dfea /*#a8d0df*/ /*#c1ebf7*/ /*#8bc0d5*/ /*#afd1d7*/ /*#95c2ca*/ /*#aae4f4*/ /*#c4e9ef*/ /*#c1c7e5*/ /*#afcede*/ /*#9dc3d6*/ /*#b8f0ff - BAD*/ /*#e4faeb*/ /*#b0e1e9*/ /*#6b83c1*/ /*#8cd7d1*/ /*#4ac0b6*/ /*#b0e1e9*/ /*#3e8dad*/ /*#dddddd*/; - /*border-left: 2px solid #F15149;*/ + background-color: #c5dfea; } - - div.stackFrame, div.highlightedStackFrame { - border-left: 2px solid #a6b3b6 /*#8a9b9f*/ /*#98a7ab*/ /*#d0d7d8*/ /*#7c8f94*/; + border-left: 2px solid #a6b3b6; } @@ -611,7 +544,6 @@ div#submittedSolutionDisplay { #executionSlider { - /*width: 900px;*/ width: 500px; margin-top: 10px; margin-bottom: 5px; From e77cab53642002fcf58569173cc06d1d51360433 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 19:00:21 -0700 Subject: [PATCH 136/502] js color cleanups --- PyTutorGAE/js/pytutor.js | 49 +++++----------------------------------- 1 file changed, 6 insertions(+), 43 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 918393604..331557cdb 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1894,61 +1894,24 @@ ExecutionVisualizer.prototype.redrawConnectors = function() { // Utilities +/* colors - see pytutor.css for more colors */ - -/* colors - see pytutor.css */ -var lightYellow = '#F5F798'; - -//var highlightedLineColor = '#FFFFCC'; -//var highlightedLineColor = '#88e777'; -//var highlightedLineColor = '#9beb8d'; -//var highlightedLineColor = '#aeefa2'; -//var highlightedLineColor = '#c1f2b8'; -//var highlightedLineColor = '#c1f2b8'; -//var highlightedLineColor = '#d0d7d8'; -//var highlightedLineColor = '#b8f2cc'; -//var highlightedLineColor = '#e3faeb'; var highlightedLineColor = '#cef6db'; - - -//var highlightedLineTopBorderColor = '#3b5998'; var highlightedLineTopBorderColor = '#005583'; -//var visitedLineColor = '#3D58A2'; var visitedLineColor = highlightedLineTopBorderColor; -var errorColor = '#F87D76'; - -//var terminatedLineColor = "#899CD1"; -//var terminatedLineColor = '#3e8dad'; -//var terminatedLineColor = '#4ac0b6'; -//var terminatedLineColor = '#77e69e'; -//var terminatedLineColor = '#8deaad'; var terminatedLineColor = '#a2eebd'; -var darkBlue = "#3D58A2"; -var medBlue = "#41507A"; -var medLightBlue = "#6F89D1"; -var pinkish = "#F15149"; -var lightPink = "#F89D99"; -var darkRed = "#9D1E18"; - -//var connectorBaseColor = darkBlue; -//var connectorBaseColor = "#005583"; -//var connectorBaseColor = "#425c9d"; -//var connectorBaseColor = "#3b5998"; -var connectorBaseColor = '#005583'; - -//var connectorHighlightColor = pinkish; -var connectorHighlightColor = '#d03939'; +var darkRed = '#d03939'; +var connectorBaseColor = '#005583'; +var connectorHighlightColor = darkRed; var connectorInactiveColor = '#cccccc'; -//var connectorInactiveColor = '#ecf2f5'; -//var breakpointColor = pinkish; -var breakpointColor = connectorHighlightColor; +var errorColor = darkRed; -//var hoverBreakpointColor = medLightBlue; +var breakpointColor = darkRed; var hoverBreakpointColor = connectorBaseColor; From 37bac28a5d42a1a040fd477945dcbb6189c48be1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 19:21:28 -0700 Subject: [PATCH 137/502] small tweak to hover breakpoint displays --- PyTutorGAE/js/pytutor.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 331557cdb..d4fcc513b 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -543,7 +543,10 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { myViz.hoverBreakpoints = d3.map(); $.each(exePts, function(i, ep) { - myViz.hoverBreakpoints.set(ep, 1); + // don't add redundant entries + if (!myViz.breakpoints.has(ep)) { + myViz.hoverBreakpoints.set(ep, 1); + } }); addToBreakpoints(exePts); @@ -562,6 +565,11 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { addToBreakpoints(exePts); + // remove from hoverBreakpoints so that slider display immediately changes color + $.each(exePts, function(i, ep) { + myViz.hoverBreakpoints.remove(ep); + }); + d3.select(t.parentNode).select('td.lineNo').style('color', breakpointColor); d3.select(t.parentNode).select('td.lineNo').style('font-weight', 'bold'); From c6ac9d09e7d9453535c8edd54bdfe663693690e1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 19:26:00 -0700 Subject: [PATCH 138/502] tiny color change --- PyTutorGAE/css/pytutor.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 6dc8a1a50..15ee01d7a 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -366,7 +366,8 @@ div.stackFrame, div.zombieStackFrame { div.zombieStackFrame { border-left: 1px dotted #aaa; - color: #c0c0c0; + /*color: #c0c0c0;*/ + color: #b0b0b0; } div.highlightedStackFrame { From c2dc5245d811482ab53976b02bdc79cb5af03290 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 21:56:27 -0700 Subject: [PATCH 139/502] more minor css adjustments --- PyTutorGAE/css/pytutor.css | 4 ++-- PyTutorGAE/js/pytutor.js | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 15ee01d7a..d1f1ff459 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -288,7 +288,7 @@ table.instTbl td.instKey, table.classTbl td.classKey { padding-top: 15px; padding-bottom: 5px; - padding-left: 12px; + padding-left: 10px; padding-right: 4px; text-align: right; @@ -300,7 +300,7 @@ table.instTbl td.instVal, table.classTbl td.classVal { padding-top: 15px; padding-bottom: 5px; - padding-right: 12px; + padding-right: 10px; padding-left: 4px; vertical-align: center; diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index d4fcc513b..0385fc3a1 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1552,6 +1552,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { myViz.jsPlumbInstance.select().each(function(c) { if (c.targetId == foundTargetId) { c.setHover(true); + $(c.canvas).css("z-index", 2000); // ... and move it to the VERY FRONT } else { c.setHover(false); @@ -1904,7 +1905,7 @@ ExecutionVisualizer.prototype.redrawConnectors = function() { /* colors - see pytutor.css for more colors */ -var highlightedLineColor = '#cef6db'; +var highlightedLineColor = '#e4faeb'; var highlightedLineTopBorderColor = '#005583'; var visitedLineColor = highlightedLineTopBorderColor; From bcc5d12a0b718732f3ae9b819bccdb3f8fcdb7a1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 19 Aug 2012 22:17:02 -0700 Subject: [PATCH 140/502] more css tweaks --- PyTutorGAE/css/pytutor.css | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index d1f1ff459..e5bfe4ccb 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -206,10 +206,11 @@ table.listTbl { table.listTbl td.listHeader, table.tupleTbl td.tupleHeader { - padding-left: 5px; - padding-top: 3px; + padding-left: 4px; + padding-top: 2px; + padding-bottom: 3px; font-size: 8pt; - color: #666666; + color: #777; text-align: left; border-left: 1px solid #555555; } @@ -267,7 +268,6 @@ table.dictTbl, table.instTbl, table.classTbl { border-spacing: 1px; - /*border-collapse: collapse;*/ } table.dictTbl td.dictKey, @@ -286,24 +286,21 @@ table.classTbl td.classVal { table.dictTbl td.dictKey, table.instTbl td.instKey, table.classTbl td.classKey { - padding-top: 15px; + padding-top: 12px /*15px*/; padding-bottom: 5px; padding-left: 10px; padding-right: 4px; text-align: right; - vertical-align: center; } table.dictTbl td.dictVal, table.instTbl td.instVal, table.classTbl td.classVal { - padding-top: 15px; + padding-top: 12px /*15px*/; padding-bottom: 5px; padding-right: 10px; padding-left: 4px; - - vertical-align: center; } @@ -322,6 +319,15 @@ table.classTbl { border: 1px #888 solid; } +/* only add a border to dicts if they're embedded within another object */ +td.listElt table.dictTbl, +td.tupleElt table.dictTbl, +td.dictVal table.dictTbl, +td.instVal table.dictTbl, +td.classVal table.dictTbl { + border: 1px #888 solid; +} + .typeLabel { font-size: 8pt; From 124543b86ec65e3c950fec89f4acc3c8ac7674e0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 20 Aug 2012 16:31:12 -0700 Subject: [PATCH 141/502] added example-code/sum-cubes.txt test and made it pass --- PyTutorGAE/js/opt-frontend.js | 5 +++++ PyTutorGAE/pg_logger.py | 12 +++++++++++- PyTutorGAE/tutor.html | 3 ++- example-code/sum-cubes.txt | 16 ++++++++++++++++ 4 files changed, 34 insertions(+), 2 deletions(-) create mode 100644 example-code/sum-cubes.txt diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index 4f4abec76..446ea0fe7 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -297,6 +297,11 @@ $(document).ready(function() { return false; }); + $("#sumCubesLink").click(function() { + $.get("example-code/sum-cubes.txt", setCodeMirrorVal); + return false; + }); + $('#closure1Link').click(function() { $.get("example-code/closures/closure1.txt", setCodeMirrorVal); diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index a5354895b..158ca0cac 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -103,6 +103,9 @@ def __init__(self, cumulative_mode, finalizer_func): # Value: parent frame self.closures = {} + # set of function objects that were defined in the global scope + self.globally_defined_funcs = set() + # Key: frame object # Value: monotonically increasing small ID, based on call order self.frame_ordered_ids = {} @@ -372,11 +375,18 @@ def create_encoded_stack_entry(cur_frame): if i > 1: # i == 1 implies that there's only a global scope visible for (k, v) in get_user_locals(top_frame).items(): if (type(v) in (types.FunctionType, types.MethodType) and \ - v not in self.closures): + v not in self.closures and \ + v not in self.globally_defined_funcs): self.closures[v] = top_frame self.parent_frames_set.add(top_frame) # unequivocally add to this set!!! if not top_frame in self.zombie_frames: self.zombie_frames.append(top_frame) + else: + # if there is only a global scope visible ... + for (k, v) in get_user_globals(top_frame).items(): + if (type(v) in (types.FunctionType, types.MethodType) and \ + v not in self.closures): + self.globally_defined_funcs.add(v) # climb up until you find '', which is (hopefully) the global scope diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index 29f6bcf05..db3174b6c 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -88,7 +88,8 @@
gcd | sumList | towers of hanoi | -exceptions +exceptions | +sum cubes

diff --git a/example-code/sum-cubes.txt b/example-code/sum-cubes.txt new file mode 100644 index 000000000..7eff416f7 --- /dev/null +++ b/example-code/sum-cubes.txt @@ -0,0 +1,16 @@ +def summation(n, term, next): + total, k = 0, 1 + while k <= n: + total, k = total + term(k), next(k) + return total + +def cube(k): + return pow(k, 3) + +def successor(k): + return k + 1 + +def sum_cubes(n): + return summation(n, cube, successor) + +sum_cubes(3) From ccc2bf45f66903052364647efce5889c4c9ba537 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 20 Aug 2012 19:05:03 -0700 Subject: [PATCH 142/502] increase line height so that underscores render properly --- PyTutorGAE/css/codemirror.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/PyTutorGAE/css/codemirror.css b/PyTutorGAE/css/codemirror.css index fb5b6d544..b8dda7541 100644 --- a/PyTutorGAE/css/codemirror.css +++ b/PyTutorGAE/css/codemirror.css @@ -1,5 +1,5 @@ .CodeMirror { - line-height: 1em; + line-height: 1.2em; /* pgbovine - enables underscore (_) characters to render properly */ font-family: monospace; /* Necessary so the scrollbar can be absolutely positioned within the wrapper on Lion. */ From 3b020ff309d69786c717ecb5ec7e952665bcb6b0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 21 Aug 2012 11:33:56 -0700 Subject: [PATCH 143/502] FINALLY start setting up some regression tests --- PyTutorGAE/generate_json_trace.py | 8 +- PyTutorGAE/js/opt-frontend.js | 4 + PyTutorGAE/pg_logger.py | 32 ++++ .../backend-tests/caught_exception_1.txt | 5 + .../backend-tests/caught_exception_2.txt | 12 ++ PyTutorGAE/tests/backend-tests/circ_ref.txt | 5 + PyTutorGAE/tests/backend-tests/circ_ref_2.txt | 6 + .../tests/backend-tests/circ_ref_fake.txt | 7 + PyTutorGAE/tests/backend-tests/class_test.txt | 13 ++ .../tests/backend-tests/class_test_2.txt | 8 + .../tests/backend-tests/class_test_3.txt | 16 ++ PyTutorGAE/tests/backend-tests/data_test.txt | 4 + PyTutorGAE/tests/backend-tests/dict_error.txt | 4 + PyTutorGAE/tests/backend-tests/dict_test.txt | 10 ++ PyTutorGAE/tests/backend-tests/exec_test.txt | 1 + .../tests/backend-tests/func_exception.txt | 7 + .../tests/backend-tests/generator_test.txt | 3 + .../tests/backend-tests/import_error.txt | 4 + .../tests/backend-tests/infinite_loop.txt | 12 ++ .../backend-tests/infinite_loop_one_liner.txt | 1 + PyTutorGAE/tests/backend-tests/lambda_1.txt | 12 ++ .../tests/backend-tests/list_dict_test.txt | 6 + PyTutorGAE/tests/backend-tests/list_test.txt | 1 + .../tests/backend-tests/newstyle_class.txt | 15 ++ PyTutorGAE/tests/backend-tests/one_func.txt | 8 + PyTutorGAE/tests/backend-tests/open_error.txt | 3 + .../tests/backend-tests/parse_error.txt | 6 + .../tests/backend-tests/parse_error_2.txt | 5 + .../tests/backend-tests/parse_error_3.txt | 6 + .../backend-tests/print_builtins_error.txt | 1 + .../tests/backend-tests/runtime_error.txt | 8 + PyTutorGAE/tests/backend-tests/set_test.txt | 7 + PyTutorGAE/tests/backend-tests/simple.txt | 7 + .../tests/backend-tests/three_lists.txt | 13 ++ PyTutorGAE/tests/backend-tests/tuple_test.txt | 3 + PyTutorGAE/tests/backend-tests/two_funcs.txt | 14 ++ PyTutorGAE/tests/golden_test.py | 166 ++++++++++++++++++ PyTutorGAE/tutor.html | 3 +- example-code/closures/lambda-param.txt | 7 + 39 files changed, 451 insertions(+), 2 deletions(-) create mode 100644 PyTutorGAE/tests/backend-tests/caught_exception_1.txt create mode 100644 PyTutorGAE/tests/backend-tests/caught_exception_2.txt create mode 100644 PyTutorGAE/tests/backend-tests/circ_ref.txt create mode 100644 PyTutorGAE/tests/backend-tests/circ_ref_2.txt create mode 100644 PyTutorGAE/tests/backend-tests/circ_ref_fake.txt create mode 100644 PyTutorGAE/tests/backend-tests/class_test.txt create mode 100644 PyTutorGAE/tests/backend-tests/class_test_2.txt create mode 100644 PyTutorGAE/tests/backend-tests/class_test_3.txt create mode 100644 PyTutorGAE/tests/backend-tests/data_test.txt create mode 100644 PyTutorGAE/tests/backend-tests/dict_error.txt create mode 100644 PyTutorGAE/tests/backend-tests/dict_test.txt create mode 100644 PyTutorGAE/tests/backend-tests/exec_test.txt create mode 100644 PyTutorGAE/tests/backend-tests/func_exception.txt create mode 100644 PyTutorGAE/tests/backend-tests/generator_test.txt create mode 100644 PyTutorGAE/tests/backend-tests/import_error.txt create mode 100644 PyTutorGAE/tests/backend-tests/infinite_loop.txt create mode 100644 PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.txt create mode 100644 PyTutorGAE/tests/backend-tests/lambda_1.txt create mode 100644 PyTutorGAE/tests/backend-tests/list_dict_test.txt create mode 100644 PyTutorGAE/tests/backend-tests/list_test.txt create mode 100644 PyTutorGAE/tests/backend-tests/newstyle_class.txt create mode 100644 PyTutorGAE/tests/backend-tests/one_func.txt create mode 100644 PyTutorGAE/tests/backend-tests/open_error.txt create mode 100644 PyTutorGAE/tests/backend-tests/parse_error.txt create mode 100644 PyTutorGAE/tests/backend-tests/parse_error_2.txt create mode 100644 PyTutorGAE/tests/backend-tests/parse_error_3.txt create mode 100644 PyTutorGAE/tests/backend-tests/print_builtins_error.txt create mode 100644 PyTutorGAE/tests/backend-tests/runtime_error.txt create mode 100644 PyTutorGAE/tests/backend-tests/set_test.txt create mode 100644 PyTutorGAE/tests/backend-tests/simple.txt create mode 100644 PyTutorGAE/tests/backend-tests/three_lists.txt create mode 100644 PyTutorGAE/tests/backend-tests/tuple_test.txt create mode 100644 PyTutorGAE/tests/backend-tests/two_funcs.txt create mode 100644 PyTutorGAE/tests/golden_test.py create mode 100644 example-code/closures/lambda-param.txt diff --git a/PyTutorGAE/generate_json_trace.py b/PyTutorGAE/generate_json_trace.py index e0799d437..ab00b91f1 100644 --- a/PyTutorGAE/generate_json_trace.py +++ b/PyTutorGAE/generate_json_trace.py @@ -2,13 +2,19 @@ CUMULATIVE_MODE = False +COMPACT = False +if COMPACT: + INDENT_LEVEL=None +else: + INDENT_LEVEL=2 + import sys, pg_logger, json def json_finalizer(input_code, output_trace): ret = dict(code=input_code, trace=output_trace) - json_output = json.dumps(ret, indent=None) # use indent=None for most compact repr + json_output = json.dumps(ret, indent=INDENT_LEVEL) print(json_output) diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index 446ea0fe7..21075179d 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -323,6 +323,10 @@ $(document).ready(function() { $.get("example-code/closures/closure5.txt", setCodeMirrorVal); return false; }); + $('#lambdaParamLink').click(function() { + $.get("example-code/closures/lambda-param.txt", setCodeMirrorVal); + return false; + }); $('#aliasing1Link').click(function() { diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 158ca0cac..c9771975f 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -377,6 +377,38 @@ def create_encoded_stack_entry(cur_frame): if (type(v) in (types.FunctionType, types.MethodType) and \ v not in self.closures and \ v not in self.globally_defined_funcs): + + ''' + # Look for the presence of v.func_code (code object) in + # the constant pool (f_code.co_consts) of an enclosing + # stack frame, and set that frame as your parent. + # + # This technique properly handles lambdas passed as + # function parameters. e.g., this example: + # + # def foo(x): + # bar(lambda y: x + y) + # def bar(a): + # print a(20) + # foo(10) + chosen_parent_frame = None + for (my_frame, my_lineno) in self.stack: + if chosen_parent_frame: + break + + for frame_const in my_frame.f_code.co_consts: + if frame_const is v.func_code: + chosen_parent_frame = my_frame + break + + assert chosen_parent_frame # I hope this always passes :0 + + self.closures[v] = chosen_parent_frame + self.parent_frames_set.add(chosen_parent_frame) # unequivocally add to this set!!! + if not chosen_parent_frame in self.zombie_frames: + self.zombie_frames.append(chosen_parent_frame) + ''' + self.closures[v] = top_frame self.parent_frames_set.add(top_frame) # unequivocally add to this set!!! if not top_frame in self.zombie_frames: diff --git a/PyTutorGAE/tests/backend-tests/caught_exception_1.txt b/PyTutorGAE/tests/backend-tests/caught_exception_1.txt new file mode 100644 index 000000000..1bf3cdec0 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/caught_exception_1.txt @@ -0,0 +1,5 @@ +try: + x = 1 / 0 +except: + print "DIVIDE BY ZERO" + diff --git a/PyTutorGAE/tests/backend-tests/caught_exception_2.txt b/PyTutorGAE/tests/backend-tests/caught_exception_2.txt new file mode 100644 index 000000000..57c17019c --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/caught_exception_2.txt @@ -0,0 +1,12 @@ +# caught exception: +try: + x = 1 / 0 +except: + print "DIVIDE BY ZERO" + + +# uncaught: +print y + +print "should not reach here" + diff --git a/PyTutorGAE/tests/backend-tests/circ_ref.txt b/PyTutorGAE/tests/backend-tests/circ_ref.txt new file mode 100644 index 000000000..7af6d5e6d --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/circ_ref.txt @@ -0,0 +1,5 @@ +# true circular reference + +x = [1, 2] +x.append(x) + diff --git a/PyTutorGAE/tests/backend-tests/circ_ref_2.txt b/PyTutorGAE/tests/backend-tests/circ_ref_2.txt new file mode 100644 index 000000000..49502c869 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/circ_ref_2.txt @@ -0,0 +1,6 @@ +# true indirect circular reference + +x = [1, 2] +y = [3, 4, x] +x.append(y) + diff --git a/PyTutorGAE/tests/backend-tests/circ_ref_fake.txt b/PyTutorGAE/tests/backend-tests/circ_ref_fake.txt new file mode 100644 index 000000000..3bbcc94f2 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/circ_ref_fake.txt @@ -0,0 +1,7 @@ +# not a true circular reference + +a = [10, 20, 30] +b = a +c = [10, 20, 30] +d = (a, b, c) + diff --git a/PyTutorGAE/tests/backend-tests/class_test.txt b/PyTutorGAE/tests/backend-tests/class_test.txt new file mode 100644 index 000000000..f5046f056 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/class_test.txt @@ -0,0 +1,13 @@ +class Point: + def __init__(self, x, y): + self.x = x + self.y = y + + def __str__(self): + return "(%d, %d)" % (self.x, self.y) + +p = Point(1, 2) +print p +p2 = Point(3, -4) +print p2 + diff --git a/PyTutorGAE/tests/backend-tests/class_test_2.txt b/PyTutorGAE/tests/backend-tests/class_test_2.txt new file mode 100644 index 000000000..47a9e13bb --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/class_test_2.txt @@ -0,0 +1,8 @@ +class Outer(): + pass + +o = Outer() +o.a = 5 +o.b = "Hi" +print o + diff --git a/PyTutorGAE/tests/backend-tests/class_test_3.txt b/PyTutorGAE/tests/backend-tests/class_test_3.txt new file mode 100644 index 000000000..a4a8068a0 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/class_test_3.txt @@ -0,0 +1,16 @@ +class Staff601: + course = '6.01' + building = 34 + room = 501 + +pat = Staff601() +print pat.course + +pat.name = 'Pat' +pat.age = 60 +pat.role = 'Professor' + +print pat.building +pat.building = 32 +print pat.building + diff --git a/PyTutorGAE/tests/backend-tests/data_test.txt b/PyTutorGAE/tests/backend-tests/data_test.txt new file mode 100644 index 000000000..664717167 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/data_test.txt @@ -0,0 +1,4 @@ +x = ('hello', 'world', 1, 2, 3, 'goodbye') +y = list(x) +z = set(x) +w = {"joe" : 5, "mindy" : 6, "jack" : 7} diff --git a/PyTutorGAE/tests/backend-tests/dict_error.txt b/PyTutorGAE/tests/backend-tests/dict_error.txt new file mode 100644 index 000000000..fb6ed90ee --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/dict_error.txt @@ -0,0 +1,4 @@ +def foo(): + local_y[('tup', 'le')] = set([1, 2, 3]) + +foo() diff --git a/PyTutorGAE/tests/backend-tests/dict_test.txt b/PyTutorGAE/tests/backend-tests/dict_test.txt new file mode 100644 index 000000000..41b541c1c --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/dict_test.txt @@ -0,0 +1,10 @@ +x = {1 : 2} +x[('tup', 'le')] = set([1, 2, 3]) + +def foo(): + local_x = {1 : 2} + local_y = {} + local_y[('tup', 'le')] = set([1, 2, 3]) + print "hello", local_y.values() + +foo() diff --git a/PyTutorGAE/tests/backend-tests/exec_test.txt b/PyTutorGAE/tests/backend-tests/exec_test.txt new file mode 100644 index 000000000..0d44e327d --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/exec_test.txt @@ -0,0 +1 @@ +exec "import os; os.system('echo security breach')" diff --git a/PyTutorGAE/tests/backend-tests/func_exception.txt b/PyTutorGAE/tests/backend-tests/func_exception.txt new file mode 100644 index 000000000..991a8253d --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/func_exception.txt @@ -0,0 +1,7 @@ +def g(x,y): + print("In g") + ans = x/y + return ans + +g(5, 0) + diff --git a/PyTutorGAE/tests/backend-tests/generator_test.txt b/PyTutorGAE/tests/backend-tests/generator_test.txt new file mode 100644 index 000000000..f17609e64 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/generator_test.txt @@ -0,0 +1,3 @@ +x = (e for e in range(10)) +y = x +z = (e for e in range(10)) diff --git a/PyTutorGAE/tests/backend-tests/import_error.txt b/PyTutorGAE/tests/backend-tests/import_error.txt new file mode 100644 index 000000000..028a74e54 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/import_error.txt @@ -0,0 +1,4 @@ +# should NOT allow for any imports +import os + +os.system("echo security breach") diff --git a/PyTutorGAE/tests/backend-tests/infinite_loop.txt b/PyTutorGAE/tests/backend-tests/infinite_loop.txt new file mode 100644 index 000000000..bce78d1d0 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/infinite_loop.txt @@ -0,0 +1,12 @@ +# Fibonacci!!! + +arr = [1, 1] + +print arr[0] + +while True: + print arr[-1] + tmp = sum(arr) + arr.append(tmp) + del arr[0] + diff --git a/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.txt b/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.txt new file mode 100644 index 000000000..9b79fb99d --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.txt @@ -0,0 +1 @@ +while 1: print "hahahaha" diff --git a/PyTutorGAE/tests/backend-tests/lambda_1.txt b/PyTutorGAE/tests/backend-tests/lambda_1.txt new file mode 100644 index 000000000..90504b5ec --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/lambda_1.txt @@ -0,0 +1,12 @@ +def summation(low, high, f, next): + s = 0 + x = low + while x <= high: + s = s + f(x) + x = next(x) + return s + +def sumsquares(low, high): + return summation(low, high, lambda x: x**2, lambda x: x+1) + +print sumsquares(1, 5) diff --git a/PyTutorGAE/tests/backend-tests/list_dict_test.txt b/PyTutorGAE/tests/backend-tests/list_dict_test.txt new file mode 100644 index 000000000..1d8179f6c --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/list_dict_test.txt @@ -0,0 +1,6 @@ +x = {} +l = ['hello', "world", 'goodbye'] +for (i, e) in enumerate(l): + x[e] = i +print x + diff --git a/PyTutorGAE/tests/backend-tests/list_test.txt b/PyTutorGAE/tests/backend-tests/list_test.txt new file mode 100644 index 000000000..a56999261 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/list_test.txt @@ -0,0 +1 @@ +x = [1, 2, "hello", (3, 4)] diff --git a/PyTutorGAE/tests/backend-tests/newstyle_class.txt b/PyTutorGAE/tests/backend-tests/newstyle_class.txt new file mode 100644 index 000000000..315cda7e3 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/newstyle_class.txt @@ -0,0 +1,15 @@ +class A(object): + bla = "A" + def __init__(self): + self.blb = "B" + + def x(self): + self.bla = self.blb + +a = A() + +a.x() + +print a.bla +print A.bla + diff --git a/PyTutorGAE/tests/backend-tests/one_func.txt b/PyTutorGAE/tests/backend-tests/one_func.txt new file mode 100644 index 000000000..ce141aa36 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/one_func.txt @@ -0,0 +1,8 @@ +def add(a, b, c): + d = a + b + return c + d + +x = 5 +y = 10 +z = x * y +print add(x, y, z) diff --git a/PyTutorGAE/tests/backend-tests/open_error.txt b/PyTutorGAE/tests/backend-tests/open_error.txt new file mode 100644 index 000000000..5f2bee2e7 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/open_error.txt @@ -0,0 +1,3 @@ +for line in open("/etc/passwd"): + print line + diff --git a/PyTutorGAE/tests/backend-tests/parse_error.txt b/PyTutorGAE/tests/backend-tests/parse_error.txt new file mode 100644 index 000000000..efab03533 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/parse_error.txt @@ -0,0 +1,6 @@ +x = 0 +for i in range(10): + x += 1 + print x + x += 1 + diff --git a/PyTutorGAE/tests/backend-tests/parse_error_2.txt b/PyTutorGAE/tests/backend-tests/parse_error_2.txt new file mode 100644 index 000000000..80070e74b --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/parse_error_2.txt @@ -0,0 +1,5 @@ +x = 5 +y = x +z = x + y + +for x haslk;fjlasfhlkjl;sa diff --git a/PyTutorGAE/tests/backend-tests/parse_error_3.txt b/PyTutorGAE/tests/backend-tests/parse_error_3.txt new file mode 100644 index 000000000..bcc7bbf0e --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/parse_error_3.txt @@ -0,0 +1,6 @@ +x = [] +for i in range(10): + x.append(i) + if i == 24: + pass + print y diff --git a/PyTutorGAE/tests/backend-tests/print_builtins_error.txt b/PyTutorGAE/tests/backend-tests/print_builtins_error.txt new file mode 100644 index 000000000..d4d03e56f --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/print_builtins_error.txt @@ -0,0 +1 @@ +print __builtins__ diff --git a/PyTutorGAE/tests/backend-tests/runtime_error.txt b/PyTutorGAE/tests/backend-tests/runtime_error.txt new file mode 100644 index 000000000..57124a66e --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/runtime_error.txt @@ -0,0 +1,8 @@ +x = 5 +for i in range(10): + if i == x: + z = x + y # ERROR! + else: + z = i + print z + diff --git a/PyTutorGAE/tests/backend-tests/set_test.txt b/PyTutorGAE/tests/backend-tests/set_test.txt new file mode 100644 index 000000000..72ca6fa0a --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/set_test.txt @@ -0,0 +1,7 @@ +x = set() +x.add('a') +x.add('a') +x.add('b') +x.add('c') +x.add('b') + diff --git a/PyTutorGAE/tests/backend-tests/simple.txt b/PyTutorGAE/tests/backend-tests/simple.txt new file mode 100644 index 000000000..12b847786 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/simple.txt @@ -0,0 +1,7 @@ +x = 5 +y = 10 +z = x * y +print "HELLO WORLD" +for i in range(10): + print z * i + diff --git a/PyTutorGAE/tests/backend-tests/three_lists.txt b/PyTutorGAE/tests/backend-tests/three_lists.txt new file mode 100644 index 000000000..388dffc20 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/three_lists.txt @@ -0,0 +1,13 @@ +# test case submitted by Peter Wentworth (p.wentworth@ru.ac.za) + +def f(xs): + print(xs) + +a = [10, 20, 30] +b = a +c = [10, 20, 30] +d = 24 +e = (a, b, c) + +f(b) + diff --git a/PyTutorGAE/tests/backend-tests/tuple_test.txt b/PyTutorGAE/tests/backend-tests/tuple_test.txt new file mode 100644 index 000000000..de68176ca --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/tuple_test.txt @@ -0,0 +1,3 @@ +x = (1, 2, 3) +y = (4,) + diff --git a/PyTutorGAE/tests/backend-tests/two_funcs.txt b/PyTutorGAE/tests/backend-tests/two_funcs.txt new file mode 100644 index 000000000..4a07fd3b9 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/two_funcs.txt @@ -0,0 +1,14 @@ +def add(a, b, c): + d = a + b + return c + d + +def double_add(a, b, c): + x = add(a, b, c) + y = add(a, b, c) + return x + y + +x = 5 +y = 10 +z = x * y +print add(x, y, z) +print double_add(x, y, z) diff --git a/PyTutorGAE/tests/golden_test.py b/PyTutorGAE/tests/golden_test.py new file mode 100644 index 000000000..ad4563c57 --- /dev/null +++ b/PyTutorGAE/tests/golden_test.py @@ -0,0 +1,166 @@ +''' +A simple framework for regression testing based on golden files +by Philip Guo + +customized for the Online Python Tutor project +''' + +import os, shutil, optparse, difflib +from subprocess import * + + +PROGRAM = 'python' + +INPUT_FILE_EXTENSION = '.txt' # input test files are .txt, NOT .py +OUTPUT_FILE = 'out.trace' + + +ALL_TESTS = [] + +for (pwd, subdirs, files) in os.walk('.', followlinks=True): # need to follow example-code symlink + for f in files: + (base, ext) = os.path.splitext(f) + if ext == INPUT_FILE_EXTENSION: + fullpath = os.path.join(pwd, f) + ALL_TESTS.append(fullpath) + + +def filter_output(s): + return s + + +def execute(input_filename): + assert os.path.isfile(input_filename) + (base, ext) = os.path.splitext(input_filename) + assert ext == INPUT_FILE_EXTENSION + + (stdout, stderr) = Popen([PROGRAM, input_filename], stdout=PIPE, stderr=PIPE). communicate() + + if stderr: + print ' CONTAINS ERROR' + #print '{' + #print stderr, '}' + + assert os.path.isfile(OUTPUT_FILE) + outfile = base + '.out' + os.rename(OUTPUT_FILE, outfile) + + +def clobber_golden_file(golden_file): + (base, ext) = os.path.splitext(golden_file) + outfile = base + '.out' + assert os.path.isfile(outfile) + print ' Clobber %s => %s' % (outfile, golden_file) + shutil.copy(outfile, golden_file) + + +# returns True if there is a diff, False otherwise +def golden_differs_from_out(golden_file): + (base, ext) = os.path.splitext(golden_file) + outfile = base + '.out' + assert os.path.isfile(outfile) + assert os.path.isfile(golden_file) + + golden_s = open(golden_file).readlines() + out_s = open(outfile).readlines() + + golden_s_filtered = filter_output(golden_s) + out_s_filtered = filter_output(out_s) + + return out_s_filtered != golden_s_filtered + + +def diff_test_output(test_name): + (base, ext) = os.path.splitext(test_name) + + golden_file = os.path.join(TEST_DIR, base + '.golden') + assert os.path.isfile(golden_file) + outfile = os.path.join(TEST_DIR, base + '.out') + assert os.path.isfile(outfile) + + golden_s = open(golden_file).readlines() + out_s = open(outfile).readlines() + + golden_s_filtered = filter_output(golden_s) + out_s_filtered = filter_output(out_s) + + first_line = True + for line in difflib.unified_diff(golden_s_filtered, out_s_filtered, \ + fromfile=golden_file, tofile=outfile): + if first_line: + print # print an extra line to ease readability + first_line = False + print line, + + +def run_test(input_filename, clobber_golden=False): + print 'Testing', input_filename + + (base, ext) = os.path.splitext(input_filename) + assert ext == INPUT_FILE_EXTENSION + + # to eliminate possibility of using stale output: + outfile = base + '.out' + if os.path.isfile(outfile): + os.remove(outfile) + + input_fullpath = os.path.join(TEST_DIR, input_filename) + execute(input_fullpath) + + golden_file = os.path.join(TEST_DIR, base + '.golden') + if os.path.isfile(golden_file): + if golden_differs_from_out(golden_file): + print " FAILED" + if clobber_golden: + clobber_golden_file(golden_file) + else: + clobber_golden_file(golden_file) + + +def run_all_tests(clobber=False): + for t in ALL_TESTS: + run_test(t, clobber) + +def diff_all_test_outputs(): + for t in ALL_TESTS: + diff_test_output(t) + + +if __name__ == "__main__": + parser = optparse.OptionParser() + parser.add_option("--all", action="store_true", dest="run_all", + help="Run all tests") + parser.add_option("--only-clobber", action="store_true", dest="only_clobber", + help="Clobber ALL golden files WITHOUT re-running tests") + parser.add_option("--clobber", action="store_true", dest="clobber", + help="Clobber golden files when running tests") + parser.add_option("--test", dest="test_name", + help="Run one test") + parser.add_option("--difftest", dest="diff_test_name", + help="Diff against .golden for one test") + parser.add_option("--diffall", action="store_true", dest="diff_all", + help="Diff against .golden for all tests") + (options, args) = parser.parse_args() + if options.run_all: + if options.clobber: + print 'Running all tests and clobbering results ...' + else: + print 'Running all tests ...' + run_all_tests(options.clobber) + + elif options.diff_all: + diff_all_test_outputs() + elif options.diff_test_name: + assert options.diff_test_name in ALL_TESTS + diff_test_output(options.diff_test_name) + elif options.test_name: + assert options.test_name in ALL_TESTS + run_test(options.test_name, options.clobber) + elif options.only_clobber: + for t in ALL_TESTS: + (base, ext) = os.path.splitext(t) + golden_file = os.path.join(TEST_DIR, base + '.golden') + clobber_golden_file(golden_file) + else: + parser.print_help() + diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index db3174b6c..920741ad4 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -110,7 +110,8 @@ closure 2 | closure 3 | closure 4 | -closure 5 +closure 5 | +lambda param

diff --git a/example-code/closures/lambda-param.txt b/example-code/closures/lambda-param.txt new file mode 100644 index 000000000..5bf9dcecb --- /dev/null +++ b/example-code/closures/lambda-param.txt @@ -0,0 +1,7 @@ +def foo(x): + bar(lambda y: x + y) + +def bar(a): + print a(20) + +foo(10) From b774711d4bef0c0a18bc75a8563d2cad251aace7 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 21 Aug 2012 11:55:09 -0700 Subject: [PATCH 144/502] added regression tests --- .../backend-tests/caught_exception_1.golden | 66 + .../backend-tests/caught_exception_2.golden | 77 + .../tests/backend-tests/circ_ref.golden | 65 + .../tests/backend-tests/circ_ref_2.golden | 116 + .../tests/backend-tests/circ_ref_fake.golden | 168 + .../tests/backend-tests/class_test.golden | 2725 ++++ .../tests/backend-tests/class_test_2.golden | 285 + .../tests/backend-tests/class_test_3.golden | 641 + .../tests/backend-tests/data_test.golden | 213 + .../tests/backend-tests/dict_error.golden | 207 + .../tests/backend-tests/dict_test.golden | 730 + .../tests/backend-tests/exec_test.golden | 84 + .../tests/backend-tests/func_exception.golden | 270 + .../tests/backend-tests/generator_test.golden | 100 + .../tests/backend-tests/import_error.golden | 64 + .../tests/backend-tests/infinite_loop.golden | 7545 +++++++++++ .../infinite_loop_one_liner.golden | 3009 +++++ .../tests/backend-tests/lambda_1.golden | 5460 ++++++++ .../tests/backend-tests/list_dict_test.golden | 416 + .../tests/backend-tests/list_test.golden | 48 + .../tests/backend-tests/newstyle_class.golden | 1597 +++ .../tests/backend-tests/one_func.golden | 350 + .../tests/backend-tests/open_error.golden | 1233 ++ .../tests/backend-tests/parse_error.golden | 11 + .../tests/backend-tests/parse_error_2.golden | 11 + .../tests/backend-tests/parse_error_3.golden | 11 + .../backend-tests/print_builtins_error.golden | 19 + .../tests/backend-tests/runtime_error.golden | 440 + .../tests/backend-tests/set_test.golden | 151 + PyTutorGAE/tests/backend-tests/simple.golden | 501 + .../tests/backend-tests/three_lists.golden | 632 + .../tests/backend-tests/tuple_test.golden | 72 + .../tests/backend-tests/two_funcs.golden | 1453 ++ PyTutorGAE/tests/golden_test.py | 27 +- example-code/aliasing.golden | 2067 +++ example-code/aliasing/aliasing1.golden | 98 + example-code/aliasing/aliasing2.golden | 90 + example-code/aliasing/aliasing3.golden | 335 + example-code/aliasing/aliasing4.golden | 67 + example-code/aliasing/aliasing5.golden | 455 + example-code/aliasing/aliasing6.golden | 327 + example-code/aliasing/aliasing7.golden | 248 + example-code/aliasing/aliasing8.golden | 229 + example-code/closures/closure1.golden | 567 + example-code/closures/closure2.golden | 1764 +++ example-code/closures/closure3.golden | 1400 ++ example-code/closures/closure4.golden | 1457 ++ example-code/closures/closure5.golden | 7684 +++++++++++ example-code/closures/lambda-param.golden | 797 ++ example-code/fact.golden | 1909 +++ example-code/fib.golden | 7545 +++++++++++ example-code/filter.golden | 1505 +++ example-code/ins_sort.golden | 3538 +++++ example-code/linked-lists/ll1.golden | 1977 +++ example-code/linked-lists/ll2.golden | 10032 ++++++++++++++ example-code/map.golden | 6996 ++++++++++ example-code/memo_fib.golden | 10715 +++++++++++++++ example-code/oop_1.golden | 2448 ++++ example-code/oop_2.golden | 2236 ++++ example-code/oop_inherit.golden | 3181 +++++ example-code/oop_small.golden | 2093 +++ example-code/py_tutorial.golden | 4754 +++++++ example-code/sqrt.golden | 8929 +++++++++++++ example-code/strtok.golden | 258 + example-code/sum-cubes.golden | 1693 +++ example-code/sum.golden | 10030 ++++++++++++++ example-code/towers_of_hanoi.golden | 10996 ++++++++++++++++ example-code/wentworth_gcd.golden | 3798 ++++++ example-code/wentworth_sumList.golden | 4520 +++++++ example-code/wentworth_try_finally.golden | 2823 ++++ 70 files changed, 148348 insertions(+), 10 deletions(-) create mode 100644 PyTutorGAE/tests/backend-tests/caught_exception_1.golden create mode 100644 PyTutorGAE/tests/backend-tests/caught_exception_2.golden create mode 100644 PyTutorGAE/tests/backend-tests/circ_ref.golden create mode 100644 PyTutorGAE/tests/backend-tests/circ_ref_2.golden create mode 100644 PyTutorGAE/tests/backend-tests/circ_ref_fake.golden create mode 100644 PyTutorGAE/tests/backend-tests/class_test.golden create mode 100644 PyTutorGAE/tests/backend-tests/class_test_2.golden create mode 100644 PyTutorGAE/tests/backend-tests/class_test_3.golden create mode 100644 PyTutorGAE/tests/backend-tests/data_test.golden create mode 100644 PyTutorGAE/tests/backend-tests/dict_error.golden create mode 100644 PyTutorGAE/tests/backend-tests/dict_test.golden create mode 100644 PyTutorGAE/tests/backend-tests/exec_test.golden create mode 100644 PyTutorGAE/tests/backend-tests/func_exception.golden create mode 100644 PyTutorGAE/tests/backend-tests/generator_test.golden create mode 100644 PyTutorGAE/tests/backend-tests/import_error.golden create mode 100644 PyTutorGAE/tests/backend-tests/infinite_loop.golden create mode 100644 PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden create mode 100644 PyTutorGAE/tests/backend-tests/lambda_1.golden create mode 100644 PyTutorGAE/tests/backend-tests/list_dict_test.golden create mode 100644 PyTutorGAE/tests/backend-tests/list_test.golden create mode 100644 PyTutorGAE/tests/backend-tests/newstyle_class.golden create mode 100644 PyTutorGAE/tests/backend-tests/one_func.golden create mode 100644 PyTutorGAE/tests/backend-tests/open_error.golden create mode 100644 PyTutorGAE/tests/backend-tests/parse_error.golden create mode 100644 PyTutorGAE/tests/backend-tests/parse_error_2.golden create mode 100644 PyTutorGAE/tests/backend-tests/parse_error_3.golden create mode 100644 PyTutorGAE/tests/backend-tests/print_builtins_error.golden create mode 100644 PyTutorGAE/tests/backend-tests/runtime_error.golden create mode 100644 PyTutorGAE/tests/backend-tests/set_test.golden create mode 100644 PyTutorGAE/tests/backend-tests/simple.golden create mode 100644 PyTutorGAE/tests/backend-tests/three_lists.golden create mode 100644 PyTutorGAE/tests/backend-tests/tuple_test.golden create mode 100644 PyTutorGAE/tests/backend-tests/two_funcs.golden create mode 100644 example-code/aliasing.golden create mode 100644 example-code/aliasing/aliasing1.golden create mode 100644 example-code/aliasing/aliasing2.golden create mode 100644 example-code/aliasing/aliasing3.golden create mode 100644 example-code/aliasing/aliasing4.golden create mode 100644 example-code/aliasing/aliasing5.golden create mode 100644 example-code/aliasing/aliasing6.golden create mode 100644 example-code/aliasing/aliasing7.golden create mode 100644 example-code/aliasing/aliasing8.golden create mode 100644 example-code/closures/closure1.golden create mode 100644 example-code/closures/closure2.golden create mode 100644 example-code/closures/closure3.golden create mode 100644 example-code/closures/closure4.golden create mode 100644 example-code/closures/closure5.golden create mode 100644 example-code/closures/lambda-param.golden create mode 100644 example-code/fact.golden create mode 100644 example-code/fib.golden create mode 100644 example-code/filter.golden create mode 100644 example-code/ins_sort.golden create mode 100644 example-code/linked-lists/ll1.golden create mode 100644 example-code/linked-lists/ll2.golden create mode 100644 example-code/map.golden create mode 100644 example-code/memo_fib.golden create mode 100644 example-code/oop_1.golden create mode 100644 example-code/oop_2.golden create mode 100644 example-code/oop_inherit.golden create mode 100644 example-code/oop_small.golden create mode 100644 example-code/py_tutorial.golden create mode 100644 example-code/sqrt.golden create mode 100644 example-code/strtok.golden create mode 100644 example-code/sum-cubes.golden create mode 100644 example-code/sum.golden create mode 100644 example-code/towers_of_hanoi.golden create mode 100644 example-code/wentworth_gcd.golden create mode 100644 example-code/wentworth_sumList.golden create mode 100644 example-code/wentworth_try_finally.golden diff --git a/PyTutorGAE/tests/backend-tests/caught_exception_1.golden b/PyTutorGAE/tests/backend-tests/caught_exception_1.golden new file mode 100644 index 000000000..7ca09e459 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/caught_exception_1.golden @@ -0,0 +1,66 @@ +{ + "code": "try:\n x = 1 / 0\nexcept:\n print \"DIVIDE BY ZERO\"\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "exception" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/caught_exception_2.golden b/PyTutorGAE/tests/backend-tests/caught_exception_2.golden new file mode 100644 index 000000000..75a3122cd --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/caught_exception_2.golden @@ -0,0 +1,77 @@ +{ + "code": "# caught exception:\ntry:\n x = 1 / 0\nexcept:\n print \"DIVIDE BY ZERO\"\n\n\n# uncaught:\nprint y\n\nprint \"should not reach here\"\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "exception" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "exception_msg": "NameError: name 'y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "exception" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/circ_ref.golden b/PyTutorGAE/tests/backend-tests/circ_ref.golden new file mode 100644 index 000000000..ea8bc5c65 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/circ_ref.golden @@ -0,0 +1,65 @@ +{ + "code": "# true circular reference\n\nx = [1, 2]\nx.append(x)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + [ + "REF", + 1 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/circ_ref_2.golden b/PyTutorGAE/tests/backend-tests/circ_ref_2.golden new file mode 100644 index 000000000..c1fb56894 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/circ_ref_2.golden @@ -0,0 +1,116 @@ +{ + "code": "# true indirect circular reference\n\nx = [1, 2]\ny = [3, 4, x]\nx.append(y)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ], + "2": [ + "LIST", + 3, + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 3, + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/circ_ref_fake.golden b/PyTutorGAE/tests/backend-tests/circ_ref_fake.golden new file mode 100644 index 000000000..11e8e7d50 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/circ_ref_fake.golden @@ -0,0 +1,168 @@ +{ + "code": "# not a true circular reference\n\na = [10, 20, 30]\nb = a\nc = [10, 20, 30]\nd = (a, b, c)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "b": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "c": [ + "REF", + 2 + ], + "b": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b", + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "c": [ + "REF", + 2 + ], + "b": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/class_test.golden b/PyTutorGAE/tests/backend-tests/class_test.golden new file mode 100644 index 000000000..882d13ef9 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/class_test.golden @@ -0,0 +1,2725 @@ +{ + "code": "class Point:\n def __init__(self, x, y):\n self.x = x\n self.y = y\n \n def __str__(self):\n return \"(%d, %d)\" % (self.x, self.y)\n\np = Point(1, 2)\nprint p\np2 = Point(3, -4)\nprint p2\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p", + "ordered_varnames": [ + "__init__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 5 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "(1, 2)", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f3", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 6 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f5", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f5", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": "(3, -4)", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f5", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n(3, -4)\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/class_test_2.golden b/PyTutorGAE/tests/backend-tests/class_test_2.golden new file mode 100644 index 000000000..ae2a4ddd0 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/class_test_2.golden @@ -0,0 +1,285 @@ +{ + "code": "class Outer():\n pass\n\no = Outer()\no.a = 5\no.b = \"Hi\"\nprint o\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Outer_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Outer_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Outer_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Outer_f1", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "Outer" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ], + "o": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ], + "3": [ + "INSTANCE", + "Outer" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ], + "o": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ], + "3": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ], + "o": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ], + "3": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ], + [ + "b", + "Hi" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "<__main__.Outer instance at 0xADDR>\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ], + "o": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ], + "3": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ], + [ + "b", + "Hi" + ] + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/class_test_3.golden b/PyTutorGAE/tests/backend-tests/class_test_3.golden new file mode 100644 index 000000000..f351abf52 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/class_test_3.golden @@ -0,0 +1,641 @@ +{ + "code": "class Staff601:\n course = '6.01'\n building = 34\n room = 501\n\npat = Staff601()\nprint pat.course\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint pat.building\npat.building = 32\nprint pat.building\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "course" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course", + "room", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/data_test.golden b/PyTutorGAE/tests/backend-tests/data_test.golden new file mode 100644 index 000000000..68e3251eb --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/data_test.golden @@ -0,0 +1,213 @@ +{ + "code": "x = ('hello', 'world', 1, 2, 3, 'goodbye')\ny = list(x)\nz = set(x)\nw = {\"joe\" : 5, \"mindy\" : 6, \"jack\" : 7}\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "3": [ + "SET", + 1, + 2, + 3, + "goodbye", + "world", + "hello" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "w" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ], + "w": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "3": [ + "SET", + 1, + 2, + 3, + "goodbye", + "world", + "hello" + ], + "4": [ + "DICT", + [ + "mindy", + 6 + ], + [ + "joe", + 5 + ], + [ + "jack", + 7 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/dict_error.golden b/PyTutorGAE/tests/backend-tests/dict_error.golden new file mode 100644 index 000000000..1d65cbe41 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/dict_error.golden @@ -0,0 +1,207 @@ +{ + "code": "def foo():\n local_y[('tup', 'le')] = set([1, 2, 3])\n\nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "exception_msg": "NameError: global name 'local_y' is not defined", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "exception" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "exception_msg": "NameError: global name 'local_y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "exception" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/dict_test.golden b/PyTutorGAE/tests/backend-tests/dict_test.golden new file mode 100644 index 000000000..7f6d1c5a5 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/dict_test.golden @@ -0,0 +1,730 @@ +{ + "code": "x = {1 : 2}\nx[('tup', 'le')] = set([1, 2, 3])\n\ndef foo():\n local_x = {1 : 2}\n local_y = {}\n local_y[('tup', 'le')] = set([1, 2, 3])\n print \"hello\", local_y.values()\n\nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT", + [ + [ + "REF", + 7 + ], + [ + "REF", + 8 + ] + ] + ], + "7": [ + "TUPLE", + "tup", + "le" + ], + "8": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "hello [set([1, 2, 3])]\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT", + [ + [ + "REF", + 7 + ], + [ + "REF", + 8 + ] + ] + ], + "7": [ + "TUPLE", + "tup", + "le" + ], + "8": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "hello [set([1, 2, 3])]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/exec_test.golden b/PyTutorGAE/tests/backend-tests/exec_test.golden new file mode 100644 index 000000000..af1afcf98 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/exec_test.golden @@ -0,0 +1,84 @@ +security breach +{ + "code": "exec \"import os; os.system('echo security breach')\"\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "os", + "__package__" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "os": [ + "REF", + 1 + ], + "__package__": null + }, + "heap": { + "1": [ + "module", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "os", + "__package__" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "os": [ + "REF", + 1 + ], + "__package__": null + }, + "heap": { + "1": [ + "module", + "" + ] + }, + "line": 1, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/func_exception.golden b/PyTutorGAE/tests/backend-tests/func_exception.golden new file mode 100644 index 000000000..08975e74f --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/func_exception.golden @@ -0,0 +1,270 @@ +{ + "code": "def g(x,y):\n print(\"In g\")\n ans = x/y\n return ans\n \ng(5, 0)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "exception" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "", + "stack_to_render": [], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 6, + "event": "exception" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/generator_test.golden b/PyTutorGAE/tests/backend-tests/generator_test.golden new file mode 100644 index 000000000..845c6114f --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/generator_test.golden @@ -0,0 +1,100 @@ +{ + "code": "x = (e for e in range(10))\ny = x\nz = (e for e in range(10))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/import_error.golden b/PyTutorGAE/tests/backend-tests/import_error.golden new file mode 100644 index 000000000..495ab6d33 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/import_error.golden @@ -0,0 +1,64 @@ +security breach +{ + "code": "# should NOT allow for any imports\nimport os\n\nos.system(\"echo security breach\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "os", + "__package__" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "os": [ + "REF", + 1 + ], + "__package__": null + }, + "heap": { + "1": [ + "module", + "" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "os", + "__package__" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "os": [ + "REF", + 1 + ], + "__package__": null + }, + "heap": { + "1": [ + "module", + "" + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/infinite_loop.golden b/PyTutorGAE/tests/backend-tests/infinite_loop.golden new file mode 100644 index 000000000..1a9abd1e8 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/infinite_loop.golden @@ -0,0 +1,7545 @@ +{ + "code": "# Fibonacci!!!\n\narr = [1, 1]\n\nprint arr[0]\n\nwhile True:\n print arr[-1]\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1, + 2 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5, + 8 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8, + 13 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13, + 21 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21, + 34 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34, + 55 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55, + 89 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89, + 144 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144, + 233 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233, + 377 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377, + 610 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610, + 987 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987, + 1597 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597, + 2584 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584, + 4181 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181, + 6765 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765, + 10946 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946, + 17711 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711, + 28657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657, + 46368 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368, + 75025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025, + 121393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393, + 196418 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418, + 317811 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811, + 514229 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229, + 832040 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040, + 1346269 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269, + 2178309 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309, + 3524578 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578, + 5702887 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887, + 9227465 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465, + 14930352 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352, + 24157817 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817, + 39088169 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169, + 63245986 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986, + 102334155 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155, + 165580141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141, + 267914296 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296, + 433494437 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437, + 701408733 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733, + 1134903170 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170, + 1836311903 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903, + 2971215073 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073, + 4807526976 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976, + 7778742049 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049, + 12586269025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025, + 20365011074 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074, + 32951280099 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099, + 53316291173 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173, + 86267571272 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272, + 139583862445 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445, + 225851433717 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717, + 365435296162 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162, + 591286729879 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879, + 956722026041 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041, + 1548008755920 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920, + 2504730781961 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden b/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden new file mode 100644 index 000000000..dec2f630d --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden @@ -0,0 +1,3009 @@ +{ + "code": "while 1: print \"hahahaha\"\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/lambda_1.golden b/PyTutorGAE/tests/backend-tests/lambda_1.golden new file mode 100644 index 000000000..ae5ae9068 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/lambda_1.golden @@ -0,0 +1,5460 @@ +{ + "code": "def summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint sumsquares(1, 5)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "s": 0, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f4", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f4", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f5", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f5", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f6", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f6", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f7", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f7", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f7", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f9", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f9", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f9", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f10", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f10", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f10", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f11", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f11", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f11", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f12", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f12", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f12", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "__return__": 55, + "x": 6 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "__return__": 55, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "__return__": 55, + "x": 6 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p_z", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "55\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "__return__": 55, + "x": 6 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p_z", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/list_dict_test.golden b/PyTutorGAE/tests/backend-tests/list_dict_test.golden new file mode 100644 index 000000000..bd24d36df --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/list_dict_test.golden @@ -0,0 +1,416 @@ +{ + "code": "x = {}\nl = ['hello', \"world\", 'goodbye']\nfor (i, e) in enumerate(l):\n x[e] = i\nprint x\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": [ + "REF", + 1 + ], + "e": "hello", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": [ + "REF", + 1 + ], + "e": "hello", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 1 + ], + "e": "world", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 1 + ], + "e": "world", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "{'world': 1, 'hello': 0, 'goodbye': 2}\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/list_test.golden b/PyTutorGAE/tests/backend-tests/list_test.golden new file mode 100644 index 000000000..9d34156ff --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/list_test.golden @@ -0,0 +1,48 @@ +{ + "code": "x = [1, 2, \"hello\", (3, 4)]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + "hello", + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 1, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/newstyle_class.golden b/PyTutorGAE/tests/backend-tests/newstyle_class.golden new file mode 100644 index 000000000..f428115c5 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/newstyle_class.golden @@ -0,0 +1,1597 @@ +{ + "code": "class A(object):\n bla = \"A\"\n def __init__(self):\n self.blb = \"B\"\n\n def x(self):\n self.bla = self.blb\n\na = A()\n\na.x()\n\nprint a.bla\nprint A.bla\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "bla": "A" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [ + "bla" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p", + "ordered_varnames": [ + "__init__", + "bla" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "x_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "x_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "x_f3", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "B\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "B\nA\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 14, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/one_func.golden b/PyTutorGAE/tests/backend-tests/one_func.golden new file mode 100644 index 000000000..fc82f73f5 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/one_func.golden @@ -0,0 +1,350 @@ +{ + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\nx = 5\ny = 10\nz = x * y\nprint add(x, y, z)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5, + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/open_error.golden b/PyTutorGAE/tests/backend-tests/open_error.golden new file mode 100644 index 000000000..768b56878 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/open_error.golden @@ -0,0 +1,1233 @@ +{ + "code": "for line in open(\"/etc/passwd\"):\n print line\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "root:x:0:0:root:/root:/bin/bash\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "root:x:0:0:root:/root:/bin/bash\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "bin:x:2:2:bin:/bin:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "bin:x:2:2:bin:/bin:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "sys:x:3:3:sys:/dev:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "sys:x:3:3:sys:/dev:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "sync:x:4:65534:sync:/bin:/bin/sync\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "sync:x:4:65534:sync:/bin:/bin/sync\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "games:x:5:60:games:/usr/games:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "games:x:5:60:games:/usr/games:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "man:x:6:12:man:/var/cache/man:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "man:x:6:12:man:/var/cache/man:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "lp:x:7:7:lp:/var/spool/lpd:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "lp:x:7:7:lp:/var/spool/lpd:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "mail:x:8:8:mail:/var/mail:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "mail:x:8:8:mail:/var/mail:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "news:x:9:9:news:/var/spool/news:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "news:x:9:9:news:/var/spool/news:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "proxy:x:13:13:proxy:/bin:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "proxy:x:13:13:proxy:/bin:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "www-data:x:33:33:www-data:/var/www:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "www-data:x:33:33:www-data:/var/www:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "backup:x:34:34:backup:/var/backups:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "backup:x:34:34:backup:/var/backups:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "list:x:38:38:Mailing List Manager:/var/list:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "list:x:38:38:Mailing List Manager:/var/list:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "irc:x:39:39:ircd:/var/run/ircd:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "irc:x:39:39:ircd:/var/run/ircd:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "nobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "nobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "libuuid:x:100:101::/var/lib/libuuid:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "libuuid:x:100:101::/var/lib/libuuid:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "syslog:x:101:103::/home/syslog:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "syslog:x:101:103::/home/syslog:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "messagebus:x:102:107::/var/run/dbus:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "messagebus:x:102:107::/var/run/dbus:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "avahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "avahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "avahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "avahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "speech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "speech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "usbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "usbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "haldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "haldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "pulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "pulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "rtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "rtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "saned:x:112:118::/home/saned:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "saned:x:112:118::/home/saned:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "hplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "hplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "gdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "gdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "puppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "puppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "ntp:x:116:123::/home/ntp:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "ntp:x:116:123::/home/ntp:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "postfix:x:117:124::/var/spool/postfix:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "postfix:x:117:124::/var/spool/postfix:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "statd:x:118:65534::/var/lib/nfs:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "statd:x:118:65534::/var/lib/nfs:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "sshd:x:119:65534::/var/run/sshd:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "sshd:x:119:65534::/var/run/sshd:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "tss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "tss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "distccd:x:120:65534::/:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "distccd:x:120:65534::/:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "x20:x:903:65534::/nonexistent:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "x20:x:903:65534::/nonexistent:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "objfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "objfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "srcfs:x:905:65534::/nonexistent:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\nsrcfs:x:905:65534::/nonexistent:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "srcfs:x:905:65534::/nonexistent:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\nsrcfs:x:905:65534::/nonexistent:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "crudd:x:906:65534::/nonexistent:/bin/false\n" + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\nsrcfs:x:905:65534::/nonexistent:/bin/false\n\ncrudd:x:906:65534::/nonexistent:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "crudd:x:906:65534::/nonexistent:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "line" + ], + "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\nsrcfs:x:905:65534::/nonexistent:/bin/false\n\ncrudd:x:906:65534::/nonexistent:/bin/false\n\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "line": "crudd:x:906:65534::/nonexistent:/bin/false\n" + }, + "heap": {}, + "line": 1, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/parse_error.golden b/PyTutorGAE/tests/backend-tests/parse_error.golden new file mode 100644 index 000000000..d16836a2c --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/parse_error.golden @@ -0,0 +1,11 @@ +{ + "code": "x = 0\nfor i in range(10):\n x += 1\n print x\n x += 1\n\n", + "trace": [ + { + "exception_msg": "Error: unexpected indent", + "line": 4, + "event": "uncaught_exception", + "offset": 3 + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/parse_error_2.golden b/PyTutorGAE/tests/backend-tests/parse_error_2.golden new file mode 100644 index 000000000..52ebc60a5 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/parse_error_2.golden @@ -0,0 +1,11 @@ +{ + "code": "x = 5\ny = x\nz = x + y\n\nfor x haslk;fjlasfhlkjl;sa\n", + "trace": [ + { + "exception_msg": "Error: invalid syntax", + "line": 5, + "event": "uncaught_exception", + "offset": 11 + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/parse_error_3.golden b/PyTutorGAE/tests/backend-tests/parse_error_3.golden new file mode 100644 index 000000000..cc161e2b7 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/parse_error_3.golden @@ -0,0 +1,11 @@ +{ + "code": "x = []\nfor i in range(10):\n x.append(i)\n if i == 24:\n pass\n print y\n", + "trace": [ + { + "exception_msg": "Error: unindent does not match any outer indentation level", + "line": 6, + "event": "uncaught_exception", + "offset": 11 + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/print_builtins_error.golden b/PyTutorGAE/tests/backend-tests/print_builtins_error.golden new file mode 100644 index 000000000..dc24fd227 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/print_builtins_error.golden @@ -0,0 +1,19 @@ +{ + "code": "print __builtins__\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "exception_msg": "Unknown error", + "event": "uncaught_exception" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/runtime_error.golden b/PyTutorGAE/tests/backend-tests/runtime_error.golden new file mode 100644 index 000000000..59761ea5d --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/runtime_error.golden @@ -0,0 +1,440 @@ +{ + "code": "x = 5\nfor i in range(10):\n if i == x:\n z = x + y # ERROR!\n else:\n z = i\n print z\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "exception_msg": "NameError: name 'y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 4, + "event": "exception" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/set_test.golden b/PyTutorGAE/tests/backend-tests/set_test.golden new file mode 100644 index 000000000..bf39a5207 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/set_test.golden @@ -0,0 +1,151 @@ +{ + "code": "x = set()\nx.add('a')\nx.add('a')\nx.add('b')\nx.add('c')\nx.add('b')\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "b" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "c", + "b" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "c", + "b" + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/simple.golden b/PyTutorGAE/tests/backend-tests/simple.golden new file mode 100644 index 000000000..2fc4b4ab8 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/simple.golden @@ -0,0 +1,501 @@ +{ + "code": "x = 5\ny = 10\nz = x * y\nprint \"HELLO WORLD\"\nfor i in range(10):\n print z * i\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 50 + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "HELLO WORLD\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 50 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 8, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 8, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n450\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n450\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "y": 10, + "z": 50, + "x": 5 + }, + "heap": {}, + "line": 5, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/three_lists.golden b/PyTutorGAE/tests/backend-tests/three_lists.golden new file mode 100644 index 000000000..27775034e --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/three_lists.golden @@ -0,0 +1,632 @@ +{ + "code": "# test case submitted by Peter Wentworth (p.wentworth@ru.ac.za)\n\ndef f(xs):\n print(xs)\n\na = [10, 20, 30]\nb = a\nc = [10, 20, 30]\nd = 24\ne = (a, b, c)\n\nf(b)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "[10, 20, 30]\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "[10, 20, 30]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/tuple_test.golden b/PyTutorGAE/tests/backend-tests/tuple_test.golden new file mode 100644 index 000000000..f1c5b4fc3 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/tuple_test.golden @@ -0,0 +1,72 @@ +{ + "code": "x = (1, 2, 3)\ny = (4,)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2, + 3 + ], + "2": [ + "TUPLE", + 4 + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/two_funcs.golden b/PyTutorGAE/tests/backend-tests/two_funcs.golden new file mode 100644 index 000000000..9d15f9734 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/two_funcs.golden @@ -0,0 +1,1453 @@ +{ + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\ndef double_add(a, b, c):\n x = add(a, b, c)\n y = add(a, b, c)\n return x + y\n\nx = 5\ny = 10\nz = x * y\nprint add(x, y, z)\nprint double_add(x, y, z)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5, + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10, + "y": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x", + "y" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "__return__": 130, + "y": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n130\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 14, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/golden_test.py b/PyTutorGAE/tests/golden_test.py index ad4563c57..9149c5d84 100644 --- a/PyTutorGAE/tests/golden_test.py +++ b/PyTutorGAE/tests/golden_test.py @@ -2,17 +2,18 @@ A simple framework for regression testing based on golden files by Philip Guo -customized for the Online Python Tutor project +(sloppily) customized for the Online Python Tutor project ''' -import os, shutil, optparse, difflib +import os, re, shutil, optparse, difflib from subprocess import * -PROGRAM = 'python' +PROGRAM = ['python', '../generate_json_trace.py'] INPUT_FILE_EXTENSION = '.txt' # input test files are .txt, NOT .py -OUTPUT_FILE = 'out.trace' + +TEST_DIR = '.' ALL_TESTS = [] @@ -34,16 +35,22 @@ def execute(input_filename): (base, ext) = os.path.splitext(input_filename) assert ext == INPUT_FILE_EXTENSION - (stdout, stderr) = Popen([PROGRAM, input_filename], stdout=PIPE, stderr=PIPE). communicate() + (stdout, stderr) = Popen(PROGRAM + [input_filename], stdout=PIPE, stderr=PIPE).communicate() if stderr: - print ' CONTAINS ERROR' - #print '{' - #print stderr, '}' + print ' (has stderr)' + # print ' stderr {' + # print stderr, '}' - assert os.path.isfile(OUTPUT_FILE) + # capture stdout into outfile, filtering out machine-specific addresses outfile = base + '.out' - os.rename(OUTPUT_FILE, outfile) + outf = open(outfile, 'w') + + for line in stdout.splitlines(): + filtered_line = re.sub(' 0x.+?>', ' 0xADDR>', line) + print >> outf, filtered_line + + outf.close() def clobber_golden_file(golden_file): diff --git a/example-code/aliasing.golden b/example-code/aliasing.golden new file mode 100644 index 000000000..f674bbff3 --- /dev/null +++ b/example-code/aliasing.golden @@ -0,0 +1,2067 @@ +{ + "code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print myLst\n\nfoo(x)\nfoo(z)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 2 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 5 + ], + "bar": [ + "REF", + 6 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 4 + ], + "bar": [ + "REF", + 6 + ], + "foo": [ + "REF", + 5 + ] + }, + "heap": { + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "5": [ + "FUNCTION", + "foo(lst)", + null + ], + "6": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/example-code/aliasing/aliasing1.golden b/example-code/aliasing/aliasing1.golden new file mode 100644 index 000000000..00383dd48 --- /dev/null +++ b/example-code/aliasing/aliasing1.golden @@ -0,0 +1,98 @@ +{ + "code": "a = (1, (2, (3, None)))\nb = a[1]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/example-code/aliasing/aliasing2.golden b/example-code/aliasing/aliasing2.golden new file mode 100644 index 000000000..ab6c203f4 --- /dev/null +++ b/example-code/aliasing/aliasing2.golden @@ -0,0 +1,90 @@ +{ + "code": "c = (1, (2, None))\nd = (1, c)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ], + "3": [ + "TUPLE", + 1, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/example-code/aliasing/aliasing3.golden b/example-code/aliasing/aliasing3.golden new file mode 100644 index 000000000..a0bded930 --- /dev/null +++ b/example-code/aliasing/aliasing3.golden @@ -0,0 +1,335 @@ +{ + "code": "l1, l2, l3, l4 = 1, 2, 3, 4\n\nt1 = (l1, l2)\nt2 = (l3, l4)\nt = (t1, t2)\nu = ((1, 2), (3, 4))\nv = u[0]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "l4": 4, + "t1": [ + "REF", + 1 + ], + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "5": [ + "TUPLE", + 1, + 2 + ], + "6": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t", + "u", + "v" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "v": [ + "REF", + 5 + ], + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "5": [ + "TUPLE", + 1, + 2 + ], + "6": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/example-code/aliasing/aliasing4.golden b/example-code/aliasing/aliasing4.golden new file mode 100644 index 000000000..0d440f81a --- /dev/null +++ b/example-code/aliasing/aliasing4.golden @@ -0,0 +1,67 @@ +{ + "code": "x = [1, 2, 3]\nx.append(x)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/example-code/aliasing/aliasing5.golden b/example-code/aliasing/aliasing5.golden new file mode 100644 index 000000000..af82d0118 --- /dev/null +++ b/example-code/aliasing/aliasing5.golden @@ -0,0 +1,455 @@ +{ + "code": "x = None\nfor i in range(5, 0, -1):\n x = (i, x)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + 1, + [ + "REF", + 4 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + 1, + [ + "REF", + 4 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/example-code/aliasing/aliasing6.golden b/example-code/aliasing/aliasing6.golden new file mode 100644 index 000000000..71b2ac9b6 --- /dev/null +++ b/example-code/aliasing/aliasing6.golden @@ -0,0 +1,327 @@ +{ + "code": "# wow, this looks gross :)\nt1 = (1, 2)\nt2 = (3, 4)\nt = [t1, t2]\nu = [t, t, t]\nu[1] = u\nt[0] = u\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 3 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 4 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/example-code/aliasing/aliasing7.golden b/example-code/aliasing/aliasing7.golden new file mode 100644 index 000000000..fc49379b4 --- /dev/null +++ b/example-code/aliasing/aliasing7.golden @@ -0,0 +1,248 @@ +{ + "code": "x = (3, {'joe': 'M', 'jane': 'F'})\ny = (2, x)\nz = (1, y)\nw = (x, y, z)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ], + "4": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "w" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 4 + ], + "w": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ], + "4": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/example-code/aliasing/aliasing8.golden b/example-code/aliasing/aliasing8.golden new file mode 100644 index 000000000..20ddeb5fb --- /dev/null +++ b/example-code/aliasing/aliasing8.golden @@ -0,0 +1,229 @@ +{ + "code": "# test whether heap objects \"jiggle\" between steps\nx = [1, [2, [3, None]]]\ny = [4, [5, [6, None]]]\n\nx[1][1] = y[1] # hopefully no jiggle!\n\nx = set(['apple', 'banana', 'carrot'])\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "LIST", + 3, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "LIST", + 3, + null + ], + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 5 + ] + ], + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 7 + ] + }, + "heap": { + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ], + "7": [ + "SET", + "carrot", + "apple", + "banana" + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/example-code/closures/closure1.golden b/example-code/closures/closure1.golden new file mode 100644 index 000000000..3652e7a3f --- /dev/null +++ b/example-code/closures/closure1.golden @@ -0,0 +1,567 @@ +{ + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\nb = foo(1)\nb(2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/example-code/closures/closure2.golden b/example-code/closures/closure2.golden new file mode 100644 index 000000000..e7a544a04 --- /dev/null +++ b/example-code/closures/closure2.golden @@ -0,0 +1,1764 @@ +{ + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\ndef foo_deux(y):\n def bar_deux(x):\n return x + y\n return bar_deux\n\nb = foo(1)\nb_deux = foo_deux(1000)\n\nb(2) \nb_deux(2000)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p", + "ordered_varnames": [ + "y", + "bar_deux" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 3000, + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/example-code/closures/closure3.golden b/example-code/closures/closure3.golden new file mode 100644 index 000000000..fe2310a1a --- /dev/null +++ b/example-code/closures/closure3.golden @@ -0,0 +1,1400 @@ +{ + "code": "def foo(x):\n def bar(y):\n def baz(z):\n return len(x) + len(y) + len(z)\n return baz\n return bar([4,5,6,7])\n\nl = [1,2,3]\nx = foo(l)\nx([8,9,10,11,12])\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "y", + "baz" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 12, + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/example-code/closures/closure4.golden b/example-code/closures/closure4.golden new file mode 100644 index 000000000..914a59b4e --- /dev/null +++ b/example-code/closures/closure4.golden @@ -0,0 +1,1457 @@ +{ + "code": "def f(x):\n def g(y):\n return x + y\n return g\n\ng1 = f(1)\ng2 = f(2)\ng1(3) + g2(4)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3, + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4, + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/example-code/closures/closure5.golden b/example-code/closures/closure5.golden new file mode 100644 index 000000000..95ed6ae75 --- /dev/null +++ b/example-code/closures/closure5.golden @@ -0,0 +1,7684 @@ +{ + "code": "def f(x):\n def g(y, z):\n if z == 0:\n return y\n return g(x+y+z, z-1)\n return lambda: g(0, x)\n\nfoo = f(3)\nbar = f(4)\nbaz = foo() + bar()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "__return__": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "__return__": 15, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "__return__": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "__return__": 15, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "__return__": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "__return__": 26, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "__return__": 26, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "__return__": 26, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "__return__": 26, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 26 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar", + "baz" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "bar": [ + "REF", + 5 + ], + "foo": [ + "REF", + 3 + ], + "baz": 41, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "\u03bb()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "\u03bb()", + 2 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/example-code/closures/lambda-param.golden b/example-code/closures/lambda-param.golden new file mode 100644 index 000000000..57c68cc3e --- /dev/null +++ b/example-code/closures/lambda-param.golden @@ -0,0 +1,797 @@ +{ + "code": "def foo(x):\n bar(lambda y: x + y)\n\ndef bar(a):\n print a(20)\n\nfoo(10)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(y)", + 2 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(y)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "y", + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(y)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "y", + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(y)", + 2 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20, + "x": 10, + "__return__": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "y", + "x", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(y)", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(y)", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(y)", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(y)", + 2 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/example-code/fact.golden b/example-code/fact.golden new file mode 100644 index 000000000..1df6def65 --- /dev/null +++ b/example-code/fact.golden @@ -0,0 +1,1909 @@ +{ + "code": "# dumb recursive factorial\ndef fact(n):\n if (n <= 1):\n return 1\n else:\n return n * fact(n - 1)\n\nprint fact(6)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 1, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 6, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 24, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 120, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 720, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "720\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/example-code/fib.golden b/example-code/fib.golden new file mode 100644 index 000000000..5533695de --- /dev/null +++ b/example-code/fib.golden @@ -0,0 +1,7545 @@ +{ + "code": "# Infinite Fibonacci!!!\n\narr = [1, 1]\n\nprint arr[0]\n\nwhile True:\n print arr[-1]\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1, + 2 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5, + 8 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8, + 13 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13, + 21 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21, + 34 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34, + 55 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55, + 89 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89, + 144 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144, + 233 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233, + 377 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377, + 610 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610, + 987 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987, + 1597 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597, + 2584 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584, + 4181 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181, + 6765 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765, + 10946 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946, + 17711 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711, + 28657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657, + 46368 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368, + 75025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025, + 121393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393, + 196418 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418, + 317811 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811, + 514229 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229, + 832040 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040, + 1346269 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269, + 2178309 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309, + 3524578 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578, + 5702887 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887, + 9227465 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465, + 14930352 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352, + 24157817 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817, + 39088169 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169, + 63245986 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986, + 102334155 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155, + 165580141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141, + 267914296 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296, + 433494437 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437, + 701408733 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733, + 1134903170 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170, + 1836311903 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903, + 2971215073 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073, + 4807526976 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976, + 7778742049 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049, + 12586269025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025, + 20365011074 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074, + 32951280099 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099, + 53316291173 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173, + 86267571272 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272, + 139583862445 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445, + 225851433717 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717, + 365435296162 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162, + 591286729879 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879, + 956722026041 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041, + 1548008755920 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920, + 2504730781961 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/example-code/filter.golden b/example-code/filter.golden new file mode 100644 index 000000000..e189a782e --- /dev/null +++ b/example-code/filter.golden @@ -0,0 +1,1505 @@ +{ + "code": "input = [(\"Mary\", 27), (\"Joe\", 30), (\"Ruth\", 43), (\"Bob\", 17), (\"Jenny\", 22)]\n\nyoungPeople = []\n\nfor (person, age) in input:\n if age < 30:\n youngPeople.append(person)\n else:\n print \"HAHA\", person, \"is too old!\"\n\nprint \"There are\", len(youngPeople), \"young people\"\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 1 + ], + "youngPeople": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\nThere are 3 young people\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 11, + "event": "return" + } + ] +} diff --git a/example-code/ins_sort.golden b/example-code/ins_sort.golden new file mode 100644 index 000000000..a7f4751dd --- /dev/null +++ b/example-code/ins_sort.golden @@ -0,0 +1,3538 @@ +{ + "code": "# from: http://www.ece.uci.edu/~chou/py02/python.html\ndef InsertionSort(A):\n for j in range(1, len(A)):\n key = A[j]\n i = j - 1\n while (i >= 0) and (A[i] > key):\n A[i+1] = A[i]\n i = i - 1\n A[i+1] = key\n\ninput = [8, 3, 9, 15, 29, 7, 10]\nInsertionSort(input)\nprint input\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "j": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 2, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 3, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 4, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 6, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "__return__": null, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i", + "__return__" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "[3, 7, 8, 9, 10, 15, 29]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 13, + "event": "return" + } + ] +} diff --git a/example-code/linked-lists/ll1.golden b/example-code/linked-lists/ll1.golden new file mode 100644 index 000000000..1da0bbfb2 --- /dev/null +++ b/example-code/linked-lists/ll1.golden @@ -0,0 +1,1977 @@ +{ + "code": "# use lists\nx = None\nfor i in range(6, 0, -1):\n x = [i, x]\n\n# use tuples\ny = None\nfor i in range(6, 0, -1):\n y = (i, y)\n\nx[1][0]=y[1][1] # courtesy of John DeNero!\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": null + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": null + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 6 + ], + "y": null + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 9 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 9 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 10 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 10 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 11 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 11 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 12 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 12 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + [ + "REF", + 10 + ], + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 11, + "event": "return" + } + ] +} diff --git a/example-code/linked-lists/ll2.golden b/example-code/linked-lists/ll2.golden new file mode 100644 index 000000000..6437333ed --- /dev/null +++ b/example-code/linked-lists/ll2.golden @@ -0,0 +1,10032 @@ +{ + "code": "# use dicts\nx = None\nfor i in range(6, 0, -1):\n x = {'data': i, 'next': x}\n\n# use objects\nclass Node:\n def __init__(self, data, next):\n self.data = data\n self.next = next\n\ny = None\nfor i in range(6, 0, -1):\n y = Node(i, y)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": null + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "Node", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Node", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Node_f1", + "ordered_varnames": [] + } + ], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "Node", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Node", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Node_f1", + "ordered_varnames": [] + } + ], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "Node", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Node", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Node_f1", + "ordered_varnames": [] + } + ], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "Node", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Node", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 10 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 5, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 5, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 5, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 11 + ], + "data": 5, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 4, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 4, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 4, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 12 + ], + "data": 4, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 3, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 3, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 3, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 13 + ], + "data": 3, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 2, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 2, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 2, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 14 + ], + "data": 2, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "self": [ + "REF", + 15 + ], + "data": 1, + "next": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f7", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "self": [ + "REF", + 15 + ], + "data": 1, + "next": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f7", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "self": [ + "REF", + 15 + ], + "data": 1, + "next": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f7", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 15 + ], + "data": 1, + "next": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f7", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 14 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 15 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 14 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "y": [ + "REF", + 15 + ], + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 14 + ] + ] + ] + }, + "line": 13, + "event": "return" + } + ] +} diff --git a/example-code/map.golden b/example-code/map.golden new file mode 100644 index 000000000..4334221df --- /dev/null +++ b/example-code/map.golden @@ -0,0 +1,6996 @@ +{ + "code": "# Functional programming with map\n# Adapted from MIT 6.01 course notes (Section A.2.3)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef map(func, lst):\n if lst == []:\n return []\n else:\n return [func(lst[0])] + map(func, lst[1:])\n \ndef halveElements(lst):\n return map(lambda x: x / 2.0, lst)\n \ninput = [2, 4, 6, 8, 10]\noutput = halveElements(input)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1.0, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 2.0, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 3.0, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 4.0, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 5.0, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": [ + "REF", + 10 + ], + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ], + "10": [ + "LIST" + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": [ + "REF", + 11 + ], + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "11": [ + "LIST", + 5.0 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": [ + "REF", + 12 + ], + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "12": [ + "LIST", + 4.0, + 5.0 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": [ + "REF", + 13 + ], + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "13": [ + "LIST", + 3.0, + 4.0, + 5.0 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 14 + ], + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "14": [ + "LIST", + 2.0, + 3.0, + 4.0, + 5.0 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "15": [ + "LIST", + 1.0, + 2.0, + 3.0, + 4.0, + 5.0 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p_z", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "15": [ + "LIST", + 1.0, + 2.0, + 3.0, + 4.0, + 5.0 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input", + "output" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "map", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "map_f2_p_z", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "output": [ + "REF", + 15 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "15": [ + "LIST", + 1.0, + 2.0, + 3.0, + 4.0, + 5.0 + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/example-code/memo_fib.golden b/example-code/memo_fib.golden new file mode 100644 index 000000000..abb03047a --- /dev/null +++ b/example-code/memo_fib.golden @@ -0,0 +1,10715 @@ +{ + "code": "# use memoization to make the recursive Fibonacci\n# implementation only take O(n) time and space\n\nMemoTable = {}\n\ndef MemoizedFib(n):\n if n <= 2:\n return 1\n\n if n in MemoTable:\n return MemoTable[n]\n\n MemoTable[n] = MemoizedFib(n-1) + MemoizedFib(n-2)\n return MemoTable[n]\n\n\nres = MemoizedFib(10)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 1, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 1, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 1, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 3, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 5, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": 3, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 8, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 5, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 13, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": 8, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 21, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 13, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 34, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "__return__": 21, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 55, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib", + "res" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "res": 55, + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 17, + "event": "return" + } + ] +} diff --git a/example-code/oop_1.golden b/example-code/oop_1.golden new file mode 100644 index 000000000..c6febe7f9 --- /dev/null +++ b/example-code/oop_1.golden @@ -0,0 +1,2448 @@ +{ + "code": "# Object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601()\nprint pat.course\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint pat.building\npat.building = 32\nprint pat.building\n\nprint pat.salutation()\nprint Staff601.salutation(pat)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "course" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "room": 501 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course", + "room" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ] + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\nProfessor Pat\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "salutation": [ + "REF", + 1 + ], + "room": 501, + "__return__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/example-code/oop_2.golden b/example-code/oop_2.golden new file mode 100644 index 000000000..a62b91d30 --- /dev/null +++ b/example-code/oop_2.golden @@ -0,0 +1,2236 @@ +{ + "code": "# The __init__ 'constructor' - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def __init__(self, name, role, years, salary):\n self.name = name\n self.role = role\n self.age = years\n self.salary = salary\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601('Pat', 'Professor', 60, 100000)\nprint pat.salutation()\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "course" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "room": 501 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course", + "room" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "room": 501, + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "name": "Pat", + "self": [ + "REF", + 5 + ], + "years": 60, + "role": "Professor", + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "Professor Pat\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ], + "__init__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 20, + "event": "return" + } + ] +} diff --git a/example-code/oop_inherit.golden b/example-code/oop_inherit.golden new file mode 100644 index 000000000..8b3640434 --- /dev/null +++ b/example-code/oop_inherit.golden @@ -0,0 +1,3181 @@ +{ + "code": "# Inheritance - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def giveRaise(self, percentage):\n self.salary = self.salary + self.salary * percentage\n\nclass Prof601(Staff601):\n salary = 100000\n\n def __init__(self, name, age):\n self.name = name\n self.giveRaise((age - 18) * 0.03)\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Prof601('Pat', 60)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "course" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "room": 501 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course", + "room" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2", + "ordered_varnames": [] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2", + "ordered_varnames": [] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2", + "ordered_varnames": [] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2", + "ordered_varnames": [ + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p", + "ordered_varnames": [ + "__init__", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ] + }, + "line": 20, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__return__": [ + "REF", + 6 + ], + "salutation": [ + "REF", + 5 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__return__": [ + "REF", + 6 + ], + "salutation": [ + "REF", + 5 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601" + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__return__": [ + "REF", + 6 + ], + "salutation": [ + "REF", + 5 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__return__": [ + "REF", + 6 + ], + "salutation": [ + "REF", + 5 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__return__": [ + "REF", + 6 + ], + "salutation": [ + "REF", + 5 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "percentage": 1.26, + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "giveRaise_f4", + "ordered_varnames": [ + "self", + "percentage" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__return__": [ + "REF", + 6 + ], + "salutation": [ + "REF", + 5 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "percentage": 1.26, + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "giveRaise_f4", + "ordered_varnames": [ + "self", + "percentage" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__return__": [ + "REF", + 6 + ], + "salutation": [ + "REF", + 5 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "percentage": 1.26, + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "giveRaise_f4", + "ordered_varnames": [ + "self", + "percentage", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + 226000.0 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__return__": [ + "REF", + 6 + ], + "salutation": [ + "REF", + 5 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + 226000.0 + ] + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "__return__": [ + "REF", + 2 + ], + "giveRaise": [ + "REF", + 1 + ], + "room": 501 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__return__": [ + "REF", + 6 + ], + "salutation": [ + "REF", + 5 + ], + "__init__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 8 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "5": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 4 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + 226000.0 + ] + ] + }, + "line": 23, + "event": "return" + } + ] +} diff --git a/example-code/oop_small.golden b/example-code/oop_small.golden new file mode 100644 index 000000000..53cc18a79 --- /dev/null +++ b/example-code/oop_small.golden @@ -0,0 +1,2093 @@ +{ + "code": "class A:\n x = 1\n y = 'hello'\n\nclass B:\n z = 'bye'\n\nclass C(A,B):\n def salutation(self):\n return '%d %s %s' % (self.x, self.y, self.z)\n\ninst = C()\nprint inst.salutation()\ninst.x = 100\nprint inst.salutation()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": "hello", + "x": 1, + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "y", + "hello" + ], + [ + "x", + 1 + ] + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "B", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "B", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "B_f2", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "B", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "B", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "B_f2", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "B", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "B", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "B_f2", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "B", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "z": "bye" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "B", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "B_f2", + "ordered_varnames": [ + "z", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "3": [ + "DICT", + [ + "z", + "bye" + ] + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "C", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "C", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "C_f3", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "C", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "C", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "C_f3", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "C", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "C", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "C_f3", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "C", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "C", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f4", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f4", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": "1 hello bye", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f4", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f5", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f5", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": "100 hello bye", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f5", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n100 hello bye\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 5 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/example-code/py_tutorial.golden b/example-code/py_tutorial.golden new file mode 100644 index 000000000..c46ed318f --- /dev/null +++ b/example-code/py_tutorial.golden @@ -0,0 +1,4754 @@ +{ + "code": "# Philip's 10-minute intro to Python\n\n# numbers!\nage = 26\npi = 3.14159\n\n# strings!\ns = 'Rutherford Birchard Hayes'\ntokens = s.split()\nfirstName = tokens[0]\nmiddleName = tokens[1]\nlastName = tokens[2]\ns2 = firstName + ' ' + middleName + ' ' + lastName\n\n# 'if' statement - indentation matters!\nif (s == s2):\n print 'yes!!!'\nelse:\n print 'nooooooo'\n\n# list (mutable sequence)\nbeatles = ['John', 'Paul', 'George']\nbeatles.append('Ringo')\n\n# 'for' loop - indentation matters!\nfor b in beatles:\n print 'Hello', b\n\n# tuple (immutable sequence)\nages = (18, 21, 28, 21, 22, 18, 19, 34, 9)\n\n# set (no order, no duplicates)\nuniqueAges = set(ages)\nuniqueAges.add(18) # already in set, no effect\nuniqueAges.remove(21)\n\n# no guaranteed order when iterating over a set\nfor thisAge in uniqueAges:\n print thisAge\n\n# testing set membership\nif 18 in uniqueAges:\n print 'There is an 18-year-old present!'\n\n# sorting\nbeatles.sort() # in-place\norderedUniqueAges = sorted(uniqueAges) # new list\n\n# dict - mapping unique keys to values\nnetWorth = {}\nnetWorth['Donald Trump'] = 3000000000\nnetWorth['Bill Gates'] = 58000000000\nnetWorth['Tom Cruise'] = 40000000\nnetWorth['Joe Postdoc'] = 20000\n\n# iterating over key-value pairs:\nfor (person, worth) in netWorth.iteritems():\n if worth < 1000000:\n print 'haha', person, 'is not a millionaire'\n\n# testing dict membership\nif 'Tom Cruise' in netWorth:\n print 'show me the money!'\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26, + "pi": 3.1415899999999999 + }, + "heap": {}, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26, + "pi": 3.1415899999999999, + "s": "Rutherford Birchard Hayes" + }, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "age": 26, + "pi": 3.1415899999999999, + "s": "Rutherford Birchard Hayes" + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "age": 26, + "pi": 3.1415899999999999, + "s": "Rutherford Birchard Hayes", + "firstName": "Rutherford" + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "John", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "John", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Paul", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Paul", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "George", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "George", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 30, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 21, + 22, + 28 + ] + }, + "line": 34, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 21, + 22, + 28 + ] + }, + "line": 35, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 34, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 34, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 9, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 9, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 18, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 18, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 19, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 19, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 22, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 22, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 42, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 46, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 47, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "orderedUniqueAges": [ + "REF", + 5 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "uniqueAges": [ + "REF", + 4 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ] + }, + "line": 50, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT" + ] + }, + "line": 51, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ] + ] + }, + "line": 52, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ] + ] + }, + "line": 53, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 54, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Donald Trump", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 3000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Donald Trump", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 3000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Bill Gates", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 58000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Bill Gates", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 58000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 59, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 62, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 63, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\nshow me the money!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.1415899999999999, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 63, + "event": "return" + } + ] +} diff --git a/example-code/sqrt.golden b/example-code/sqrt.golden new file mode 100644 index 000000000..5d8be8e5d --- /dev/null +++ b/example-code/sqrt.golden @@ -0,0 +1,8929 @@ +{ + "code": "# Calculating square roots by Newton's method, inspired by SICP\n# http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html#%_sec_1.1.7\n\ndef sqrt(x):\n def average(a, b):\n return (a + b) / 2.0\n\n def is_good_enough(guess):\n return (abs((guess * guess) - x) < 0.001)\n\n def improve(guess):\n return average(guess, x / guess)\n\n def sqrt_iter(guess):\n if is_good_enough(guess):\n return guess\n else:\n return sqrt_iter(improve(guess))\n\n return sqrt_iter(1.0)\n\n\nans = sqrt(9)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ], + "is_good_enough": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "is_good_enough" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ], + "is_good_enough": [ + "REF", + 3 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": false, + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": 1.0, + "b": 9.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": 1.0, + "b": 9.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": 1.0, + "__return__": 5.0, + "b": 9.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5.0, + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": false, + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": 5.0, + "b": 1.8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": 5.0, + "b": 1.8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": 5.0, + "__return__": 3.3999999999999999, + "b": 1.8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 3.3999999999999999, + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": false, + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.3999999999999999, + "b": 2.6470588235294117 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.3999999999999999, + "b": 2.6470588235294117 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.3999999999999999, + "__return__": 3.0235294117647058, + "b": 2.6470588235294117 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 3.0235294117647058, + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": false, + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.0235294117647058, + "b": 2.9766536964980546 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.0235294117647058, + "b": 2.9766536964980546 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.0235294117647058, + "__return__": 3.0000915541313802, + "b": 2.9766536964980546 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 3.0000915541313802, + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.0000915541313802 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.0000915541313802 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.0000915541313802 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "guess": 3.0000915541313802 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.0000915541313802 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "guess": 3.0000915541313802 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.0000915541313802 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "__return__": true, + "guess": 3.0000915541313802 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.0000915541313802 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.0235294117647058 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "__return__": 3.0000915541313802, + "guess": 3.0000915541313802 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.3999999999999999 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 3.0000915541313802, + "guess": 3.0235294117647058 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 3.0000915541313802, + "guess": 3.3999999999999999 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3.0000915541313802, + "guess": 5.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3.0000915541313802, + "guess": 1.0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "__return__": 3.0000915541313802, + "x": 9, + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 20, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt", + "ans" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "__return__": 3.0000915541313802, + "x": 9, + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p_z", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ], + "ans": 3.0000915541313802 + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 23, + "event": "return" + } + ] +} diff --git a/example-code/strtok.golden b/example-code/strtok.golden new file mode 100644 index 000000000..2bd3a031a --- /dev/null +++ b/example-code/strtok.golden @@ -0,0 +1,258 @@ +{ + "code": "input = 'John,Doe,1984,4,1,male'\n\ntokens = input.split(',')\nfirstName = tokens[0]\nlastName = tokens[1]\nbirthdate = (int(tokens[2]), int(tokens[3]), int(tokens[4]))\nisMale = (tokens[5] == 'male')\n\nprint 'Hi', firstName, lastName\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": "John,Doe,1984,4,1,male" + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male", + "firstName": "John" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "lastName": "Doe", + "firstName": "John", + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "lastName": "Doe", + "firstName": "John", + "birthdate": [ + "REF", + 2 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate", + "isMale" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "isMale": true, + "firstName": "John", + "lastName": "Doe", + "birthdate": [ + "REF", + 2 + ], + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate", + "isMale" + ], + "stdout": "Hi John Doe\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "isMale": true, + "firstName": "John", + "lastName": "Doe", + "birthdate": [ + "REF", + 2 + ], + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/example-code/sum-cubes.golden b/example-code/sum-cubes.golden new file mode 100644 index 000000000..6eecbbe30 --- /dev/null +++ b/example-code/sum-cubes.golden @@ -0,0 +1,1693 @@ +{ + "code": "def summation(n, term, next):\n total, k = 0, 1\n while k <= n:\n total, k = total + term(k), next(k)\n return total\n\ndef cube(k):\n return pow(k, 3)\n\ndef successor(k):\n return k + 1\n\ndef sum_cubes(n):\n return summation(n, cube, successor)\n\nsum_cubes(3)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "n": 3, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "n": 3, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 1, + "k": 2, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "k": 2, + "n": 3, + "next": [ + "REF", + 3 + ], + "__return__": 1, + "total": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 1, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/example-code/sum.golden b/example-code/sum.golden new file mode 100644 index 000000000..aa7a44fb9 --- /dev/null +++ b/example-code/sum.golden @@ -0,0 +1,10030 @@ +{ + "code": "# Higher-order functions\n# Adapted from MIT 6.01 course notes (Section A.2.2)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint sumsquares(1, 10)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "s": 0, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f4", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f4", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f5", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f5", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f6", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f6", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f7", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f7", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f7", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f9", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f9", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f9", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f10", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f10", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f10", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f11", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f11", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f11", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f12", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f12", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f12", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f13", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f13", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": 36 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f13", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f14", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f14", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f14", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f15", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f15", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f15", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f16", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f16", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f16", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f17", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f17", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "__return__": 64 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f17", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f18", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f18", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "__return__": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f18", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f19", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f19", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "__return__": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f19", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f20", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f20", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "__return__": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f20", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f21", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f21", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "__return__": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f21", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f22", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f22", + "ordered_varnames": [] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "__return__": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "\u03bb_f22", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 11 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 11 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "__return__": 385, + "x": 11 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "__return__": 385, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "__return__": 385, + "x": 11 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p_z", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "385\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "__return__": 385, + "x": 11 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "summation", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "summation_f2_p_z", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + 2 + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 2 + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/example-code/towers_of_hanoi.golden b/example-code/towers_of_hanoi.golden new file mode 100644 index 000000000..0b98e6d8c --- /dev/null +++ b/example-code/towers_of_hanoi.golden @@ -0,0 +1,10996 @@ +{ + "code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "TowerOfHanoi": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/example-code/wentworth_gcd.golden b/example-code/wentworth_gcd.golden new file mode 100644 index 000000000..8a93dfeec --- /dev/null +++ b/example-code/wentworth_gcd.golden @@ -0,0 +1,3798 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef gcd(x, y, depth=1):\n '''\n Find the greatest common divisor of x, y\n Pre: x >= y, y >= 0, both x and y are int\n '''\n result = x # set provisional return value\n if y != 0:\n indent = \"**\" * depth\n print(\"%s About to recursively call gcd(%d, %d)\" % (indent, y, x%y))\n result = gcd(y, x % y, depth+1)\n print(\"%s result is %d\" % (indent, result))\n return result\n\ndef main():\n m = 77\n n = 28\n print(\"Finding gcd(%d, %d)\" % (m,n))\n g = gcd(m, n)\n print('Greatest common divisor of %d, %d = %d'\n % (m, n, g))\n\nmain()\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7, + "__return__": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "indent": "******", + "__return__": 7, + "depth": 3, + "result": 7, + "y": 7, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "indent": "****", + "__return__": 7, + "depth": 2, + "result": 7, + "y": 21, + "x": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "indent": "**", + "__return__": 7, + "depth": 1, + "result": 7, + "y": 28, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\nGreatest common divisor of 77, 28 = 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 23, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\nGreatest common divisor of 77, 28 = 7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/example-code/wentworth_sumList.golden b/example-code/wentworth_sumList.golden new file mode 100644 index 000000000..0cf2dfaee --- /dev/null +++ b/example-code/wentworth_sumList.golden @@ -0,0 +1,4520 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef sumList(xs):\n '''\n Sum a list that can contain nested lists.\n Precondition: All leaf elements are numbers.\n '''\n sum = 0\n for e in xs:\n if type(e) is list:\n print(\"Calling sumList(%s) recursively\" % e)\n v = sumList(e)\n print(\"sumList(%s) returned %s\" % (e, v))\n sum += v\n else:\n sum += e\n return sum\n\n\ntestData = [10, [20, 30, [40], 50], 60]\nprint(\"Calling sumList(%s)\" % testData)\nresult = sumList(testData)\nprint(\"Final sum of all numbers in initial list is %s\" % result)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 40, + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 140, + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 210, + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData", + "result" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "result": 210, + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData", + "result" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\nFinal sum of all numbers in initial list is 210\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "result": 210, + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 24, + "event": "return" + } + ] +} diff --git a/example-code/wentworth_try_finally.golden b/example-code/wentworth_try_finally.golden new file mode 100644 index 000000000..45fab6dd9 --- /dev/null +++ b/example-code/wentworth_try_finally.golden @@ -0,0 +1,2823 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\n# Demonstrate recursion that throws an exception\n# at its base case, and the tracing of try ... finally.\n#\n# How many \"survived!\" messages will be printed???\n\ndef f(n):\n try:\n x = 10 / n\n print \"x is\", x\n f(n-1)\n print \"survived!\"\n finally:\n print \"Bye from f where n =\", n\n\nf(4)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null, + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "x": 10, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "x": 5, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "x": 3, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\nBye from f where n = 4\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2\nx is 3\nx is 5\nx is 10\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\nBye from f where n = 4\n", + "exception_msg": "ZeroDivisionError: integer division or modulo by zero", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 18, + "event": "exception" + } + ] +} From a909c4658b5a148948ad542cf8c62d33290587c8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 21 Aug 2012 12:07:44 -0700 Subject: [PATCH 145/502] implemented more robust detection of nested function parent frames --- PyTutorGAE/pg_logger.py | 7 - .../tests/backend-tests/lambda_1.golden | 951 ++++----- PyTutorGAE/tests/golden_test.py | 12 +- example-code/closures/lambda-param.golden | 129 +- example-code/map.golden | 473 ++--- example-code/sum.golden | 1751 +++++++++-------- 6 files changed, 1699 insertions(+), 1624 deletions(-) diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index c9771975f..2035ccd76 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -378,7 +378,6 @@ def create_encoded_stack_entry(cur_frame): v not in self.closures and \ v not in self.globally_defined_funcs): - ''' # Look for the presence of v.func_code (code object) in # the constant pool (f_code.co_consts) of an enclosing # stack frame, and set that frame as your parent. @@ -407,12 +406,6 @@ def create_encoded_stack_entry(cur_frame): self.parent_frames_set.add(chosen_parent_frame) # unequivocally add to this set!!! if not chosen_parent_frame in self.zombie_frames: self.zombie_frames.append(chosen_parent_frame) - ''' - - self.closures[v] = top_frame - self.parent_frames_set.add(top_frame) # unequivocally add to this set!!! - if not top_frame in self.zombie_frames: - self.zombie_frames.append(top_frame) else: # if there is only a global scope visible ... for (k, v) in get_user_globals(top_frame).items(): diff --git a/PyTutorGAE/tests/backend-tests/lambda_1.golden b/PyTutorGAE/tests/backend-tests/lambda_1.golden index ae5ae9068..913c30a55 100644 --- a/PyTutorGAE/tests/backend-tests/lambda_1.golden +++ b/PyTutorGAE/tests/backend-tests/lambda_1.golden @@ -184,11 +184,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -209,11 +209,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -246,12 +246,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 1, @@ -272,11 +272,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -297,11 +297,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -334,12 +334,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 2, @@ -360,11 +360,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -386,11 +386,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -424,12 +424,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 3, @@ -450,11 +450,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -477,11 +477,11 @@ "x": 1 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -516,12 +516,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 4, @@ -542,11 +542,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -569,11 +569,11 @@ "x": 1 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -608,12 +608,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 5, @@ -634,11 +634,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -661,11 +661,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -677,16 +677,20 @@ }, { "frame_id": 3, - "encoded_locals": {}, + "encoded_locals": { + "x": 1 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -713,12 +717,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -739,11 +743,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -766,11 +770,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -782,16 +786,20 @@ }, { "frame_id": 3, - "encoded_locals": {}, + "encoded_locals": { + "x": 1 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -818,12 +826,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -844,11 +852,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -871,11 +879,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -888,17 +896,19 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 1 + "__return__": 1, + "x": 1 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", "ordered_varnames": [ + "x", "__return__" ] } @@ -927,12 +937,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -953,11 +963,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -980,11 +990,11 @@ "x": 1 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1019,12 +1029,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 6, @@ -1045,11 +1055,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1072,11 +1082,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1088,16 +1098,20 @@ }, { "frame_id": 4, - "encoded_locals": {}, + "encoded_locals": { + "x": 1 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f4", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -1124,12 +1138,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -1150,11 +1164,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1177,11 +1191,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1193,16 +1207,20 @@ }, { "frame_id": 4, - "encoded_locals": {}, + "encoded_locals": { + "x": 1 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f4", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -1229,12 +1247,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -1255,11 +1273,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1282,11 +1300,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1299,17 +1317,19 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 2 + "__return__": 2, + "x": 1 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f4", "ordered_varnames": [ + "x", "__return__" ] } @@ -1338,12 +1358,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -1364,11 +1384,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1391,11 +1411,11 @@ "x": 2 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1430,12 +1450,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 4, @@ -1456,11 +1476,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1483,11 +1503,11 @@ "x": 2 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1522,12 +1542,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 5, @@ -1548,11 +1568,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1575,11 +1595,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1591,16 +1611,20 @@ }, { "frame_id": 5, - "encoded_locals": {}, + "encoded_locals": { + "x": 2 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f5", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -1627,12 +1651,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -1653,11 +1677,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1680,11 +1704,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1696,16 +1720,20 @@ }, { "frame_id": 5, - "encoded_locals": {}, + "encoded_locals": { + "x": 2 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f5", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -1732,12 +1760,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -1758,11 +1786,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1785,11 +1813,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1802,17 +1830,19 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 4 + "__return__": 4, + "x": 2 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f5", "ordered_varnames": [ + "x", "__return__" ] } @@ -1841,12 +1871,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -1867,11 +1897,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1894,11 +1924,11 @@ "x": 2 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1933,12 +1963,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 6, @@ -1959,11 +1989,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1986,11 +2016,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2002,16 +2032,20 @@ }, { "frame_id": 6, - "encoded_locals": {}, + "encoded_locals": { + "x": 2 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f6", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2038,12 +2072,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -2064,11 +2098,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2091,11 +2125,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2107,16 +2141,20 @@ }, { "frame_id": 6, - "encoded_locals": {}, + "encoded_locals": { + "x": 2 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f6", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2143,12 +2181,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -2169,11 +2207,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2196,11 +2234,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2213,17 +2251,19 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 3 + "__return__": 3, + "x": 2 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f6", "ordered_varnames": [ + "x", "__return__" ] } @@ -2252,12 +2292,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -2278,11 +2318,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2305,11 +2345,11 @@ "x": 3 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2344,12 +2384,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 4, @@ -2370,11 +2410,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2397,11 +2437,11 @@ "x": 3 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2436,12 +2476,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 5, @@ -2462,11 +2502,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2489,11 +2529,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2505,16 +2545,20 @@ }, { "frame_id": 7, - "encoded_locals": {}, + "encoded_locals": { + "x": 3 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f7", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2541,12 +2585,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -2567,11 +2611,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2594,11 +2638,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2610,16 +2654,20 @@ }, { "frame_id": 7, - "encoded_locals": {}, + "encoded_locals": { + "x": 3 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f7", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2646,12 +2694,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -2672,11 +2720,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2699,11 +2747,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2716,17 +2764,19 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 9 + "__return__": 9, + "x": 3 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f7", "ordered_varnames": [ + "x", "__return__" ] } @@ -2755,12 +2805,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -2781,11 +2831,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2808,11 +2858,11 @@ "x": 3 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2847,12 +2897,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 6, @@ -2873,11 +2923,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2900,11 +2950,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2916,16 +2966,20 @@ }, { "frame_id": 8, - "encoded_locals": {}, + "encoded_locals": { + "x": 3 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f8", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2952,12 +3006,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -2978,11 +3032,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3005,11 +3059,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3021,16 +3075,20 @@ }, { "frame_id": 8, - "encoded_locals": {}, + "encoded_locals": { + "x": 3 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f8", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3057,12 +3115,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -3083,11 +3141,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3110,11 +3168,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3127,17 +3185,19 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 4 + "__return__": 4, + "x": 3 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f8", "ordered_varnames": [ + "x", "__return__" ] } @@ -3166,12 +3226,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -3192,11 +3252,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3219,11 +3279,11 @@ "x": 4 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3258,12 +3318,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 4, @@ -3284,11 +3344,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3311,11 +3371,11 @@ "x": 4 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3350,12 +3410,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 5, @@ -3376,11 +3436,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3403,11 +3463,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3419,16 +3479,20 @@ }, { "frame_id": 9, - "encoded_locals": {}, + "encoded_locals": { + "x": 4 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f9", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3455,12 +3519,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -3481,11 +3545,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3508,11 +3572,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3524,16 +3588,20 @@ }, { "frame_id": 9, - "encoded_locals": {}, + "encoded_locals": { + "x": 4 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f9", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3560,12 +3628,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -3586,11 +3654,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3613,11 +3681,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3630,17 +3698,19 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 16 + "__return__": 16, + "x": 4 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f9", "ordered_varnames": [ + "x", "__return__" ] } @@ -3669,12 +3739,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -3695,11 +3765,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3722,11 +3792,11 @@ "x": 4 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3761,12 +3831,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 6, @@ -3787,11 +3857,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3814,11 +3884,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3830,16 +3900,20 @@ }, { "frame_id": 10, - "encoded_locals": {}, + "encoded_locals": { + "x": 4 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f10", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3866,12 +3940,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -3892,11 +3966,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3919,11 +3993,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3935,16 +4009,20 @@ }, { "frame_id": 10, - "encoded_locals": {}, + "encoded_locals": { + "x": 4 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f10", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3971,12 +4049,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -3997,11 +4075,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4024,11 +4102,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4041,17 +4119,19 @@ { "frame_id": 10, "encoded_locals": { - "__return__": 5 + "__return__": 5, + "x": 4 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f10", "ordered_varnames": [ + "x", "__return__" ] } @@ -4080,12 +4160,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -4106,11 +4186,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4133,11 +4213,11 @@ "x": 5 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4172,12 +4252,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 4, @@ -4198,11 +4278,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4225,11 +4305,11 @@ "x": 5 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4264,12 +4344,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 5, @@ -4290,11 +4370,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4317,11 +4397,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4333,16 +4413,20 @@ }, { "frame_id": 11, - "encoded_locals": {}, + "encoded_locals": { + "x": 5 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f11", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -4369,12 +4453,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -4395,11 +4479,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4422,11 +4506,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4438,16 +4522,20 @@ }, { "frame_id": 11, - "encoded_locals": {}, + "encoded_locals": { + "x": 5 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f11", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -4474,12 +4562,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -4500,11 +4588,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4527,11 +4615,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4544,17 +4632,19 @@ { "frame_id": 11, "encoded_locals": { - "__return__": 25 + "__return__": 25, + "x": 5 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f11", "ordered_varnames": [ + "x", "__return__" ] } @@ -4583,12 +4673,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -4609,11 +4699,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4636,11 +4726,11 @@ "x": 5 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4675,12 +4765,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 6, @@ -4701,11 +4791,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4728,11 +4818,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4744,16 +4834,20 @@ }, { "frame_id": 12, - "encoded_locals": {}, + "encoded_locals": { + "x": 5 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f12", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -4780,12 +4874,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -4806,11 +4900,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4833,11 +4927,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4849,16 +4943,20 @@ }, { "frame_id": 12, - "encoded_locals": {}, + "encoded_locals": { + "x": 5 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f12", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -4885,12 +4983,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -4911,11 +5009,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4938,11 +5036,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4955,17 +5053,19 @@ { "frame_id": 12, "encoded_locals": { - "__return__": 6 + "__return__": 6, + "x": 5 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f12", "ordered_varnames": [ + "x", "__return__" ] } @@ -4994,12 +5094,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -5020,11 +5120,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5047,11 +5147,11 @@ "x": 6 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5086,12 +5186,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 4, @@ -5112,11 +5212,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5139,11 +5239,11 @@ "x": 6 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5178,12 +5278,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 7, @@ -5204,11 +5304,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5232,11 +5332,11 @@ "x": 6 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5272,12 +5372,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 7, @@ -5299,47 +5399,14 @@ "low": 1 }, "is_highlighted": true, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", - "ordered_varnames": [ - "low", - "high", - "__return__" - ] - }, - { - "frame_id": 2, - "encoded_locals": { - "f": [ - "REF", - 4 - ], - "next": [ - "REF", - 3 - ], - "high": 5, - "s": 55, - "low": 1, - "__return__": 55, - "x": 6 - }, - "is_highlighted": false, - "is_parent": true, - "func_name": "summation", - "is_zombie": true, - "parent_frame_id_list": [], - "unique_hash": "summation_f2_p_z", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high", - "f", - "next", - "s", - "x", "__return__" ] } @@ -5364,16 +5431,6 @@ "FUNCTION", "sumsquares(low, high)", null - ], - "3": [ - "FUNCTION", - "\u03bb(x)", - 2 - ], - "4": [ - "FUNCTION", - "\u03bb(x)", - 2 ] }, "line": 10, @@ -5388,35 +5445,21 @@ "func_name": "", "stack_to_render": [ { - "frame_id": 2, + "frame_id": 1, "encoded_locals": { - "f": [ - "REF", - 4 - ], - "next": [ - "REF", - 3 - ], "high": 5, - "s": 55, - "low": 1, "__return__": 55, - "x": 6 + "low": 1 }, "is_highlighted": false, "is_parent": true, - "func_name": "summation", + "func_name": "sumsquares", "is_zombie": true, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p_z", + "unique_hash": "sumsquares_f1_p_z", "ordered_varnames": [ "low", "high", - "f", - "next", - "s", - "x", "__return__" ] } @@ -5441,16 +5484,6 @@ "FUNCTION", "sumsquares(low, high)", null - ], - "3": [ - "FUNCTION", - "\u03bb(x)", - 2 - ], - "4": [ - "FUNCTION", - "\u03bb(x)", - 2 ] }, "line": 12, diff --git a/PyTutorGAE/tests/golden_test.py b/PyTutorGAE/tests/golden_test.py index 9149c5d84..0e4288034 100644 --- a/PyTutorGAE/tests/golden_test.py +++ b/PyTutorGAE/tests/golden_test.py @@ -13,8 +13,6 @@ INPUT_FILE_EXTENSION = '.txt' # input test files are .txt, NOT .py -TEST_DIR = '.' - ALL_TESTS = [] @@ -80,9 +78,9 @@ def golden_differs_from_out(golden_file): def diff_test_output(test_name): (base, ext) = os.path.splitext(test_name) - golden_file = os.path.join(TEST_DIR, base + '.golden') + golden_file = base + '.golden' assert os.path.isfile(golden_file) - outfile = os.path.join(TEST_DIR, base + '.out') + outfile = base + '.out' assert os.path.isfile(outfile) golden_s = open(golden_file).readlines() @@ -111,10 +109,10 @@ def run_test(input_filename, clobber_golden=False): if os.path.isfile(outfile): os.remove(outfile) - input_fullpath = os.path.join(TEST_DIR, input_filename) + input_fullpath = input_filename execute(input_fullpath) - golden_file = os.path.join(TEST_DIR, base + '.golden') + golden_file = base + '.golden' if os.path.isfile(golden_file): if golden_differs_from_out(golden_file): print " FAILED" @@ -166,7 +164,7 @@ def diff_all_test_outputs(): elif options.only_clobber: for t in ALL_TESTS: (base, ext) = os.path.splitext(t) - golden_file = os.path.join(TEST_DIR, base + '.golden') + golden_file = base + '.golden' clobber_golden_file(golden_file) else: parser.print_help() diff --git a/example-code/closures/lambda-param.golden b/example-code/closures/lambda-param.golden index 57c68cc3e..1ff7a8385 100644 --- a/example-code/closures/lambda-param.golden +++ b/example-code/closures/lambda-param.golden @@ -179,11 +179,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "foo", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "foo_f1", + "unique_hash": "foo_f1_p", "ordered_varnames": [ "x" ] @@ -197,11 +197,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "bar", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "bar_f2_p", + "unique_hash": "bar_f2", "ordered_varnames": [ "a" ] @@ -231,7 +231,7 @@ "3": [ "FUNCTION", "\u03bb(y)", - 2 + 1 ] }, "line": 4, @@ -251,11 +251,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "foo", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "foo_f1", + "unique_hash": "foo_f1_p", "ordered_varnames": [ "x" ] @@ -269,11 +269,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "bar", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "bar_f2_p", + "unique_hash": "bar_f2", "ordered_varnames": [ "a" ] @@ -303,7 +303,7 @@ "3": [ "FUNCTION", "\u03bb(y)", - 2 + 1 ] }, "line": 5, @@ -323,11 +323,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "foo", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "foo_f1", + "unique_hash": "foo_f1_p", "ordered_varnames": [ "x" ] @@ -341,11 +341,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "bar", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "bar_f2_p", + "unique_hash": "bar_f2", "ordered_varnames": [ "a" ] @@ -353,20 +353,18 @@ { "frame_id": 3, "encoded_locals": { - "y": 20, - "x": 10 + "y": 20 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", "ordered_varnames": [ - "y", - "x" + "y" ] } ], @@ -394,7 +392,7 @@ "3": [ "FUNCTION", "\u03bb(y)", - 2 + 1 ] }, "line": 2, @@ -414,11 +412,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "foo", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "foo_f1", + "unique_hash": "foo_f1_p", "ordered_varnames": [ "x" ] @@ -432,11 +430,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "bar", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "bar_f2_p", + "unique_hash": "bar_f2", "ordered_varnames": [ "a" ] @@ -444,20 +442,18 @@ { "frame_id": 3, "encoded_locals": { - "y": 20, - "x": 10 + "y": 20 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", "ordered_varnames": [ - "y", - "x" + "y" ] } ], @@ -485,7 +481,7 @@ "3": [ "FUNCTION", "\u03bb(y)", - 2 + 1 ] }, "line": 2, @@ -505,11 +501,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "foo", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "foo_f1", + "unique_hash": "foo_f1_p", "ordered_varnames": [ "x" ] @@ -523,11 +519,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "bar", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "bar_f2_p", + "unique_hash": "bar_f2", "ordered_varnames": [ "a" ] @@ -536,7 +532,6 @@ "frame_id": 3, "encoded_locals": { "y": 20, - "x": 10, "__return__": 30 }, "is_highlighted": true, @@ -544,12 +539,11 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", "ordered_varnames": [ "y", - "x", "__return__" ] } @@ -578,7 +572,7 @@ "3": [ "FUNCTION", "\u03bb(y)", - 2 + 1 ] }, "line": 2, @@ -598,11 +592,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "foo", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "foo_f1", + "unique_hash": "foo_f1_p", "ordered_varnames": [ "x" ] @@ -617,11 +611,11 @@ "__return__": null }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "bar", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "bar_f2_p", + "unique_hash": "bar_f2", "ordered_varnames": [ "a", "__return__" @@ -652,7 +646,7 @@ "3": [ "FUNCTION", "\u03bb(y)", - 2 + 1 ] }, "line": 5, @@ -673,35 +667,15 @@ "x": 10 }, "is_highlighted": true, - "is_parent": false, + "is_parent": true, "func_name": "foo", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "foo_f1", + "unique_hash": "foo_f1_p", "ordered_varnames": [ "x", "__return__" ] - }, - { - "frame_id": 2, - "encoded_locals": { - "a": [ - "REF", - 3 - ], - "__return__": null - }, - "is_highlighted": false, - "is_parent": true, - "func_name": "bar", - "is_zombie": true, - "parent_frame_id_list": [], - "unique_hash": "bar_f2_p_z", - "ordered_varnames": [ - "a", - "__return__" - ] } ], "globals": { @@ -724,11 +698,6 @@ "FUNCTION", "bar(a)", null - ], - "3": [ - "FUNCTION", - "\u03bb(y)", - 2 ] }, "line": 2, @@ -743,22 +712,19 @@ "func_name": "", "stack_to_render": [ { - "frame_id": 2, + "frame_id": 1, "encoded_locals": { - "a": [ - "REF", - 3 - ], - "__return__": null + "__return__": null, + "x": 10 }, "is_highlighted": false, "is_parent": true, - "func_name": "bar", + "func_name": "foo", "is_zombie": true, "parent_frame_id_list": [], - "unique_hash": "bar_f2_p_z", + "unique_hash": "foo_f1_p_z", "ordered_varnames": [ - "a", + "x", "__return__" ] } @@ -783,11 +749,6 @@ "FUNCTION", "bar(a)", null - ], - "3": [ - "FUNCTION", - "\u03bb(y)", - 2 ] }, "line": 7, diff --git a/example-code/map.golden b/example-code/map.golden index 4334221df..0418b1935 100644 --- a/example-code/map.golden +++ b/example-code/map.golden @@ -261,11 +261,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -283,11 +283,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -330,7 +330,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 5, @@ -354,11 +354,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -376,11 +376,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -423,7 +423,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 6, @@ -447,11 +447,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -469,11 +469,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -516,7 +516,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -540,11 +540,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -562,11 +562,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -582,7 +582,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", "ordered_varnames": [ @@ -626,7 +626,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 12, @@ -650,11 +650,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -672,11 +672,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -692,7 +692,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", "ordered_varnames": [ @@ -736,7 +736,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 12, @@ -760,11 +760,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -782,11 +782,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -803,7 +803,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", "ordered_varnames": [ @@ -848,7 +848,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 12, @@ -872,11 +872,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -894,11 +894,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -964,7 +964,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -995,11 +995,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -1017,11 +1017,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -1087,7 +1087,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -1118,11 +1118,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -1140,11 +1140,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -1210,7 +1210,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -1241,11 +1241,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -1263,11 +1263,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -1306,7 +1306,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f5", "ordered_varnames": [ @@ -1350,7 +1350,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -1381,11 +1381,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -1403,11 +1403,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -1446,7 +1446,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f5", "ordered_varnames": [ @@ -1490,7 +1490,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -1521,11 +1521,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -1543,11 +1543,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -1587,7 +1587,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f5", "ordered_varnames": [ @@ -1632,7 +1632,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -1663,11 +1663,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -1685,11 +1685,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -1778,7 +1778,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -1815,11 +1815,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -1837,11 +1837,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -1930,7 +1930,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -1967,11 +1967,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -1989,11 +1989,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -2082,7 +2082,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -2119,11 +2119,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -2141,11 +2141,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -2207,7 +2207,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f7", "ordered_varnames": [ @@ -2251,7 +2251,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -2288,11 +2288,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -2310,11 +2310,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -2376,7 +2376,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f7", "ordered_varnames": [ @@ -2420,7 +2420,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -2457,11 +2457,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -2479,11 +2479,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -2546,7 +2546,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f7", "ordered_varnames": [ @@ -2591,7 +2591,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -2628,11 +2628,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -2650,11 +2650,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -2766,7 +2766,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -2808,11 +2808,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -2830,11 +2830,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -2946,7 +2946,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -2988,11 +2988,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -3010,11 +3010,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -3126,7 +3126,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -3168,11 +3168,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -3190,11 +3190,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -3279,7 +3279,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f9", "ordered_varnames": [ @@ -3323,7 +3323,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -3365,11 +3365,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -3387,11 +3387,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -3476,7 +3476,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f9", "ordered_varnames": [ @@ -3520,7 +3520,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -3562,11 +3562,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -3584,11 +3584,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -3674,7 +3674,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f9", "ordered_varnames": [ @@ -3719,7 +3719,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -3761,11 +3761,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -3783,11 +3783,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -3922,7 +3922,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -3968,11 +3968,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -3990,11 +3990,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -4129,7 +4129,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -4175,11 +4175,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -4197,11 +4197,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -4336,7 +4336,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -4382,11 +4382,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -4404,11 +4404,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -4516,7 +4516,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f11", "ordered_varnames": [ @@ -4560,7 +4560,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -4606,11 +4606,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -4628,11 +4628,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -4740,7 +4740,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f11", "ordered_varnames": [ @@ -4784,7 +4784,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -4830,11 +4830,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -4852,11 +4852,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -4965,7 +4965,7 @@ "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f11", "ordered_varnames": [ @@ -5010,7 +5010,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -5056,11 +5056,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -5078,11 +5078,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -5240,7 +5240,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -5289,11 +5289,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -5311,11 +5311,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -5473,7 +5473,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -5522,11 +5522,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -5544,11 +5544,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -5706,7 +5706,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -5755,11 +5755,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -5777,11 +5777,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -5944,7 +5944,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -5996,11 +5996,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -6018,11 +6018,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -6162,7 +6162,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -6212,11 +6212,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -6234,11 +6234,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -6355,7 +6355,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -6402,11 +6402,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -6424,11 +6424,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -6522,7 +6522,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -6565,11 +6565,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -6587,11 +6587,11 @@ ] }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst" @@ -6662,7 +6662,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "5": [ "LIST", @@ -6700,11 +6700,11 @@ ] }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ "lst" ] @@ -6726,11 +6726,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "map", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "map_f2_p", + "unique_hash": "map_f2", "ordered_varnames": [ "func", "lst", @@ -6774,7 +6774,7 @@ "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "15": [ "LIST", @@ -6810,40 +6810,12 @@ ] }, "is_highlighted": true, - "is_parent": false, + "is_parent": true, "func_name": "halveElements", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "halveElements_f1", - "ordered_varnames": [ - "lst", - "__return__" - ] - }, - { - "frame_id": 2, - "encoded_locals": { - "__return__": [ - "REF", - 15 - ], - "lst": [ - "REF", - 3 - ], - "func": [ - "REF", - 4 - ] - }, - "is_highlighted": false, - "is_parent": true, - "func_name": "map", - "is_zombie": true, - "parent_frame_id_list": [], - "unique_hash": "map_f2_p_z", + "unique_hash": "halveElements_f1_p", "ordered_varnames": [ - "func", "lst", "__return__" ] @@ -6882,11 +6854,6 @@ 8, 10 ], - "4": [ - "FUNCTION", - "\u03bb(x)", - 2 - ], "15": [ "LIST", 1.0, @@ -6910,7 +6877,7 @@ "func_name": "", "stack_to_render": [ { - "frame_id": 2, + "frame_id": 1, "encoded_locals": { "__return__": [ "REF", @@ -6919,20 +6886,15 @@ "lst": [ "REF", 3 - ], - "func": [ - "REF", - 4 ] }, "is_highlighted": false, "is_parent": true, - "func_name": "map", + "func_name": "halveElements", "is_zombie": true, "parent_frame_id_list": [], - "unique_hash": "map_f2_p_z", + "unique_hash": "halveElements_f1_p_z", "ordered_varnames": [ - "func", "lst", "__return__" ] @@ -6975,11 +6937,6 @@ 8, 10 ], - "4": [ - "FUNCTION", - "\u03bb(x)", - 2 - ], "15": [ "LIST", 1.0, diff --git a/example-code/sum.golden b/example-code/sum.golden index aa7a44fb9..ba7fd8dab 100644 --- a/example-code/sum.golden +++ b/example-code/sum.golden @@ -184,11 +184,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -209,11 +209,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -246,12 +246,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 5, @@ -272,11 +272,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -297,11 +297,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -334,12 +334,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 6, @@ -360,11 +360,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -386,11 +386,11 @@ ] }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -424,12 +424,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 7, @@ -450,11 +450,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -477,11 +477,11 @@ "x": 1 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -516,12 +516,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -542,11 +542,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -569,11 +569,11 @@ "x": 1 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -608,12 +608,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -634,11 +634,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -661,11 +661,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -677,16 +677,20 @@ }, { "frame_id": 3, - "encoded_locals": {}, + "encoded_locals": { + "x": 1 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -713,12 +717,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -739,11 +743,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -766,11 +770,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -782,16 +786,20 @@ }, { "frame_id": 3, - "encoded_locals": {}, + "encoded_locals": { + "x": 1 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -818,12 +826,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -844,11 +852,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -871,11 +879,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -888,17 +896,19 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 1 + "__return__": 1, + "x": 1 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f3", "ordered_varnames": [ + "x", "__return__" ] } @@ -927,12 +937,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -953,11 +963,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -980,11 +990,11 @@ "x": 1 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1019,12 +1029,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -1045,11 +1055,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1072,11 +1082,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1088,16 +1098,20 @@ }, { "frame_id": 4, - "encoded_locals": {}, + "encoded_locals": { + "x": 1 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f4", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -1124,12 +1138,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -1150,11 +1164,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1177,11 +1191,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1193,16 +1207,20 @@ }, { "frame_id": 4, - "encoded_locals": {}, + "encoded_locals": { + "x": 1 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f4", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -1229,12 +1247,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -1255,11 +1273,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1282,11 +1300,11 @@ "x": 1 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1299,17 +1317,19 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 2 + "__return__": 2, + "x": 1 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f4", "ordered_varnames": [ + "x", "__return__" ] } @@ -1338,12 +1358,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -1364,11 +1384,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1391,11 +1411,11 @@ "x": 2 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1430,12 +1450,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -1456,11 +1476,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1483,11 +1503,11 @@ "x": 2 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1522,12 +1542,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -1548,11 +1568,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1575,11 +1595,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1591,16 +1611,20 @@ }, { "frame_id": 5, - "encoded_locals": {}, + "encoded_locals": { + "x": 2 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f5", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -1627,12 +1651,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -1653,11 +1677,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1680,11 +1704,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1696,16 +1720,20 @@ }, { "frame_id": 5, - "encoded_locals": {}, + "encoded_locals": { + "x": 2 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f5", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -1732,12 +1760,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -1758,11 +1786,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1785,11 +1813,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1802,17 +1830,19 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 4 + "__return__": 4, + "x": 2 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f5", "ordered_varnames": [ + "x", "__return__" ] } @@ -1841,12 +1871,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -1867,11 +1897,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1894,11 +1924,11 @@ "x": 2 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -1933,12 +1963,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -1959,11 +1989,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -1986,11 +2016,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2002,16 +2032,20 @@ }, { "frame_id": 6, - "encoded_locals": {}, + "encoded_locals": { + "x": 2 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f6", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2038,12 +2072,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -2064,11 +2098,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2091,11 +2125,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2107,16 +2141,20 @@ }, { "frame_id": 6, - "encoded_locals": {}, + "encoded_locals": { + "x": 2 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f6", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2143,12 +2181,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -2169,11 +2207,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2196,11 +2234,11 @@ "x": 2 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2213,17 +2251,19 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 3 + "__return__": 3, + "x": 2 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f6", "ordered_varnames": [ + "x", "__return__" ] } @@ -2252,12 +2292,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -2278,11 +2318,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2305,11 +2345,11 @@ "x": 3 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2344,12 +2384,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -2370,11 +2410,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2397,11 +2437,11 @@ "x": 3 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2436,12 +2476,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -2462,11 +2502,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2489,11 +2529,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2505,16 +2545,20 @@ }, { "frame_id": 7, - "encoded_locals": {}, + "encoded_locals": { + "x": 3 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f7", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2541,12 +2585,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -2567,11 +2611,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2594,11 +2638,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2610,16 +2654,20 @@ }, { "frame_id": 7, - "encoded_locals": {}, + "encoded_locals": { + "x": 3 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f7", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2646,12 +2694,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -2672,11 +2720,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2699,11 +2747,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2716,17 +2764,19 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 9 + "__return__": 9, + "x": 3 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f7", "ordered_varnames": [ + "x", "__return__" ] } @@ -2755,12 +2805,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -2781,11 +2831,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2808,11 +2858,11 @@ "x": 3 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2847,12 +2897,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -2873,11 +2923,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -2900,11 +2950,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -2916,16 +2966,20 @@ }, { "frame_id": 8, - "encoded_locals": {}, + "encoded_locals": { + "x": 3 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f8", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -2952,12 +3006,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -2978,11 +3032,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3005,11 +3059,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3021,16 +3075,20 @@ }, { "frame_id": 8, - "encoded_locals": {}, + "encoded_locals": { + "x": 3 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f8", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3057,12 +3115,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -3083,11 +3141,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3110,11 +3168,11 @@ "x": 3 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3127,17 +3185,19 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 4 + "__return__": 4, + "x": 3 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f8", "ordered_varnames": [ + "x", "__return__" ] } @@ -3166,12 +3226,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -3192,11 +3252,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3219,11 +3279,11 @@ "x": 4 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3258,12 +3318,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -3284,11 +3344,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3311,11 +3371,11 @@ "x": 4 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3350,12 +3410,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -3376,11 +3436,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3403,11 +3463,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3419,16 +3479,20 @@ }, { "frame_id": 9, - "encoded_locals": {}, + "encoded_locals": { + "x": 4 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f9", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3455,12 +3519,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -3481,11 +3545,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3508,11 +3572,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3524,16 +3588,20 @@ }, { "frame_id": 9, - "encoded_locals": {}, + "encoded_locals": { + "x": 4 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f9", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3560,12 +3628,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -3586,11 +3654,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3613,11 +3681,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3630,17 +3698,19 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 16 + "__return__": 16, + "x": 4 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f9", "ordered_varnames": [ + "x", "__return__" ] } @@ -3669,12 +3739,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -3695,11 +3765,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3722,11 +3792,11 @@ "x": 4 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3761,12 +3831,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -3787,11 +3857,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3814,11 +3884,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3830,16 +3900,20 @@ }, { "frame_id": 10, - "encoded_locals": {}, + "encoded_locals": { + "x": 4 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f10", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3866,12 +3940,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -3892,11 +3966,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -3919,11 +3993,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -3935,16 +4009,20 @@ }, { "frame_id": 10, - "encoded_locals": {}, + "encoded_locals": { + "x": 4 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f10", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -3971,12 +4049,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -3997,11 +4075,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4024,11 +4102,11 @@ "x": 4 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4041,17 +4119,19 @@ { "frame_id": 10, "encoded_locals": { - "__return__": 5 + "__return__": 5, + "x": 4 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f10", "ordered_varnames": [ + "x", "__return__" ] } @@ -4080,12 +4160,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -4106,11 +4186,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4133,11 +4213,11 @@ "x": 5 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4172,12 +4252,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -4198,11 +4278,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4225,11 +4305,11 @@ "x": 5 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4264,12 +4344,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -4290,11 +4370,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4317,11 +4397,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4333,16 +4413,20 @@ }, { "frame_id": 11, - "encoded_locals": {}, + "encoded_locals": { + "x": 5 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f11", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -4369,12 +4453,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -4395,11 +4479,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4422,11 +4506,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4438,16 +4522,20 @@ }, { "frame_id": 11, - "encoded_locals": {}, + "encoded_locals": { + "x": 5 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f11", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -4474,12 +4562,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -4500,11 +4588,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4527,11 +4615,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4544,17 +4632,19 @@ { "frame_id": 11, "encoded_locals": { - "__return__": 25 + "__return__": 25, + "x": 5 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f11", "ordered_varnames": [ + "x", "__return__" ] } @@ -4583,12 +4673,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -4609,11 +4699,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4636,11 +4726,11 @@ "x": 5 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4675,12 +4765,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -4701,11 +4791,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4728,11 +4818,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4744,16 +4834,20 @@ }, { "frame_id": 12, - "encoded_locals": {}, + "encoded_locals": { + "x": 5 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f12", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -4780,12 +4874,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -4806,11 +4900,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4833,11 +4927,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4849,16 +4943,20 @@ }, { "frame_id": 12, - "encoded_locals": {}, + "encoded_locals": { + "x": 5 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f12", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -4885,12 +4983,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -4911,11 +5009,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -4938,11 +5036,11 @@ "x": 5 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -4955,17 +5053,19 @@ { "frame_id": 12, "encoded_locals": { - "__return__": 6 + "__return__": 6, + "x": 5 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f12", "ordered_varnames": [ + "x", "__return__" ] } @@ -4994,12 +5094,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -5020,11 +5120,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5047,11 +5147,11 @@ "x": 6 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5086,12 +5186,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -5112,11 +5212,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5139,11 +5239,11 @@ "x": 6 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5178,12 +5278,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -5204,11 +5304,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5231,11 +5331,11 @@ "x": 6 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5247,16 +5347,20 @@ }, { "frame_id": 13, - "encoded_locals": {}, + "encoded_locals": { + "x": 6 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f13", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -5283,12 +5387,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -5309,11 +5413,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5336,11 +5440,11 @@ "x": 6 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5352,16 +5456,20 @@ }, { "frame_id": 13, - "encoded_locals": {}, + "encoded_locals": { + "x": 6 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f13", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -5388,12 +5496,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -5414,11 +5522,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5441,11 +5549,11 @@ "x": 6 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5458,17 +5566,19 @@ { "frame_id": 13, "encoded_locals": { - "__return__": 36 + "__return__": 36, + "x": 6 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f13", "ordered_varnames": [ + "x", "__return__" ] } @@ -5497,12 +5607,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -5523,11 +5633,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5550,11 +5660,11 @@ "x": 6 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5589,12 +5699,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -5615,11 +5725,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5642,11 +5752,11 @@ "x": 6 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5658,16 +5768,20 @@ }, { "frame_id": 14, - "encoded_locals": {}, + "encoded_locals": { + "x": 6 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f14", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -5694,12 +5808,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -5720,11 +5834,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5747,11 +5861,11 @@ "x": 6 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5763,16 +5877,20 @@ }, { "frame_id": 14, - "encoded_locals": {}, + "encoded_locals": { + "x": 6 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f14", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -5799,12 +5917,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -5825,11 +5943,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5852,11 +5970,11 @@ "x": 6 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -5869,17 +5987,19 @@ { "frame_id": 14, "encoded_locals": { - "__return__": 7 + "__return__": 7, + "x": 6 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f14", "ordered_varnames": [ + "x", "__return__" ] } @@ -5908,12 +6028,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -5934,11 +6054,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -5961,11 +6081,11 @@ "x": 7 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6000,12 +6120,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -6026,11 +6146,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6053,11 +6173,11 @@ "x": 7 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6092,12 +6212,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -6118,11 +6238,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6145,11 +6265,11 @@ "x": 7 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6161,16 +6281,20 @@ }, { "frame_id": 15, - "encoded_locals": {}, + "encoded_locals": { + "x": 7 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f15", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -6197,12 +6321,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -6223,11 +6347,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6250,11 +6374,11 @@ "x": 7 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6266,16 +6390,20 @@ }, { "frame_id": 15, - "encoded_locals": {}, + "encoded_locals": { + "x": 7 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f15", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -6302,12 +6430,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -6328,11 +6456,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6355,11 +6483,11 @@ "x": 7 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6372,17 +6500,19 @@ { "frame_id": 15, "encoded_locals": { - "__return__": 49 + "__return__": 49, + "x": 7 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f15", "ordered_varnames": [ + "x", "__return__" ] } @@ -6411,12 +6541,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -6437,11 +6567,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6464,11 +6594,11 @@ "x": 7 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6503,12 +6633,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -6529,11 +6659,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6556,11 +6686,11 @@ "x": 7 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6572,16 +6702,20 @@ }, { "frame_id": 16, - "encoded_locals": {}, + "encoded_locals": { + "x": 7 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f16", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -6608,12 +6742,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -6634,11 +6768,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6661,11 +6795,11 @@ "x": 7 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6677,16 +6811,20 @@ }, { "frame_id": 16, - "encoded_locals": {}, + "encoded_locals": { + "x": 7 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f16", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -6713,12 +6851,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -6739,11 +6877,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6766,11 +6904,11 @@ "x": 7 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6783,17 +6921,19 @@ { "frame_id": 16, "encoded_locals": { - "__return__": 8 + "__return__": 8, + "x": 7 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f16", "ordered_varnames": [ + "x", "__return__" ] } @@ -6822,12 +6962,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -6848,11 +6988,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6875,11 +7015,11 @@ "x": 8 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -6914,12 +7054,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -6940,11 +7080,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -6967,11 +7107,11 @@ "x": 8 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7006,12 +7146,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -7032,11 +7172,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7059,11 +7199,11 @@ "x": 8 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7075,16 +7215,20 @@ }, { "frame_id": 17, - "encoded_locals": {}, + "encoded_locals": { + "x": 8 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f17", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -7111,12 +7255,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -7137,11 +7281,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7164,11 +7308,11 @@ "x": 8 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7180,16 +7324,20 @@ }, { "frame_id": 17, - "encoded_locals": {}, + "encoded_locals": { + "x": 8 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f17", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -7216,12 +7364,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -7242,11 +7390,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7269,11 +7417,11 @@ "x": 8 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7286,17 +7434,19 @@ { "frame_id": 17, "encoded_locals": { - "__return__": 64 + "__return__": 64, + "x": 8 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f17", "ordered_varnames": [ + "x", "__return__" ] } @@ -7325,12 +7475,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -7351,11 +7501,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7378,11 +7528,11 @@ "x": 8 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7417,12 +7567,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -7443,11 +7593,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7470,11 +7620,11 @@ "x": 8 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7486,16 +7636,20 @@ }, { "frame_id": 18, - "encoded_locals": {}, + "encoded_locals": { + "x": 8 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f18", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -7522,12 +7676,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -7548,11 +7702,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7575,11 +7729,11 @@ "x": 8 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7591,16 +7745,20 @@ }, { "frame_id": 18, - "encoded_locals": {}, + "encoded_locals": { + "x": 8 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f18", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -7627,12 +7785,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -7653,11 +7811,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7680,11 +7838,11 @@ "x": 8 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7697,17 +7855,19 @@ { "frame_id": 18, "encoded_locals": { - "__return__": 9 + "__return__": 9, + "x": 8 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f18", "ordered_varnames": [ + "x", "__return__" ] } @@ -7736,12 +7896,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -7762,11 +7922,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7789,11 +7949,11 @@ "x": 9 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7828,12 +7988,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -7854,11 +8014,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7881,11 +8041,11 @@ "x": 9 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7920,12 +8080,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -7946,11 +8106,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -7973,11 +8133,11 @@ "x": 9 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -7989,16 +8149,20 @@ }, { "frame_id": 19, - "encoded_locals": {}, + "encoded_locals": { + "x": 9 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f19", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -8025,12 +8189,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -8051,11 +8215,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8078,11 +8242,11 @@ "x": 9 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -8094,16 +8258,20 @@ }, { "frame_id": 19, - "encoded_locals": {}, + "encoded_locals": { + "x": 9 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f19", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -8130,12 +8298,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -8156,11 +8324,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8183,11 +8351,11 @@ "x": 9 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -8200,17 +8368,19 @@ { "frame_id": 19, "encoded_locals": { - "__return__": 81 + "__return__": 81, + "x": 9 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f19", "ordered_varnames": [ + "x", "__return__" ] } @@ -8239,12 +8409,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -8265,11 +8435,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8292,11 +8462,11 @@ "x": 9 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -8331,12 +8501,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -8357,11 +8527,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8384,11 +8554,11 @@ "x": 9 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -8400,16 +8570,20 @@ }, { "frame_id": 20, - "encoded_locals": {}, + "encoded_locals": { + "x": 9 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f20", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -8436,12 +8610,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -8462,11 +8636,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8489,11 +8663,11 @@ "x": 9 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -8505,16 +8679,20 @@ }, { "frame_id": 20, - "encoded_locals": {}, + "encoded_locals": { + "x": 9 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f20", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -8541,12 +8719,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -8567,11 +8745,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8594,11 +8772,11 @@ "x": 9 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -8611,17 +8789,19 @@ { "frame_id": 20, "encoded_locals": { - "__return__": 10 + "__return__": 10, + "x": 9 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f20", "ordered_varnames": [ + "x", "__return__" ] } @@ -8650,12 +8830,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -8676,11 +8856,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8703,11 +8883,11 @@ "x": 10 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -8742,12 +8922,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -8768,11 +8948,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8795,11 +8975,11 @@ "x": 10 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -8834,12 +9014,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 9, @@ -8860,11 +9040,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8887,11 +9067,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -8903,16 +9083,20 @@ }, { "frame_id": 21, - "encoded_locals": {}, + "encoded_locals": { + "x": 10 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f21", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -8939,12 +9123,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -8965,11 +9149,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -8992,11 +9176,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -9008,16 +9192,20 @@ }, { "frame_id": 21, - "encoded_locals": {}, + "encoded_locals": { + "x": 10 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f21", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -9044,12 +9232,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -9070,11 +9258,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -9097,11 +9285,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -9114,17 +9302,19 @@ { "frame_id": 21, "encoded_locals": { - "__return__": 100 + "__return__": 100, + "x": 10 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f21", "ordered_varnames": [ + "x", "__return__" ] } @@ -9153,12 +9343,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -9179,11 +9369,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -9206,11 +9396,11 @@ "x": 10 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -9245,12 +9435,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 10, @@ -9271,11 +9461,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -9298,11 +9488,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -9314,16 +9504,20 @@ }, { "frame_id": 22, - "encoded_locals": {}, + "encoded_locals": { + "x": 10 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f22", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -9350,12 +9544,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -9376,11 +9570,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -9403,11 +9597,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -9419,16 +9613,20 @@ }, { "frame_id": 22, - "encoded_locals": {}, + "encoded_locals": { + "x": 10 + }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f22", - "ordered_varnames": [] + "ordered_varnames": [ + "x" + ] } ], "globals": { @@ -9455,12 +9653,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -9481,11 +9679,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -9508,11 +9706,11 @@ "x": 10 }, "is_highlighted": false, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -9525,17 +9723,19 @@ { "frame_id": 22, "encoded_locals": { - "__return__": 11 + "__return__": 11, + "x": 10 }, "is_highlighted": true, "is_parent": false, "func_name": "\u03bb", "is_zombie": false, "parent_frame_id_list": [ - 2 + 1 ], "unique_hash": "\u03bb_f22", "ordered_varnames": [ + "x", "__return__" ] } @@ -9564,12 +9764,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 14, @@ -9590,11 +9790,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -9617,11 +9817,11 @@ "x": 11 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -9656,12 +9856,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 8, @@ -9682,11 +9882,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -9709,11 +9909,11 @@ "x": 11 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -9748,12 +9948,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 11, @@ -9774,11 +9974,11 @@ "low": 1 }, "is_highlighted": false, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high" @@ -9802,11 +10002,11 @@ "x": 11 }, "is_highlighted": true, - "is_parent": true, + "is_parent": false, "func_name": "summation", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p", + "unique_hash": "summation_f2", "ordered_varnames": [ "low", "high", @@ -9842,12 +10042,12 @@ "3": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ], "4": [ "FUNCTION", "\u03bb(x)", - 2 + 1 ] }, "line": 11, @@ -9869,47 +10069,14 @@ "low": 1 }, "is_highlighted": true, - "is_parent": false, + "is_parent": true, "func_name": "sumsquares", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "sumsquares_f1", - "ordered_varnames": [ - "low", - "high", - "__return__" - ] - }, - { - "frame_id": 2, - "encoded_locals": { - "f": [ - "REF", - 4 - ], - "next": [ - "REF", - 3 - ], - "high": 10, - "s": 385, - "low": 1, - "__return__": 385, - "x": 11 - }, - "is_highlighted": false, - "is_parent": true, - "func_name": "summation", - "is_zombie": true, - "parent_frame_id_list": [], - "unique_hash": "summation_f2_p_z", + "unique_hash": "sumsquares_f1_p", "ordered_varnames": [ "low", "high", - "f", - "next", - "s", - "x", "__return__" ] } @@ -9934,16 +10101,6 @@ "FUNCTION", "sumsquares(low, high)", null - ], - "3": [ - "FUNCTION", - "\u03bb(x)", - 2 - ], - "4": [ - "FUNCTION", - "\u03bb(x)", - 2 ] }, "line": 14, @@ -9958,35 +10115,21 @@ "func_name": "", "stack_to_render": [ { - "frame_id": 2, + "frame_id": 1, "encoded_locals": { - "f": [ - "REF", - 4 - ], - "next": [ - "REF", - 3 - ], "high": 10, - "s": 385, - "low": 1, "__return__": 385, - "x": 11 + "low": 1 }, "is_highlighted": false, "is_parent": true, - "func_name": "summation", + "func_name": "sumsquares", "is_zombie": true, "parent_frame_id_list": [], - "unique_hash": "summation_f2_p_z", + "unique_hash": "sumsquares_f1_p_z", "ordered_varnames": [ "low", "high", - "f", - "next", - "s", - "x", "__return__" ] } @@ -10011,16 +10154,6 @@ "FUNCTION", "sumsquares(low, high)", null - ], - "3": [ - "FUNCTION", - "\u03bb(x)", - 2 - ], - "4": [ - "FUNCTION", - "\u03bb(x)", - 2 ] }, "line": 16, From 85fb1f4196ab3b5e0be32ed827738c3207aa0b14 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 21 Aug 2012 14:34:31 -0700 Subject: [PATCH 146/502] fix for python 3 --- PyTutorGAE/pg_logger.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 2035ccd76..b01472af4 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -36,7 +36,9 @@ import traceback import types -if sys.version_info[0] == 3: +is_python3 = (sys.version_info[0] == 3) + +if is_python3: import io as cStringIO else: import cStringIO @@ -378,8 +380,9 @@ def create_encoded_stack_entry(cur_frame): v not in self.closures and \ v not in self.globally_defined_funcs): - # Look for the presence of v.func_code (code object) in - # the constant pool (f_code.co_consts) of an enclosing + # Look for the presence of the code object (v.func_code + # for Python 2 or v.__code__ for Python 3) in the + # constant pool (f_code.co_consts) of an enclosing # stack frame, and set that frame as your parent. # # This technique properly handles lambdas passed as @@ -396,7 +399,7 @@ def create_encoded_stack_entry(cur_frame): break for frame_const in my_frame.f_code.co_consts: - if frame_const is v.func_code: + if frame_const is (v.__code__ if is_python3 else v.func_code): chosen_parent_frame = my_frame break From 72ca7f2eea3cb4efff499ec689942094ebfdcae6 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 21 Aug 2012 14:36:09 -0700 Subject: [PATCH 147/502] minor --- PyTutorGAE/tests/golden_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/tests/golden_test.py b/PyTutorGAE/tests/golden_test.py index 0e4288034..d936f2741 100644 --- a/PyTutorGAE/tests/golden_test.py +++ b/PyTutorGAE/tests/golden_test.py @@ -36,7 +36,7 @@ def execute(input_filename): (stdout, stderr) = Popen(PROGRAM + [input_filename], stdout=PIPE, stderr=PIPE).communicate() if stderr: - print ' (has stderr)' + print '(has stderr)' # print ' stderr {' # print stderr, '}' @@ -115,7 +115,7 @@ def run_test(input_filename, clobber_golden=False): golden_file = base + '.golden' if os.path.isfile(golden_file): if golden_differs_from_out(golden_file): - print " FAILED" + print " FAILED!!!" if clobber_golden: clobber_golden_file(golden_file) else: From 2ee19e9dd89c7e9fb37da9fc423bc512244137e0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 21 Aug 2012 14:45:18 -0700 Subject: [PATCH 148/502] housekeeping --- .gitignore | 2 ++ PyTutorGAE/tests/example-code | 1 + 2 files changed, 3 insertions(+) create mode 100644 .gitignore create mode 120000 PyTutorGAE/tests/example-code diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..6f3ae28da --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +*.out +*.pyc diff --git a/PyTutorGAE/tests/example-code b/PyTutorGAE/tests/example-code new file mode 120000 index 000000000..5a6481d0b --- /dev/null +++ b/PyTutorGAE/tests/example-code @@ -0,0 +1 @@ +../../example-code \ No newline at end of file From 898c1280a419229fc952756ccfb8926d2a2dfc3a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 21 Aug 2012 16:53:54 -0700 Subject: [PATCH 149/502] fixed bug involving john-compose.txt --- PyTutorGAE/pg_logger.py | 10 +- .../tests/backend-tests/john-compose.golden | 1262 +++++++++++++++++ .../tests/backend-tests/john-compose.txt | 5 + 3 files changed, 1273 insertions(+), 4 deletions(-) create mode 100644 PyTutorGAE/tests/backend-tests/john-compose.golden create mode 100644 PyTutorGAE/tests/backend-tests/john-compose.txt diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index b01472af4..8556c32f6 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -405,10 +405,12 @@ def create_encoded_stack_entry(cur_frame): assert chosen_parent_frame # I hope this always passes :0 - self.closures[v] = chosen_parent_frame - self.parent_frames_set.add(chosen_parent_frame) # unequivocally add to this set!!! - if not chosen_parent_frame in self.zombie_frames: - self.zombie_frames.append(chosen_parent_frame) + # this condition should be False for functions declared in global scope ... + if chosen_parent_frame in self.frame_ordered_ids: + self.closures[v] = chosen_parent_frame + self.parent_frames_set.add(chosen_parent_frame) # unequivocally add to this set!!! + if not chosen_parent_frame in self.zombie_frames: + self.zombie_frames.append(chosen_parent_frame) else: # if there is only a global scope visible ... for (k, v) in get_user_globals(top_frame).items(): diff --git a/PyTutorGAE/tests/backend-tests/john-compose.golden b/PyTutorGAE/tests/backend-tests/john-compose.golden new file mode 100644 index 000000000..ef90915f2 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/john-compose.golden @@ -0,0 +1,1262 @@ +{ + "code": "def compose1(f, g):\n return lambda x: f(g(x))\n\nadd_one_and_square = compose1(lambda x: x * x, lambda x: x + 1)\nresult = add_one_and_square(12)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1", + "ordered_varnames": [ + "f", + "g" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1", + "ordered_varnames": [ + "f", + "g" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 13, + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "\u03bb_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "\u03bb_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "\u03bb_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 169, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "\u03bb_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 169, + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "\u03bb", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "\u03bb_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ], + "result": 169 + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "3": [ + "FUNCTION", + "\u03bb(x)", + null + ], + "4": [ + "FUNCTION", + "\u03bb(x)", + 1 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/john-compose.txt b/PyTutorGAE/tests/backend-tests/john-compose.txt new file mode 100644 index 000000000..4b8767912 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/john-compose.txt @@ -0,0 +1,5 @@ +def compose1(f, g): + return lambda x: f(g(x)) + +add_one_and_square = compose1(lambda x: x * x, lambda x: x + 1) +result = add_one_and_square(12) From 1c3a2d672d8fb5cafb82b9f5d2f4727e7b337c86 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 12:18:55 -0700 Subject: [PATCH 150/502] started adding a Google App Engine logger --- PyTutorGAE/logger/gae_logger.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 PyTutorGAE/logger/gae_logger.py diff --git a/PyTutorGAE/logger/gae_logger.py b/PyTutorGAE/logger/gae_logger.py new file mode 100644 index 000000000..12a8d7ba8 --- /dev/null +++ b/PyTutorGAE/logger/gae_logger.py @@ -0,0 +1,18 @@ +# User activity logger to be deployed on Google App Engine datastore + +import datetime +from google.appengine.ext import db + + +class VisualizerRequest(db.Model): + user_script = db.TextProperty(required=True) # LONG string + cumulative_mode = db.BooleanProperty(requred=True) + user_ip_addr = db.StringProperty(required=True) + request_timestamp = db.DateTimeProperty(auto_now_add=True) # always set timestamp to NOW! + +x = VisualizerRequest(user_script=db.Text(u'print "hello world"\n', encoding='utf_8'), + cumulative_mode=True + user_ip_addr='18.239.4.100') + +x.put() + From bc123867e30224431f2412e4de60ceca07c7a955 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 12:21:02 -0700 Subject: [PATCH 151/502] add http referer too --- PyTutorGAE/logger/gae_logger.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/PyTutorGAE/logger/gae_logger.py b/PyTutorGAE/logger/gae_logger.py index 12a8d7ba8..ef1c083f0 100644 --- a/PyTutorGAE/logger/gae_logger.py +++ b/PyTutorGAE/logger/gae_logger.py @@ -8,11 +8,13 @@ class VisualizerRequest(db.Model): user_script = db.TextProperty(required=True) # LONG string cumulative_mode = db.BooleanProperty(requred=True) user_ip_addr = db.StringProperty(required=True) + http_referer = db.StringProperty(required=True) request_timestamp = db.DateTimeProperty(auto_now_add=True) # always set timestamp to NOW! x = VisualizerRequest(user_script=db.Text(u'print "hello world"\n', encoding='utf_8'), cumulative_mode=True - user_ip_addr='18.239.4.100') + user_ip_addr='18.239.4.100', + http_referer='http://www.google.com/?magic-search') x.put() From 2da6b0b403016ec38d3604854831395d400f5713 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 19:53:28 -0700 Subject: [PATCH 152/502] do some sandboxing but still allow evals --- PyTutorGAE/pg_logger.py | 16 +- .../backend-tests/john-import-test.golden | 5648 +++++++++++++++++ .../tests/backend-tests/john-import-test.txt | 21 + 3 files changed, 5676 insertions(+), 9 deletions(-) create mode 100644 PyTutorGAE/tests/backend-tests/john-import-test.golden create mode 100644 PyTutorGAE/tests/backend-tests/john-import-test.txt diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 8556c32f6..ee915007a 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -553,28 +553,26 @@ def _runscript(self, script_str): self._wait_for_mainpyfile = 1 - # I think Google App Engine takes care of sandboxing, but maybe - # we should do some extra sandboxing ourselves ... - ''' # ok, let's try to sorta 'sandbox' the user script by not - # allowing certain potentially dangerous operations: + # allowing certain potentially dangerous operations. + # + # (Note that we still allow imports and let App Engine take care + # of sandboxing those appropriately.) user_builtins = {} for (k,v) in __builtins__.iteritems(): if k in ('reload', 'input', 'apply', 'open', 'compile', - '__import__', 'file', 'eval', 'execfile', + 'file', 'eval', 'execfile', 'exit', 'quit', 'raw_input', - 'dir', 'globals', 'locals', 'vars', - 'compile'): + 'dir', 'globals', 'locals', 'vars'): continue user_builtins[k] = v - ''' user_stdout = cStringIO.StringIO() sys.stdout = user_stdout user_globals = {"__name__" : "__main__", - "__builtins__" : __builtins__, + "__builtins__" : user_builtins, "__user_stdout__" : user_stdout} try: diff --git a/PyTutorGAE/tests/backend-tests/john-import-test.golden b/PyTutorGAE/tests/backend-tests/john-import-test.golden new file mode 100644 index 000000000..642221fcd --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/john-import-test.golden @@ -0,0 +1,5648 @@ +{ + "code": "from collections import OrderedDict\nfrom datetime import datetime\nfrom json import JSONDecoder\nfrom math import pi\nfrom math import sin, cos, atan2, radians, sqrt\nfrom random import randint\nimport code\nimport doctest\nimport functools\nimport inspect\nimport io\nimport math\nimport operator as op\nimport os\nimport random\nimport re\nimport signal\nimport string\nimport sys\nimport unittest\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "OrderedDict", + "__package__" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "OrderedDict": [ + "REF", + 1 + ], + "__package__": null + }, + "heap": { + "1": [ + "INSTANCE", + "ABCMeta", + [ + "__abstractmethods__", + [ + "REF", + 2 + ] + ], + [ + "__delitem__", + [ + "REF", + 3 + ] + ], + [ + "__eq__", + [ + "REF", + 4 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "__iter__", + [ + "REF", + 6 + ] + ], + [ + "__ne__", + [ + "REF", + 7 + ] + ], + [ + "__reduce__", + [ + "REF", + 8 + ] + ], + [ + "__repr__", + [ + "REF", + 9 + ] + ], + [ + "__reversed__", + [ + "REF", + 10 + ] + ], + [ + "__setitem__", + [ + "REF", + 11 + ] + ], + [ + "_abc_cache", + [ + "REF", + 12 + ] + ], + [ + "_abc_negative_cache", + [ + "REF", + 17 + ] + ], + [ + "_abc_negative_cache_version", + 10 + ], + [ + "_abc_registry", + [ + "REF", + 22 + ] + ], + [ + "clear", + [ + "REF", + 27 + ] + ], + [ + "copy", + [ + "REF", + 28 + ] + ], + [ + "fromkeys", + [ + "REF", + 29 + ] + ], + [ + "items", + [ + "REF", + 30 + ] + ], + [ + "iteritems", + [ + "REF", + 31 + ] + ], + [ + "iterkeys", + [ + "REF", + 32 + ] + ], + [ + "itervalues", + [ + "REF", + 33 + ] + ], + [ + "keys", + [ + "REF", + 34 + ] + ], + [ + "pop", + [ + "REF", + 35 + ] + ], + [ + "popitem", + [ + "REF", + 36 + ] + ], + [ + "setdefault", + [ + "REF", + 37 + ] + ], + [ + "update", + [ + "REF", + 38 + ] + ], + [ + "values", + [ + "REF", + 39 + ] + ], + [ + "viewitems", + [ + "REF", + 40 + ] + ], + [ + "viewkeys", + [ + "REF", + 41 + ] + ], + [ + "viewvalues", + [ + "REF", + 42 + ] + ] + ], + "2": [ + "frozenset", + "frozenset([])" + ], + "3": [ + "FUNCTION", + "__delitem__(self, key, PREV, NEXT, dict_delitem)", + null + ], + "4": [ + "FUNCTION", + "__eq__(self, other)", + null + ], + "5": [ + "FUNCTION", + "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "6": [ + "FUNCTION", + "__iter__(self, NEXT, KEY)", + null + ], + "7": [ + "FUNCTION", + "__ne__(self, other)", + null + ], + "8": [ + "FUNCTION", + "__reduce__(self)", + null + ], + "9": [ + "FUNCTION", + "__repr__(self)", + null + ], + "10": [ + "FUNCTION", + "__reversed__(self, PREV, KEY)", + null + ], + "11": [ + "FUNCTION", + "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", + null + ], + "12": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 13 + ] + ], + [ + "_pending_removals", + [ + "REF", + 14 + ] + ], + [ + "_remove", + [ + "REF", + 15 + ] + ], + [ + "data", + [ + "REF", + 16 + ] + ] + ], + "13": [ + "SET" + ], + "14": [ + "LIST" + ], + "15": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "16": [ + "SET" + ], + "17": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 18 + ] + ], + [ + "_pending_removals", + [ + "REF", + 19 + ] + ], + [ + "_remove", + [ + "REF", + 20 + ] + ], + [ + "data", + [ + "REF", + 21 + ] + ] + ], + "18": [ + "SET" + ], + "19": [ + "LIST" + ], + "20": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "21": [ + "SET" + ], + "22": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 23 + ] + ], + [ + "_pending_removals", + [ + "REF", + 24 + ] + ], + [ + "_remove", + [ + "REF", + 25 + ] + ], + [ + "data", + [ + "REF", + 26 + ] + ] + ], + "23": [ + "SET" + ], + "24": [ + "LIST" + ], + "25": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "26": [ + "SET" + ], + "27": [ + "FUNCTION", + "clear(self)", + null + ], + "28": [ + "FUNCTION", + "copy(self)", + null + ], + "29": [ + "classmethod", + "" + ], + "30": [ + "FUNCTION", + "items(self)", + null + ], + "31": [ + "FUNCTION", + "iteritems(self)", + null + ], + "32": [ + "FUNCTION", + "iterkeys(self)", + null + ], + "33": [ + "FUNCTION", + "itervalues(self)", + null + ], + "34": [ + "FUNCTION", + "keys(self)", + null + ], + "35": [ + "FUNCTION", + "pop(self, key, default)", + null + ], + "36": [ + "FUNCTION", + "popitem(self, last)", + null + ], + "37": [ + "FUNCTION", + "setdefault(self, key, default)", + null + ], + "38": [ + "FUNCTION", + "update(*a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "39": [ + "FUNCTION", + "values(self)", + null + ], + "40": [ + "FUNCTION", + "viewitems(self)", + null + ], + "41": [ + "FUNCTION", + "viewkeys(self)", + null + ], + "42": [ + "FUNCTION", + "viewvalues(self)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "OrderedDict", + "__package__", + "datetime" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "datetime": [ + "REF", + 43 + ], + "OrderedDict": [ + "REF", + 1 + ], + "__package__": null + }, + "heap": { + "1": [ + "INSTANCE", + "ABCMeta", + [ + "__abstractmethods__", + [ + "REF", + 2 + ] + ], + [ + "__delitem__", + [ + "REF", + 3 + ] + ], + [ + "__eq__", + [ + "REF", + 4 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "__iter__", + [ + "REF", + 6 + ] + ], + [ + "__ne__", + [ + "REF", + 7 + ] + ], + [ + "__reduce__", + [ + "REF", + 8 + ] + ], + [ + "__repr__", + [ + "REF", + 9 + ] + ], + [ + "__reversed__", + [ + "REF", + 10 + ] + ], + [ + "__setitem__", + [ + "REF", + 11 + ] + ], + [ + "_abc_cache", + [ + "REF", + 12 + ] + ], + [ + "_abc_negative_cache", + [ + "REF", + 17 + ] + ], + [ + "_abc_negative_cache_version", + 10 + ], + [ + "_abc_registry", + [ + "REF", + 22 + ] + ], + [ + "clear", + [ + "REF", + 27 + ] + ], + [ + "copy", + [ + "REF", + 28 + ] + ], + [ + "fromkeys", + [ + "REF", + 29 + ] + ], + [ + "items", + [ + "REF", + 30 + ] + ], + [ + "iteritems", + [ + "REF", + 31 + ] + ], + [ + "iterkeys", + [ + "REF", + 32 + ] + ], + [ + "itervalues", + [ + "REF", + 33 + ] + ], + [ + "keys", + [ + "REF", + 34 + ] + ], + [ + "pop", + [ + "REF", + 35 + ] + ], + [ + "popitem", + [ + "REF", + 36 + ] + ], + [ + "setdefault", + [ + "REF", + 37 + ] + ], + [ + "update", + [ + "REF", + 38 + ] + ], + [ + "values", + [ + "REF", + 39 + ] + ], + [ + "viewitems", + [ + "REF", + 40 + ] + ], + [ + "viewkeys", + [ + "REF", + 41 + ] + ], + [ + "viewvalues", + [ + "REF", + 42 + ] + ] + ], + "2": [ + "frozenset", + "frozenset([])" + ], + "3": [ + "FUNCTION", + "__delitem__(self, key, PREV, NEXT, dict_delitem)", + null + ], + "4": [ + "FUNCTION", + "__eq__(self, other)", + null + ], + "5": [ + "FUNCTION", + "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "6": [ + "FUNCTION", + "__iter__(self, NEXT, KEY)", + null + ], + "7": [ + "FUNCTION", + "__ne__(self, other)", + null + ], + "8": [ + "FUNCTION", + "__reduce__(self)", + null + ], + "9": [ + "FUNCTION", + "__repr__(self)", + null + ], + "10": [ + "FUNCTION", + "__reversed__(self, PREV, KEY)", + null + ], + "11": [ + "FUNCTION", + "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", + null + ], + "12": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 13 + ] + ], + [ + "_pending_removals", + [ + "REF", + 14 + ] + ], + [ + "_remove", + [ + "REF", + 15 + ] + ], + [ + "data", + [ + "REF", + 16 + ] + ] + ], + "13": [ + "SET" + ], + "14": [ + "LIST" + ], + "15": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "16": [ + "SET" + ], + "17": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 18 + ] + ], + [ + "_pending_removals", + [ + "REF", + 19 + ] + ], + [ + "_remove", + [ + "REF", + 20 + ] + ], + [ + "data", + [ + "REF", + 21 + ] + ] + ], + "18": [ + "SET" + ], + "19": [ + "LIST" + ], + "20": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "21": [ + "SET" + ], + "22": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 23 + ] + ], + [ + "_pending_removals", + [ + "REF", + 24 + ] + ], + [ + "_remove", + [ + "REF", + 25 + ] + ], + [ + "data", + [ + "REF", + 26 + ] + ] + ], + "23": [ + "SET" + ], + "24": [ + "LIST" + ], + "25": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "26": [ + "SET" + ], + "27": [ + "FUNCTION", + "clear(self)", + null + ], + "28": [ + "FUNCTION", + "copy(self)", + null + ], + "29": [ + "classmethod", + "" + ], + "30": [ + "FUNCTION", + "items(self)", + null + ], + "31": [ + "FUNCTION", + "iteritems(self)", + null + ], + "32": [ + "FUNCTION", + "iterkeys(self)", + null + ], + "33": [ + "FUNCTION", + "itervalues(self)", + null + ], + "34": [ + "FUNCTION", + "keys(self)", + null + ], + "35": [ + "FUNCTION", + "pop(self, key, default)", + null + ], + "36": [ + "FUNCTION", + "popitem(self, last)", + null + ], + "37": [ + "FUNCTION", + "setdefault(self, key, default)", + null + ], + "38": [ + "FUNCTION", + "update(*a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "39": [ + "FUNCTION", + "values(self)", + null + ], + "40": [ + "FUNCTION", + "viewitems(self)", + null + ], + "41": [ + "FUNCTION", + "viewkeys(self)", + null + ], + "42": [ + "FUNCTION", + "viewvalues(self)", + null + ], + "43": [ + "CLASS", + "datetime", + [ + "date" + ], + [ + "__add__", + [ + "REF", + 44 + ] + ], + [ + "__eq__", + [ + "REF", + 45 + ] + ], + [ + "__ge__", + [ + "REF", + 46 + ] + ], + [ + "__getattribute__", + [ + "REF", + 47 + ] + ], + [ + "__gt__", + [ + "REF", + 48 + ] + ], + [ + "__hash__", + [ + "REF", + 49 + ] + ], + [ + "__le__", + [ + "REF", + 50 + ] + ], + [ + "__lt__", + [ + "REF", + 51 + ] + ], + [ + "__ne__", + [ + "REF", + 52 + ] + ], + [ + "__new__", + [ + "REF", + 53 + ] + ], + [ + "__radd__", + [ + "REF", + 54 + ] + ], + [ + "__reduce__", + [ + "REF", + 55 + ] + ], + [ + "__repr__", + [ + "REF", + 56 + ] + ], + [ + "__rsub__", + [ + "REF", + 57 + ] + ], + [ + "__str__", + [ + "REF", + 58 + ] + ], + [ + "__sub__", + [ + "REF", + 59 + ] + ], + [ + "astimezone", + [ + "REF", + 60 + ] + ], + [ + "combine", + [ + "REF", + 61 + ] + ], + [ + "ctime", + [ + "REF", + 62 + ] + ], + [ + "date", + [ + "REF", + 63 + ] + ], + [ + "dst", + [ + "REF", + 64 + ] + ], + [ + "fromtimestamp", + [ + "REF", + 65 + ] + ], + [ + "hour", + [ + "REF", + 66 + ] + ], + [ + "isoformat", + [ + "REF", + 67 + ] + ], + [ + "max", + [ + "REF", + 68 + ] + ], + [ + "microsecond", + [ + "REF", + 69 + ] + ], + [ + "min", + [ + "REF", + 70 + ] + ], + [ + "minute", + [ + "REF", + 71 + ] + ], + [ + "now", + [ + "REF", + 72 + ] + ], + [ + "replace", + [ + "REF", + 73 + ] + ], + [ + "resolution", + [ + "REF", + 74 + ] + ], + [ + "second", + [ + "REF", + 75 + ] + ], + [ + "strptime", + [ + "REF", + 76 + ] + ], + [ + "time", + [ + "REF", + 77 + ] + ], + [ + "timetuple", + [ + "REF", + 78 + ] + ], + [ + "timetz", + [ + "REF", + 79 + ] + ], + [ + "tzinfo", + [ + "REF", + 80 + ] + ], + [ + "tzname", + [ + "REF", + 81 + ] + ], + [ + "utcfromtimestamp", + [ + "REF", + 82 + ] + ], + [ + "utcnow", + [ + "REF", + 83 + ] + ], + [ + "utcoffset", + [ + "REF", + 84 + ] + ], + [ + "utctimetuple", + [ + "REF", + 85 + ] + ] + ], + "44": [ + "wrapper_descriptor", + "" + ], + "45": [ + "wrapper_descriptor", + "" + ], + "46": [ + "wrapper_descriptor", + "" + ], + "47": [ + "wrapper_descriptor", + "" + ], + "48": [ + "wrapper_descriptor", + "" + ], + "49": [ + "wrapper_descriptor", + "" + ], + "50": [ + "wrapper_descriptor", + "" + ], + "51": [ + "wrapper_descriptor", + "" + ], + "52": [ + "wrapper_descriptor", + "" + ], + "53": [ + "builtin_function_or_method", + "" + ], + "54": [ + "wrapper_descriptor", + "" + ], + "55": [ + "method_descriptor", + "" + ], + "56": [ + "wrapper_descriptor", + "" + ], + "57": [ + "wrapper_descriptor", + "" + ], + "58": [ + "wrapper_descriptor", + "" + ], + "59": [ + "wrapper_descriptor", + "" + ], + "60": [ + "method_descriptor", + "" + ], + "61": [ + "classmethod_descriptor", + "" + ], + "62": [ + "method_descriptor", + "" + ], + "63": [ + "method_descriptor", + "" + ], + "64": [ + "method_descriptor", + "" + ], + "65": [ + "classmethod_descriptor", + "" + ], + "66": [ + "getset_descriptor", + "" + ], + "67": [ + "method_descriptor", + "" + ], + "68": [ + "datetime.datetime", + "9999-12-31 23:59:59.999999" + ], + "69": [ + "getset_descriptor", + "" + ], + "70": [ + "datetime.datetime", + "0001-01-01 00:00:00" + ], + "71": [ + "getset_descriptor", + "" + ], + "72": [ + "classmethod_descriptor", + "" + ], + "73": [ + "method_descriptor", + "" + ], + "74": [ + "datetime.timedelta", + "0:00:00.000001" + ], + "75": [ + "getset_descriptor", + "" + ], + "76": [ + "classmethod_descriptor", + "" + ], + "77": [ + "method_descriptor", + "" + ], + "78": [ + "method_descriptor", + "" + ], + "79": [ + "method_descriptor", + "" + ], + "80": [ + "getset_descriptor", + "" + ], + "81": [ + "method_descriptor", + "" + ], + "82": [ + "classmethod_descriptor", + "" + ], + "83": [ + "classmethod_descriptor", + "" + ], + "84": [ + "method_descriptor", + "" + ], + "85": [ + "method_descriptor", + "" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "OrderedDict", + "__package__", + "datetime", + "JSONDecoder" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "datetime": [ + "REF", + 43 + ], + "OrderedDict": [ + "REF", + 1 + ], + "JSONDecoder": [ + "REF", + 86 + ], + "__package__": null + }, + "heap": { + "1": [ + "INSTANCE", + "ABCMeta", + [ + "__abstractmethods__", + [ + "REF", + 2 + ] + ], + [ + "__delitem__", + [ + "REF", + 3 + ] + ], + [ + "__eq__", + [ + "REF", + 4 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "__iter__", + [ + "REF", + 6 + ] + ], + [ + "__ne__", + [ + "REF", + 7 + ] + ], + [ + "__reduce__", + [ + "REF", + 8 + ] + ], + [ + "__repr__", + [ + "REF", + 9 + ] + ], + [ + "__reversed__", + [ + "REF", + 10 + ] + ], + [ + "__setitem__", + [ + "REF", + 11 + ] + ], + [ + "_abc_cache", + [ + "REF", + 12 + ] + ], + [ + "_abc_negative_cache", + [ + "REF", + 17 + ] + ], + [ + "_abc_negative_cache_version", + 10 + ], + [ + "_abc_registry", + [ + "REF", + 22 + ] + ], + [ + "clear", + [ + "REF", + 27 + ] + ], + [ + "copy", + [ + "REF", + 28 + ] + ], + [ + "fromkeys", + [ + "REF", + 29 + ] + ], + [ + "items", + [ + "REF", + 30 + ] + ], + [ + "iteritems", + [ + "REF", + 31 + ] + ], + [ + "iterkeys", + [ + "REF", + 32 + ] + ], + [ + "itervalues", + [ + "REF", + 33 + ] + ], + [ + "keys", + [ + "REF", + 34 + ] + ], + [ + "pop", + [ + "REF", + 35 + ] + ], + [ + "popitem", + [ + "REF", + 36 + ] + ], + [ + "setdefault", + [ + "REF", + 37 + ] + ], + [ + "update", + [ + "REF", + 38 + ] + ], + [ + "values", + [ + "REF", + 39 + ] + ], + [ + "viewitems", + [ + "REF", + 40 + ] + ], + [ + "viewkeys", + [ + "REF", + 41 + ] + ], + [ + "viewvalues", + [ + "REF", + 42 + ] + ] + ], + "2": [ + "frozenset", + "frozenset([])" + ], + "3": [ + "FUNCTION", + "__delitem__(self, key, PREV, NEXT, dict_delitem)", + null + ], + "4": [ + "FUNCTION", + "__eq__(self, other)", + null + ], + "5": [ + "FUNCTION", + "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "6": [ + "FUNCTION", + "__iter__(self, NEXT, KEY)", + null + ], + "7": [ + "FUNCTION", + "__ne__(self, other)", + null + ], + "8": [ + "FUNCTION", + "__reduce__(self)", + null + ], + "9": [ + "FUNCTION", + "__repr__(self)", + null + ], + "10": [ + "FUNCTION", + "__reversed__(self, PREV, KEY)", + null + ], + "11": [ + "FUNCTION", + "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", + null + ], + "12": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 13 + ] + ], + [ + "_pending_removals", + [ + "REF", + 14 + ] + ], + [ + "_remove", + [ + "REF", + 15 + ] + ], + [ + "data", + [ + "REF", + 16 + ] + ] + ], + "13": [ + "SET" + ], + "14": [ + "LIST" + ], + "15": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "16": [ + "SET" + ], + "17": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 18 + ] + ], + [ + "_pending_removals", + [ + "REF", + 19 + ] + ], + [ + "_remove", + [ + "REF", + 20 + ] + ], + [ + "data", + [ + "REF", + 21 + ] + ] + ], + "18": [ + "SET" + ], + "19": [ + "LIST" + ], + "20": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "21": [ + "SET" + ], + "22": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 23 + ] + ], + [ + "_pending_removals", + [ + "REF", + 24 + ] + ], + [ + "_remove", + [ + "REF", + 25 + ] + ], + [ + "data", + [ + "REF", + 26 + ] + ] + ], + "23": [ + "SET" + ], + "24": [ + "LIST" + ], + "25": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "26": [ + "SET" + ], + "27": [ + "FUNCTION", + "clear(self)", + null + ], + "28": [ + "FUNCTION", + "copy(self)", + null + ], + "29": [ + "classmethod", + "" + ], + "30": [ + "FUNCTION", + "items(self)", + null + ], + "31": [ + "FUNCTION", + "iteritems(self)", + null + ], + "32": [ + "FUNCTION", + "iterkeys(self)", + null + ], + "33": [ + "FUNCTION", + "itervalues(self)", + null + ], + "34": [ + "FUNCTION", + "keys(self)", + null + ], + "35": [ + "FUNCTION", + "pop(self, key, default)", + null + ], + "36": [ + "FUNCTION", + "popitem(self, last)", + null + ], + "37": [ + "FUNCTION", + "setdefault(self, key, default)", + null + ], + "38": [ + "FUNCTION", + "update(*a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "39": [ + "FUNCTION", + "values(self)", + null + ], + "40": [ + "FUNCTION", + "viewitems(self)", + null + ], + "41": [ + "FUNCTION", + "viewkeys(self)", + null + ], + "42": [ + "FUNCTION", + "viewvalues(self)", + null + ], + "43": [ + "CLASS", + "datetime", + [ + "date" + ], + [ + "__add__", + [ + "REF", + 44 + ] + ], + [ + "__eq__", + [ + "REF", + 45 + ] + ], + [ + "__ge__", + [ + "REF", + 46 + ] + ], + [ + "__getattribute__", + [ + "REF", + 47 + ] + ], + [ + "__gt__", + [ + "REF", + 48 + ] + ], + [ + "__hash__", + [ + "REF", + 49 + ] + ], + [ + "__le__", + [ + "REF", + 50 + ] + ], + [ + "__lt__", + [ + "REF", + 51 + ] + ], + [ + "__ne__", + [ + "REF", + 52 + ] + ], + [ + "__new__", + [ + "REF", + 53 + ] + ], + [ + "__radd__", + [ + "REF", + 54 + ] + ], + [ + "__reduce__", + [ + "REF", + 55 + ] + ], + [ + "__repr__", + [ + "REF", + 56 + ] + ], + [ + "__rsub__", + [ + "REF", + 57 + ] + ], + [ + "__str__", + [ + "REF", + 58 + ] + ], + [ + "__sub__", + [ + "REF", + 59 + ] + ], + [ + "astimezone", + [ + "REF", + 60 + ] + ], + [ + "combine", + [ + "REF", + 61 + ] + ], + [ + "ctime", + [ + "REF", + 62 + ] + ], + [ + "date", + [ + "REF", + 63 + ] + ], + [ + "dst", + [ + "REF", + 64 + ] + ], + [ + "fromtimestamp", + [ + "REF", + 65 + ] + ], + [ + "hour", + [ + "REF", + 66 + ] + ], + [ + "isoformat", + [ + "REF", + 67 + ] + ], + [ + "max", + [ + "REF", + 68 + ] + ], + [ + "microsecond", + [ + "REF", + 69 + ] + ], + [ + "min", + [ + "REF", + 70 + ] + ], + [ + "minute", + [ + "REF", + 71 + ] + ], + [ + "now", + [ + "REF", + 72 + ] + ], + [ + "replace", + [ + "REF", + 73 + ] + ], + [ + "resolution", + [ + "REF", + 74 + ] + ], + [ + "second", + [ + "REF", + 75 + ] + ], + [ + "strptime", + [ + "REF", + 76 + ] + ], + [ + "time", + [ + "REF", + 77 + ] + ], + [ + "timetuple", + [ + "REF", + 78 + ] + ], + [ + "timetz", + [ + "REF", + 79 + ] + ], + [ + "tzinfo", + [ + "REF", + 80 + ] + ], + [ + "tzname", + [ + "REF", + 81 + ] + ], + [ + "utcfromtimestamp", + [ + "REF", + 82 + ] + ], + [ + "utcnow", + [ + "REF", + 83 + ] + ], + [ + "utcoffset", + [ + "REF", + 84 + ] + ], + [ + "utctimetuple", + [ + "REF", + 85 + ] + ] + ], + "44": [ + "wrapper_descriptor", + "" + ], + "45": [ + "wrapper_descriptor", + "" + ], + "46": [ + "wrapper_descriptor", + "" + ], + "47": [ + "wrapper_descriptor", + "" + ], + "48": [ + "wrapper_descriptor", + "" + ], + "49": [ + "wrapper_descriptor", + "" + ], + "50": [ + "wrapper_descriptor", + "" + ], + "51": [ + "wrapper_descriptor", + "" + ], + "52": [ + "wrapper_descriptor", + "" + ], + "53": [ + "builtin_function_or_method", + "" + ], + "54": [ + "wrapper_descriptor", + "" + ], + "55": [ + "method_descriptor", + "" + ], + "56": [ + "wrapper_descriptor", + "" + ], + "57": [ + "wrapper_descriptor", + "" + ], + "58": [ + "wrapper_descriptor", + "" + ], + "59": [ + "wrapper_descriptor", + "" + ], + "60": [ + "method_descriptor", + "" + ], + "61": [ + "classmethod_descriptor", + "" + ], + "62": [ + "method_descriptor", + "" + ], + "63": [ + "method_descriptor", + "" + ], + "64": [ + "method_descriptor", + "" + ], + "65": [ + "classmethod_descriptor", + "" + ], + "66": [ + "getset_descriptor", + "" + ], + "67": [ + "method_descriptor", + "" + ], + "68": [ + "datetime.datetime", + "9999-12-31 23:59:59.999999" + ], + "69": [ + "getset_descriptor", + "" + ], + "70": [ + "datetime.datetime", + "0001-01-01 00:00:00" + ], + "71": [ + "getset_descriptor", + "" + ], + "72": [ + "classmethod_descriptor", + "" + ], + "73": [ + "method_descriptor", + "" + ], + "74": [ + "datetime.timedelta", + "0:00:00.000001" + ], + "75": [ + "getset_descriptor", + "" + ], + "76": [ + "classmethod_descriptor", + "" + ], + "77": [ + "method_descriptor", + "" + ], + "78": [ + "method_descriptor", + "" + ], + "79": [ + "method_descriptor", + "" + ], + "80": [ + "getset_descriptor", + "" + ], + "81": [ + "method_descriptor", + "" + ], + "82": [ + "classmethod_descriptor", + "" + ], + "83": [ + "classmethod_descriptor", + "" + ], + "84": [ + "method_descriptor", + "" + ], + "85": [ + "method_descriptor", + "" + ], + "86": [ + "CLASS", + "JSONDecoder", + [], + [ + "__init__", + [ + "REF", + 87 + ] + ], + [ + "decode", + [ + "REF", + 88 + ] + ], + [ + "raw_decode", + [ + "REF", + 89 + ] + ] + ], + "87": [ + "FUNCTION", + "__init__(self, encoding, object_hook, parse_float, parse_int, parse_constant, strict, object_pairs_hook)", + null + ], + "88": [ + "FUNCTION", + "decode(self, s, _w)", + null + ], + "89": [ + "FUNCTION", + "raw_decode(self, s, idx)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "OrderedDict", + "__package__", + "datetime", + "JSONDecoder", + "pi" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "datetime": [ + "REF", + 43 + ], + "pi": 3.141592653589793, + "OrderedDict": [ + "REF", + 1 + ], + "JSONDecoder": [ + "REF", + 86 + ], + "__package__": null + }, + "heap": { + "1": [ + "INSTANCE", + "ABCMeta", + [ + "__abstractmethods__", + [ + "REF", + 2 + ] + ], + [ + "__delitem__", + [ + "REF", + 3 + ] + ], + [ + "__eq__", + [ + "REF", + 4 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "__iter__", + [ + "REF", + 6 + ] + ], + [ + "__ne__", + [ + "REF", + 7 + ] + ], + [ + "__reduce__", + [ + "REF", + 8 + ] + ], + [ + "__repr__", + [ + "REF", + 9 + ] + ], + [ + "__reversed__", + [ + "REF", + 10 + ] + ], + [ + "__setitem__", + [ + "REF", + 11 + ] + ], + [ + "_abc_cache", + [ + "REF", + 12 + ] + ], + [ + "_abc_negative_cache", + [ + "REF", + 17 + ] + ], + [ + "_abc_negative_cache_version", + 10 + ], + [ + "_abc_registry", + [ + "REF", + 22 + ] + ], + [ + "clear", + [ + "REF", + 27 + ] + ], + [ + "copy", + [ + "REF", + 28 + ] + ], + [ + "fromkeys", + [ + "REF", + 29 + ] + ], + [ + "items", + [ + "REF", + 30 + ] + ], + [ + "iteritems", + [ + "REF", + 31 + ] + ], + [ + "iterkeys", + [ + "REF", + 32 + ] + ], + [ + "itervalues", + [ + "REF", + 33 + ] + ], + [ + "keys", + [ + "REF", + 34 + ] + ], + [ + "pop", + [ + "REF", + 35 + ] + ], + [ + "popitem", + [ + "REF", + 36 + ] + ], + [ + "setdefault", + [ + "REF", + 37 + ] + ], + [ + "update", + [ + "REF", + 38 + ] + ], + [ + "values", + [ + "REF", + 39 + ] + ], + [ + "viewitems", + [ + "REF", + 40 + ] + ], + [ + "viewkeys", + [ + "REF", + 41 + ] + ], + [ + "viewvalues", + [ + "REF", + 42 + ] + ] + ], + "2": [ + "frozenset", + "frozenset([])" + ], + "3": [ + "FUNCTION", + "__delitem__(self, key, PREV, NEXT, dict_delitem)", + null + ], + "4": [ + "FUNCTION", + "__eq__(self, other)", + null + ], + "5": [ + "FUNCTION", + "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "6": [ + "FUNCTION", + "__iter__(self, NEXT, KEY)", + null + ], + "7": [ + "FUNCTION", + "__ne__(self, other)", + null + ], + "8": [ + "FUNCTION", + "__reduce__(self)", + null + ], + "9": [ + "FUNCTION", + "__repr__(self)", + null + ], + "10": [ + "FUNCTION", + "__reversed__(self, PREV, KEY)", + null + ], + "11": [ + "FUNCTION", + "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", + null + ], + "12": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 13 + ] + ], + [ + "_pending_removals", + [ + "REF", + 14 + ] + ], + [ + "_remove", + [ + "REF", + 15 + ] + ], + [ + "data", + [ + "REF", + 16 + ] + ] + ], + "13": [ + "SET" + ], + "14": [ + "LIST" + ], + "15": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "16": [ + "SET" + ], + "17": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 18 + ] + ], + [ + "_pending_removals", + [ + "REF", + 19 + ] + ], + [ + "_remove", + [ + "REF", + 20 + ] + ], + [ + "data", + [ + "REF", + 21 + ] + ] + ], + "18": [ + "SET" + ], + "19": [ + "LIST" + ], + "20": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "21": [ + "SET" + ], + "22": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 23 + ] + ], + [ + "_pending_removals", + [ + "REF", + 24 + ] + ], + [ + "_remove", + [ + "REF", + 25 + ] + ], + [ + "data", + [ + "REF", + 26 + ] + ] + ], + "23": [ + "SET" + ], + "24": [ + "LIST" + ], + "25": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "26": [ + "SET" + ], + "27": [ + "FUNCTION", + "clear(self)", + null + ], + "28": [ + "FUNCTION", + "copy(self)", + null + ], + "29": [ + "classmethod", + "" + ], + "30": [ + "FUNCTION", + "items(self)", + null + ], + "31": [ + "FUNCTION", + "iteritems(self)", + null + ], + "32": [ + "FUNCTION", + "iterkeys(self)", + null + ], + "33": [ + "FUNCTION", + "itervalues(self)", + null + ], + "34": [ + "FUNCTION", + "keys(self)", + null + ], + "35": [ + "FUNCTION", + "pop(self, key, default)", + null + ], + "36": [ + "FUNCTION", + "popitem(self, last)", + null + ], + "37": [ + "FUNCTION", + "setdefault(self, key, default)", + null + ], + "38": [ + "FUNCTION", + "update(*a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "39": [ + "FUNCTION", + "values(self)", + null + ], + "40": [ + "FUNCTION", + "viewitems(self)", + null + ], + "41": [ + "FUNCTION", + "viewkeys(self)", + null + ], + "42": [ + "FUNCTION", + "viewvalues(self)", + null + ], + "43": [ + "CLASS", + "datetime", + [ + "date" + ], + [ + "__add__", + [ + "REF", + 44 + ] + ], + [ + "__eq__", + [ + "REF", + 45 + ] + ], + [ + "__ge__", + [ + "REF", + 46 + ] + ], + [ + "__getattribute__", + [ + "REF", + 47 + ] + ], + [ + "__gt__", + [ + "REF", + 48 + ] + ], + [ + "__hash__", + [ + "REF", + 49 + ] + ], + [ + "__le__", + [ + "REF", + 50 + ] + ], + [ + "__lt__", + [ + "REF", + 51 + ] + ], + [ + "__ne__", + [ + "REF", + 52 + ] + ], + [ + "__new__", + [ + "REF", + 53 + ] + ], + [ + "__radd__", + [ + "REF", + 54 + ] + ], + [ + "__reduce__", + [ + "REF", + 55 + ] + ], + [ + "__repr__", + [ + "REF", + 56 + ] + ], + [ + "__rsub__", + [ + "REF", + 57 + ] + ], + [ + "__str__", + [ + "REF", + 58 + ] + ], + [ + "__sub__", + [ + "REF", + 59 + ] + ], + [ + "astimezone", + [ + "REF", + 60 + ] + ], + [ + "combine", + [ + "REF", + 61 + ] + ], + [ + "ctime", + [ + "REF", + 62 + ] + ], + [ + "date", + [ + "REF", + 63 + ] + ], + [ + "dst", + [ + "REF", + 64 + ] + ], + [ + "fromtimestamp", + [ + "REF", + 65 + ] + ], + [ + "hour", + [ + "REF", + 66 + ] + ], + [ + "isoformat", + [ + "REF", + 67 + ] + ], + [ + "max", + [ + "REF", + 68 + ] + ], + [ + "microsecond", + [ + "REF", + 69 + ] + ], + [ + "min", + [ + "REF", + 70 + ] + ], + [ + "minute", + [ + "REF", + 71 + ] + ], + [ + "now", + [ + "REF", + 72 + ] + ], + [ + "replace", + [ + "REF", + 73 + ] + ], + [ + "resolution", + [ + "REF", + 74 + ] + ], + [ + "second", + [ + "REF", + 75 + ] + ], + [ + "strptime", + [ + "REF", + 76 + ] + ], + [ + "time", + [ + "REF", + 77 + ] + ], + [ + "timetuple", + [ + "REF", + 78 + ] + ], + [ + "timetz", + [ + "REF", + 79 + ] + ], + [ + "tzinfo", + [ + "REF", + 80 + ] + ], + [ + "tzname", + [ + "REF", + 81 + ] + ], + [ + "utcfromtimestamp", + [ + "REF", + 82 + ] + ], + [ + "utcnow", + [ + "REF", + 83 + ] + ], + [ + "utcoffset", + [ + "REF", + 84 + ] + ], + [ + "utctimetuple", + [ + "REF", + 85 + ] + ] + ], + "44": [ + "wrapper_descriptor", + "" + ], + "45": [ + "wrapper_descriptor", + "" + ], + "46": [ + "wrapper_descriptor", + "" + ], + "47": [ + "wrapper_descriptor", + "" + ], + "48": [ + "wrapper_descriptor", + "" + ], + "49": [ + "wrapper_descriptor", + "" + ], + "50": [ + "wrapper_descriptor", + "" + ], + "51": [ + "wrapper_descriptor", + "" + ], + "52": [ + "wrapper_descriptor", + "" + ], + "53": [ + "builtin_function_or_method", + "" + ], + "54": [ + "wrapper_descriptor", + "" + ], + "55": [ + "method_descriptor", + "" + ], + "56": [ + "wrapper_descriptor", + "" + ], + "57": [ + "wrapper_descriptor", + "" + ], + "58": [ + "wrapper_descriptor", + "" + ], + "59": [ + "wrapper_descriptor", + "" + ], + "60": [ + "method_descriptor", + "" + ], + "61": [ + "classmethod_descriptor", + "" + ], + "62": [ + "method_descriptor", + "" + ], + "63": [ + "method_descriptor", + "" + ], + "64": [ + "method_descriptor", + "" + ], + "65": [ + "classmethod_descriptor", + "" + ], + "66": [ + "getset_descriptor", + "" + ], + "67": [ + "method_descriptor", + "" + ], + "68": [ + "datetime.datetime", + "9999-12-31 23:59:59.999999" + ], + "69": [ + "getset_descriptor", + "" + ], + "70": [ + "datetime.datetime", + "0001-01-01 00:00:00" + ], + "71": [ + "getset_descriptor", + "" + ], + "72": [ + "classmethod_descriptor", + "" + ], + "73": [ + "method_descriptor", + "" + ], + "74": [ + "datetime.timedelta", + "0:00:00.000001" + ], + "75": [ + "getset_descriptor", + "" + ], + "76": [ + "classmethod_descriptor", + "" + ], + "77": [ + "method_descriptor", + "" + ], + "78": [ + "method_descriptor", + "" + ], + "79": [ + "method_descriptor", + "" + ], + "80": [ + "getset_descriptor", + "" + ], + "81": [ + "method_descriptor", + "" + ], + "82": [ + "classmethod_descriptor", + "" + ], + "83": [ + "classmethod_descriptor", + "" + ], + "84": [ + "method_descriptor", + "" + ], + "85": [ + "method_descriptor", + "" + ], + "86": [ + "CLASS", + "JSONDecoder", + [], + [ + "__init__", + [ + "REF", + 87 + ] + ], + [ + "decode", + [ + "REF", + 88 + ] + ], + [ + "raw_decode", + [ + "REF", + 89 + ] + ] + ], + "87": [ + "FUNCTION", + "__init__(self, encoding, object_hook, parse_float, parse_int, parse_constant, strict, object_pairs_hook)", + null + ], + "88": [ + "FUNCTION", + "decode(self, s, _w)", + null + ], + "89": [ + "FUNCTION", + "raw_decode(self, s, idx)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "OrderedDict", + "__package__", + "datetime", + "JSONDecoder", + "pi", + "cos", + "sqrt", + "atan2", + "sin", + "radians" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "cos": [ + "REF", + 90 + ], + "pi": 3.141592653589793, + "OrderedDict": [ + "REF", + 1 + ], + "JSONDecoder": [ + "REF", + 86 + ], + "sqrt": [ + "REF", + 91 + ], + "datetime": [ + "REF", + 43 + ], + "atan2": [ + "REF", + 92 + ], + "__package__": null, + "sin": [ + "REF", + 93 + ], + "radians": [ + "REF", + 94 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "ABCMeta", + [ + "__abstractmethods__", + [ + "REF", + 2 + ] + ], + [ + "__delitem__", + [ + "REF", + 3 + ] + ], + [ + "__eq__", + [ + "REF", + 4 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "__iter__", + [ + "REF", + 6 + ] + ], + [ + "__ne__", + [ + "REF", + 7 + ] + ], + [ + "__reduce__", + [ + "REF", + 8 + ] + ], + [ + "__repr__", + [ + "REF", + 9 + ] + ], + [ + "__reversed__", + [ + "REF", + 10 + ] + ], + [ + "__setitem__", + [ + "REF", + 11 + ] + ], + [ + "_abc_cache", + [ + "REF", + 12 + ] + ], + [ + "_abc_negative_cache", + [ + "REF", + 17 + ] + ], + [ + "_abc_negative_cache_version", + 10 + ], + [ + "_abc_registry", + [ + "REF", + 22 + ] + ], + [ + "clear", + [ + "REF", + 27 + ] + ], + [ + "copy", + [ + "REF", + 28 + ] + ], + [ + "fromkeys", + [ + "REF", + 29 + ] + ], + [ + "items", + [ + "REF", + 30 + ] + ], + [ + "iteritems", + [ + "REF", + 31 + ] + ], + [ + "iterkeys", + [ + "REF", + 32 + ] + ], + [ + "itervalues", + [ + "REF", + 33 + ] + ], + [ + "keys", + [ + "REF", + 34 + ] + ], + [ + "pop", + [ + "REF", + 35 + ] + ], + [ + "popitem", + [ + "REF", + 36 + ] + ], + [ + "setdefault", + [ + "REF", + 37 + ] + ], + [ + "update", + [ + "REF", + 38 + ] + ], + [ + "values", + [ + "REF", + 39 + ] + ], + [ + "viewitems", + [ + "REF", + 40 + ] + ], + [ + "viewkeys", + [ + "REF", + 41 + ] + ], + [ + "viewvalues", + [ + "REF", + 42 + ] + ] + ], + "2": [ + "frozenset", + "frozenset([])" + ], + "3": [ + "FUNCTION", + "__delitem__(self, key, PREV, NEXT, dict_delitem)", + null + ], + "4": [ + "FUNCTION", + "__eq__(self, other)", + null + ], + "5": [ + "FUNCTION", + "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "6": [ + "FUNCTION", + "__iter__(self, NEXT, KEY)", + null + ], + "7": [ + "FUNCTION", + "__ne__(self, other)", + null + ], + "8": [ + "FUNCTION", + "__reduce__(self)", + null + ], + "9": [ + "FUNCTION", + "__repr__(self)", + null + ], + "10": [ + "FUNCTION", + "__reversed__(self, PREV, KEY)", + null + ], + "11": [ + "FUNCTION", + "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", + null + ], + "12": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 13 + ] + ], + [ + "_pending_removals", + [ + "REF", + 14 + ] + ], + [ + "_remove", + [ + "REF", + 15 + ] + ], + [ + "data", + [ + "REF", + 16 + ] + ] + ], + "13": [ + "SET" + ], + "14": [ + "LIST" + ], + "15": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "16": [ + "SET" + ], + "17": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 18 + ] + ], + [ + "_pending_removals", + [ + "REF", + 19 + ] + ], + [ + "_remove", + [ + "REF", + 20 + ] + ], + [ + "data", + [ + "REF", + 21 + ] + ] + ], + "18": [ + "SET" + ], + "19": [ + "LIST" + ], + "20": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "21": [ + "SET" + ], + "22": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 23 + ] + ], + [ + "_pending_removals", + [ + "REF", + 24 + ] + ], + [ + "_remove", + [ + "REF", + 25 + ] + ], + [ + "data", + [ + "REF", + 26 + ] + ] + ], + "23": [ + "SET" + ], + "24": [ + "LIST" + ], + "25": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "26": [ + "SET" + ], + "27": [ + "FUNCTION", + "clear(self)", + null + ], + "28": [ + "FUNCTION", + "copy(self)", + null + ], + "29": [ + "classmethod", + "" + ], + "30": [ + "FUNCTION", + "items(self)", + null + ], + "31": [ + "FUNCTION", + "iteritems(self)", + null + ], + "32": [ + "FUNCTION", + "iterkeys(self)", + null + ], + "33": [ + "FUNCTION", + "itervalues(self)", + null + ], + "34": [ + "FUNCTION", + "keys(self)", + null + ], + "35": [ + "FUNCTION", + "pop(self, key, default)", + null + ], + "36": [ + "FUNCTION", + "popitem(self, last)", + null + ], + "37": [ + "FUNCTION", + "setdefault(self, key, default)", + null + ], + "38": [ + "FUNCTION", + "update(*a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "39": [ + "FUNCTION", + "values(self)", + null + ], + "40": [ + "FUNCTION", + "viewitems(self)", + null + ], + "41": [ + "FUNCTION", + "viewkeys(self)", + null + ], + "42": [ + "FUNCTION", + "viewvalues(self)", + null + ], + "43": [ + "CLASS", + "datetime", + [ + "date" + ], + [ + "__add__", + [ + "REF", + 44 + ] + ], + [ + "__eq__", + [ + "REF", + 45 + ] + ], + [ + "__ge__", + [ + "REF", + 46 + ] + ], + [ + "__getattribute__", + [ + "REF", + 47 + ] + ], + [ + "__gt__", + [ + "REF", + 48 + ] + ], + [ + "__hash__", + [ + "REF", + 49 + ] + ], + [ + "__le__", + [ + "REF", + 50 + ] + ], + [ + "__lt__", + [ + "REF", + 51 + ] + ], + [ + "__ne__", + [ + "REF", + 52 + ] + ], + [ + "__new__", + [ + "REF", + 53 + ] + ], + [ + "__radd__", + [ + "REF", + 54 + ] + ], + [ + "__reduce__", + [ + "REF", + 55 + ] + ], + [ + "__repr__", + [ + "REF", + 56 + ] + ], + [ + "__rsub__", + [ + "REF", + 57 + ] + ], + [ + "__str__", + [ + "REF", + 58 + ] + ], + [ + "__sub__", + [ + "REF", + 59 + ] + ], + [ + "astimezone", + [ + "REF", + 60 + ] + ], + [ + "combine", + [ + "REF", + 61 + ] + ], + [ + "ctime", + [ + "REF", + 62 + ] + ], + [ + "date", + [ + "REF", + 63 + ] + ], + [ + "dst", + [ + "REF", + 64 + ] + ], + [ + "fromtimestamp", + [ + "REF", + 65 + ] + ], + [ + "hour", + [ + "REF", + 66 + ] + ], + [ + "isoformat", + [ + "REF", + 67 + ] + ], + [ + "max", + [ + "REF", + 68 + ] + ], + [ + "microsecond", + [ + "REF", + 69 + ] + ], + [ + "min", + [ + "REF", + 70 + ] + ], + [ + "minute", + [ + "REF", + 71 + ] + ], + [ + "now", + [ + "REF", + 72 + ] + ], + [ + "replace", + [ + "REF", + 73 + ] + ], + [ + "resolution", + [ + "REF", + 74 + ] + ], + [ + "second", + [ + "REF", + 75 + ] + ], + [ + "strptime", + [ + "REF", + 76 + ] + ], + [ + "time", + [ + "REF", + 77 + ] + ], + [ + "timetuple", + [ + "REF", + 78 + ] + ], + [ + "timetz", + [ + "REF", + 79 + ] + ], + [ + "tzinfo", + [ + "REF", + 80 + ] + ], + [ + "tzname", + [ + "REF", + 81 + ] + ], + [ + "utcfromtimestamp", + [ + "REF", + 82 + ] + ], + [ + "utcnow", + [ + "REF", + 83 + ] + ], + [ + "utcoffset", + [ + "REF", + 84 + ] + ], + [ + "utctimetuple", + [ + "REF", + 85 + ] + ] + ], + "44": [ + "wrapper_descriptor", + "" + ], + "45": [ + "wrapper_descriptor", + "" + ], + "46": [ + "wrapper_descriptor", + "" + ], + "47": [ + "wrapper_descriptor", + "" + ], + "48": [ + "wrapper_descriptor", + "" + ], + "49": [ + "wrapper_descriptor", + "" + ], + "50": [ + "wrapper_descriptor", + "" + ], + "51": [ + "wrapper_descriptor", + "" + ], + "52": [ + "wrapper_descriptor", + "" + ], + "53": [ + "builtin_function_or_method", + "" + ], + "54": [ + "wrapper_descriptor", + "" + ], + "55": [ + "method_descriptor", + "" + ], + "56": [ + "wrapper_descriptor", + "" + ], + "57": [ + "wrapper_descriptor", + "" + ], + "58": [ + "wrapper_descriptor", + "" + ], + "59": [ + "wrapper_descriptor", + "" + ], + "60": [ + "method_descriptor", + "" + ], + "61": [ + "classmethod_descriptor", + "" + ], + "62": [ + "method_descriptor", + "" + ], + "63": [ + "method_descriptor", + "" + ], + "64": [ + "method_descriptor", + "" + ], + "65": [ + "classmethod_descriptor", + "" + ], + "66": [ + "getset_descriptor", + "" + ], + "67": [ + "method_descriptor", + "" + ], + "68": [ + "datetime.datetime", + "9999-12-31 23:59:59.999999" + ], + "69": [ + "getset_descriptor", + "" + ], + "70": [ + "datetime.datetime", + "0001-01-01 00:00:00" + ], + "71": [ + "getset_descriptor", + "" + ], + "72": [ + "classmethod_descriptor", + "" + ], + "73": [ + "method_descriptor", + "" + ], + "74": [ + "datetime.timedelta", + "0:00:00.000001" + ], + "75": [ + "getset_descriptor", + "" + ], + "76": [ + "classmethod_descriptor", + "" + ], + "77": [ + "method_descriptor", + "" + ], + "78": [ + "method_descriptor", + "" + ], + "79": [ + "method_descriptor", + "" + ], + "80": [ + "getset_descriptor", + "" + ], + "81": [ + "method_descriptor", + "" + ], + "82": [ + "classmethod_descriptor", + "" + ], + "83": [ + "classmethod_descriptor", + "" + ], + "84": [ + "method_descriptor", + "" + ], + "85": [ + "method_descriptor", + "" + ], + "86": [ + "CLASS", + "JSONDecoder", + [], + [ + "__init__", + [ + "REF", + 87 + ] + ], + [ + "decode", + [ + "REF", + 88 + ] + ], + [ + "raw_decode", + [ + "REF", + 89 + ] + ] + ], + "87": [ + "FUNCTION", + "__init__(self, encoding, object_hook, parse_float, parse_int, parse_constant, strict, object_pairs_hook)", + null + ], + "88": [ + "FUNCTION", + "decode(self, s, _w)", + null + ], + "89": [ + "FUNCTION", + "raw_decode(self, s, idx)", + null + ], + "90": [ + "builtin_function_or_method", + "" + ], + "91": [ + "builtin_function_or_method", + "" + ], + "92": [ + "builtin_function_or_method", + "" + ], + "93": [ + "builtin_function_or_method", + "" + ], + "94": [ + "builtin_function_or_method", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "OrderedDict", + "__package__", + "datetime", + "JSONDecoder", + "pi", + "cos", + "sqrt", + "atan2", + "sin", + "radians" + ], + "stdout": "", + "exception_msg": "RuntimeError: cannot unmarshal code objects in restricted execution mode", + "func_name": "", + "stack_to_render": [], + "globals": { + "cos": [ + "REF", + 90 + ], + "pi": 3.141592653589793, + "OrderedDict": [ + "REF", + 1 + ], + "JSONDecoder": [ + "REF", + 86 + ], + "sqrt": [ + "REF", + 91 + ], + "datetime": [ + "REF", + 43 + ], + "atan2": [ + "REF", + 92 + ], + "__package__": null, + "sin": [ + "REF", + 93 + ], + "radians": [ + "REF", + 94 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "ABCMeta", + [ + "__abstractmethods__", + [ + "REF", + 2 + ] + ], + [ + "__delitem__", + [ + "REF", + 3 + ] + ], + [ + "__eq__", + [ + "REF", + 4 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "__iter__", + [ + "REF", + 6 + ] + ], + [ + "__ne__", + [ + "REF", + 7 + ] + ], + [ + "__reduce__", + [ + "REF", + 8 + ] + ], + [ + "__repr__", + [ + "REF", + 9 + ] + ], + [ + "__reversed__", + [ + "REF", + 10 + ] + ], + [ + "__setitem__", + [ + "REF", + 11 + ] + ], + [ + "_abc_cache", + [ + "REF", + 12 + ] + ], + [ + "_abc_negative_cache", + [ + "REF", + 17 + ] + ], + [ + "_abc_negative_cache_version", + 10 + ], + [ + "_abc_registry", + [ + "REF", + 22 + ] + ], + [ + "clear", + [ + "REF", + 27 + ] + ], + [ + "copy", + [ + "REF", + 28 + ] + ], + [ + "fromkeys", + [ + "REF", + 29 + ] + ], + [ + "items", + [ + "REF", + 30 + ] + ], + [ + "iteritems", + [ + "REF", + 31 + ] + ], + [ + "iterkeys", + [ + "REF", + 32 + ] + ], + [ + "itervalues", + [ + "REF", + 33 + ] + ], + [ + "keys", + [ + "REF", + 34 + ] + ], + [ + "pop", + [ + "REF", + 35 + ] + ], + [ + "popitem", + [ + "REF", + 36 + ] + ], + [ + "setdefault", + [ + "REF", + 37 + ] + ], + [ + "update", + [ + "REF", + 38 + ] + ], + [ + "values", + [ + "REF", + 39 + ] + ], + [ + "viewitems", + [ + "REF", + 40 + ] + ], + [ + "viewkeys", + [ + "REF", + 41 + ] + ], + [ + "viewvalues", + [ + "REF", + 42 + ] + ] + ], + "2": [ + "frozenset", + "frozenset([])" + ], + "3": [ + "FUNCTION", + "__delitem__(self, key, PREV, NEXT, dict_delitem)", + null + ], + "4": [ + "FUNCTION", + "__eq__(self, other)", + null + ], + "5": [ + "FUNCTION", + "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "6": [ + "FUNCTION", + "__iter__(self, NEXT, KEY)", + null + ], + "7": [ + "FUNCTION", + "__ne__(self, other)", + null + ], + "8": [ + "FUNCTION", + "__reduce__(self)", + null + ], + "9": [ + "FUNCTION", + "__repr__(self)", + null + ], + "10": [ + "FUNCTION", + "__reversed__(self, PREV, KEY)", + null + ], + "11": [ + "FUNCTION", + "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", + null + ], + "12": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 13 + ] + ], + [ + "_pending_removals", + [ + "REF", + 14 + ] + ], + [ + "_remove", + [ + "REF", + 15 + ] + ], + [ + "data", + [ + "REF", + 16 + ] + ] + ], + "13": [ + "SET" + ], + "14": [ + "LIST" + ], + "15": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "16": [ + "SET" + ], + "17": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 18 + ] + ], + [ + "_pending_removals", + [ + "REF", + 19 + ] + ], + [ + "_remove", + [ + "REF", + 20 + ] + ], + [ + "data", + [ + "REF", + 21 + ] + ] + ], + "18": [ + "SET" + ], + "19": [ + "LIST" + ], + "20": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "21": [ + "SET" + ], + "22": [ + "INSTANCE", + "WeakSet", + [ + "_iterating", + [ + "REF", + 23 + ] + ], + [ + "_pending_removals", + [ + "REF", + 24 + ] + ], + [ + "_remove", + [ + "REF", + 25 + ] + ], + [ + "data", + [ + "REF", + 26 + ] + ] + ], + "23": [ + "SET" + ], + "24": [ + "LIST" + ], + "25": [ + "FUNCTION", + "_remove(item, selfref)", + null + ], + "26": [ + "SET" + ], + "27": [ + "FUNCTION", + "clear(self)", + null + ], + "28": [ + "FUNCTION", + "copy(self)", + null + ], + "29": [ + "classmethod", + "" + ], + "30": [ + "FUNCTION", + "items(self)", + null + ], + "31": [ + "FUNCTION", + "iteritems(self)", + null + ], + "32": [ + "FUNCTION", + "iterkeys(self)", + null + ], + "33": [ + "FUNCTION", + "itervalues(self)", + null + ], + "34": [ + "FUNCTION", + "keys(self)", + null + ], + "35": [ + "FUNCTION", + "pop(self, key, default)", + null + ], + "36": [ + "FUNCTION", + "popitem(self, last)", + null + ], + "37": [ + "FUNCTION", + "setdefault(self, key, default)", + null + ], + "38": [ + "FUNCTION", + "update(*a, *r, *g, *s, **k, **w, **d, **s)", + null + ], + "39": [ + "FUNCTION", + "values(self)", + null + ], + "40": [ + "FUNCTION", + "viewitems(self)", + null + ], + "41": [ + "FUNCTION", + "viewkeys(self)", + null + ], + "42": [ + "FUNCTION", + "viewvalues(self)", + null + ], + "43": [ + "CLASS", + "datetime", + [ + "date" + ], + [ + "__add__", + [ + "REF", + 44 + ] + ], + [ + "__eq__", + [ + "REF", + 45 + ] + ], + [ + "__ge__", + [ + "REF", + 46 + ] + ], + [ + "__getattribute__", + [ + "REF", + 47 + ] + ], + [ + "__gt__", + [ + "REF", + 48 + ] + ], + [ + "__hash__", + [ + "REF", + 49 + ] + ], + [ + "__le__", + [ + "REF", + 50 + ] + ], + [ + "__lt__", + [ + "REF", + 51 + ] + ], + [ + "__ne__", + [ + "REF", + 52 + ] + ], + [ + "__new__", + [ + "REF", + 53 + ] + ], + [ + "__radd__", + [ + "REF", + 54 + ] + ], + [ + "__reduce__", + [ + "REF", + 55 + ] + ], + [ + "__repr__", + [ + "REF", + 56 + ] + ], + [ + "__rsub__", + [ + "REF", + 57 + ] + ], + [ + "__str__", + [ + "REF", + 58 + ] + ], + [ + "__sub__", + [ + "REF", + 59 + ] + ], + [ + "astimezone", + [ + "REF", + 60 + ] + ], + [ + "combine", + [ + "REF", + 61 + ] + ], + [ + "ctime", + [ + "REF", + 62 + ] + ], + [ + "date", + [ + "REF", + 63 + ] + ], + [ + "dst", + [ + "REF", + 64 + ] + ], + [ + "fromtimestamp", + [ + "REF", + 65 + ] + ], + [ + "hour", + [ + "REF", + 66 + ] + ], + [ + "isoformat", + [ + "REF", + 67 + ] + ], + [ + "max", + [ + "REF", + 68 + ] + ], + [ + "microsecond", + [ + "REF", + 69 + ] + ], + [ + "min", + [ + "REF", + 70 + ] + ], + [ + "minute", + [ + "REF", + 71 + ] + ], + [ + "now", + [ + "REF", + 72 + ] + ], + [ + "replace", + [ + "REF", + 73 + ] + ], + [ + "resolution", + [ + "REF", + 74 + ] + ], + [ + "second", + [ + "REF", + 75 + ] + ], + [ + "strptime", + [ + "REF", + 76 + ] + ], + [ + "time", + [ + "REF", + 77 + ] + ], + [ + "timetuple", + [ + "REF", + 78 + ] + ], + [ + "timetz", + [ + "REF", + 79 + ] + ], + [ + "tzinfo", + [ + "REF", + 80 + ] + ], + [ + "tzname", + [ + "REF", + 81 + ] + ], + [ + "utcfromtimestamp", + [ + "REF", + 82 + ] + ], + [ + "utcnow", + [ + "REF", + 83 + ] + ], + [ + "utcoffset", + [ + "REF", + 84 + ] + ], + [ + "utctimetuple", + [ + "REF", + 85 + ] + ] + ], + "44": [ + "wrapper_descriptor", + "" + ], + "45": [ + "wrapper_descriptor", + "" + ], + "46": [ + "wrapper_descriptor", + "" + ], + "47": [ + "wrapper_descriptor", + "" + ], + "48": [ + "wrapper_descriptor", + "" + ], + "49": [ + "wrapper_descriptor", + "" + ], + "50": [ + "wrapper_descriptor", + "" + ], + "51": [ + "wrapper_descriptor", + "" + ], + "52": [ + "wrapper_descriptor", + "" + ], + "53": [ + "builtin_function_or_method", + "" + ], + "54": [ + "wrapper_descriptor", + "" + ], + "55": [ + "method_descriptor", + "" + ], + "56": [ + "wrapper_descriptor", + "" + ], + "57": [ + "wrapper_descriptor", + "" + ], + "58": [ + "wrapper_descriptor", + "" + ], + "59": [ + "wrapper_descriptor", + "" + ], + "60": [ + "method_descriptor", + "" + ], + "61": [ + "classmethod_descriptor", + "" + ], + "62": [ + "method_descriptor", + "" + ], + "63": [ + "method_descriptor", + "" + ], + "64": [ + "method_descriptor", + "" + ], + "65": [ + "classmethod_descriptor", + "" + ], + "66": [ + "getset_descriptor", + "" + ], + "67": [ + "method_descriptor", + "" + ], + "68": [ + "datetime.datetime", + "9999-12-31 23:59:59.999999" + ], + "69": [ + "getset_descriptor", + "" + ], + "70": [ + "datetime.datetime", + "0001-01-01 00:00:00" + ], + "71": [ + "getset_descriptor", + "" + ], + "72": [ + "classmethod_descriptor", + "" + ], + "73": [ + "method_descriptor", + "" + ], + "74": [ + "datetime.timedelta", + "0:00:00.000001" + ], + "75": [ + "getset_descriptor", + "" + ], + "76": [ + "classmethod_descriptor", + "" + ], + "77": [ + "method_descriptor", + "" + ], + "78": [ + "method_descriptor", + "" + ], + "79": [ + "method_descriptor", + "" + ], + "80": [ + "getset_descriptor", + "" + ], + "81": [ + "method_descriptor", + "" + ], + "82": [ + "classmethod_descriptor", + "" + ], + "83": [ + "classmethod_descriptor", + "" + ], + "84": [ + "method_descriptor", + "" + ], + "85": [ + "method_descriptor", + "" + ], + "86": [ + "CLASS", + "JSONDecoder", + [], + [ + "__init__", + [ + "REF", + 87 + ] + ], + [ + "decode", + [ + "REF", + 88 + ] + ], + [ + "raw_decode", + [ + "REF", + 89 + ] + ] + ], + "87": [ + "FUNCTION", + "__init__(self, encoding, object_hook, parse_float, parse_int, parse_constant, strict, object_pairs_hook)", + null + ], + "88": [ + "FUNCTION", + "decode(self, s, _w)", + null + ], + "89": [ + "FUNCTION", + "raw_decode(self, s, idx)", + null + ], + "90": [ + "builtin_function_or_method", + "" + ], + "91": [ + "builtin_function_or_method", + "" + ], + "92": [ + "builtin_function_or_method", + "" + ], + "93": [ + "builtin_function_or_method", + "" + ], + "94": [ + "builtin_function_or_method", + "" + ] + }, + "line": 6, + "event": "exception" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/john-import-test.txt b/PyTutorGAE/tests/backend-tests/john-import-test.txt new file mode 100644 index 000000000..86746d336 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/john-import-test.txt @@ -0,0 +1,21 @@ +from collections import OrderedDict +from datetime import datetime +from json import JSONDecoder +from math import pi +from math import sin, cos, atan2, radians, sqrt +from random import randint +import code +import doctest +import functools +import inspect +import io +import math +import operator as op +import os +import random +import re +import signal +import string +import sys +import unittest + From f9792b856dca08b5d0b21cbc6dd757f7a8b6bdb1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 21:16:59 -0700 Subject: [PATCH 153/502] test change --- .../backend-tests/john-import-test.golden | 5572 +---------------- .../tests/backend-tests/john-import-test.txt | 26 +- 2 files changed, 117 insertions(+), 5481 deletions(-) diff --git a/PyTutorGAE/tests/backend-tests/john-import-test.golden b/PyTutorGAE/tests/backend-tests/john-import-test.golden index 642221fcd..9483d42d3 100644 --- a/PyTutorGAE/tests/backend-tests/john-import-test.golden +++ b/PyTutorGAE/tests/backend-tests/john-import-test.golden @@ -1,5 +1,5 @@ { - "code": "from collections import OrderedDict\nfrom datetime import datetime\nfrom json import JSONDecoder\nfrom math import pi\nfrom math import sin, cos, atan2, radians, sqrt\nfrom random import randint\nimport code\nimport doctest\nimport functools\nimport inspect\nimport io\nimport math\nimport operator as op\nimport os\nimport random\nimport re\nimport signal\nimport string\nimport sys\nimport unittest\n\n", + "code": "import math\nimport operator\nimport string\nimport collections\nimport re\nimport json\n\n# these don't seem allowed by bdb in Python 2.6, so punt for now\n#import random\n#import datetime\n#import functools\n", "trace": [ { "ordered_globals": [], @@ -13,14 +13,14 @@ }, { "ordered_globals": [ - "OrderedDict", + "math", "__package__" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "OrderedDict": [ + "math": [ "REF", 1 ], @@ -28,481 +28,8 @@ }, "heap": { "1": [ - "INSTANCE", - "ABCMeta", - [ - "__abstractmethods__", - [ - "REF", - 2 - ] - ], - [ - "__delitem__", - [ - "REF", - 3 - ] - ], - [ - "__eq__", - [ - "REF", - 4 - ] - ], - [ - "__init__", - [ - "REF", - 5 - ] - ], - [ - "__iter__", - [ - "REF", - 6 - ] - ], - [ - "__ne__", - [ - "REF", - 7 - ] - ], - [ - "__reduce__", - [ - "REF", - 8 - ] - ], - [ - "__repr__", - [ - "REF", - 9 - ] - ], - [ - "__reversed__", - [ - "REF", - 10 - ] - ], - [ - "__setitem__", - [ - "REF", - 11 - ] - ], - [ - "_abc_cache", - [ - "REF", - 12 - ] - ], - [ - "_abc_negative_cache", - [ - "REF", - 17 - ] - ], - [ - "_abc_negative_cache_version", - 10 - ], - [ - "_abc_registry", - [ - "REF", - 22 - ] - ], - [ - "clear", - [ - "REF", - 27 - ] - ], - [ - "copy", - [ - "REF", - 28 - ] - ], - [ - "fromkeys", - [ - "REF", - 29 - ] - ], - [ - "items", - [ - "REF", - 30 - ] - ], - [ - "iteritems", - [ - "REF", - 31 - ] - ], - [ - "iterkeys", - [ - "REF", - 32 - ] - ], - [ - "itervalues", - [ - "REF", - 33 - ] - ], - [ - "keys", - [ - "REF", - 34 - ] - ], - [ - "pop", - [ - "REF", - 35 - ] - ], - [ - "popitem", - [ - "REF", - 36 - ] - ], - [ - "setdefault", - [ - "REF", - 37 - ] - ], - [ - "update", - [ - "REF", - 38 - ] - ], - [ - "values", - [ - "REF", - 39 - ] - ], - [ - "viewitems", - [ - "REF", - 40 - ] - ], - [ - "viewkeys", - [ - "REF", - 41 - ] - ], - [ - "viewvalues", - [ - "REF", - 42 - ] - ] - ], - "2": [ - "frozenset", - "frozenset([])" - ], - "3": [ - "FUNCTION", - "__delitem__(self, key, PREV, NEXT, dict_delitem)", - null - ], - "4": [ - "FUNCTION", - "__eq__(self, other)", - null - ], - "5": [ - "FUNCTION", - "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "6": [ - "FUNCTION", - "__iter__(self, NEXT, KEY)", - null - ], - "7": [ - "FUNCTION", - "__ne__(self, other)", - null - ], - "8": [ - "FUNCTION", - "__reduce__(self)", - null - ], - "9": [ - "FUNCTION", - "__repr__(self)", - null - ], - "10": [ - "FUNCTION", - "__reversed__(self, PREV, KEY)", - null - ], - "11": [ - "FUNCTION", - "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", - null - ], - "12": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 13 - ] - ], - [ - "_pending_removals", - [ - "REF", - 14 - ] - ], - [ - "_remove", - [ - "REF", - 15 - ] - ], - [ - "data", - [ - "REF", - 16 - ] - ] - ], - "13": [ - "SET" - ], - "14": [ - "LIST" - ], - "15": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "16": [ - "SET" - ], - "17": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 18 - ] - ], - [ - "_pending_removals", - [ - "REF", - 19 - ] - ], - [ - "_remove", - [ - "REF", - 20 - ] - ], - [ - "data", - [ - "REF", - 21 - ] - ] - ], - "18": [ - "SET" - ], - "19": [ - "LIST" - ], - "20": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "21": [ - "SET" - ], - "22": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 23 - ] - ], - [ - "_pending_removals", - [ - "REF", - 24 - ] - ], - [ - "_remove", - [ - "REF", - 25 - ] - ], - [ - "data", - [ - "REF", - 26 - ] - ] - ], - "23": [ - "SET" - ], - "24": [ - "LIST" - ], - "25": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "26": [ - "SET" - ], - "27": [ - "FUNCTION", - "clear(self)", - null - ], - "28": [ - "FUNCTION", - "copy(self)", - null - ], - "29": [ - "classmethod", - "" - ], - "30": [ - "FUNCTION", - "items(self)", - null - ], - "31": [ - "FUNCTION", - "iteritems(self)", - null - ], - "32": [ - "FUNCTION", - "iterkeys(self)", - null - ], - "33": [ - "FUNCTION", - "itervalues(self)", - null - ], - "34": [ - "FUNCTION", - "keys(self)", - null - ], - "35": [ - "FUNCTION", - "pop(self, key, default)", - null - ], - "36": [ - "FUNCTION", - "popitem(self, last)", - null - ], - "37": [ - "FUNCTION", - "setdefault(self, key, default)", - null - ], - "38": [ - "FUNCTION", - "update(*a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "39": [ - "FUNCTION", - "values(self)", - null - ], - "40": [ - "FUNCTION", - "viewitems(self)", - null - ], - "41": [ - "FUNCTION", - "viewkeys(self)", - null - ], - "42": [ - "FUNCTION", - "viewvalues(self)", - null + "module", + "" ] }, "line": 2, @@ -510,19 +37,19 @@ }, { "ordered_globals": [ - "OrderedDict", + "math", "__package__", - "datetime" + "operator" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "datetime": [ + "operator": [ "REF", - 43 + 2 ], - "OrderedDict": [ + "math": [ "REF", 1 ], @@ -530,950 +57,12 @@ }, "heap": { "1": [ - "INSTANCE", - "ABCMeta", - [ - "__abstractmethods__", - [ - "REF", - 2 - ] - ], - [ - "__delitem__", - [ - "REF", - 3 - ] - ], - [ - "__eq__", - [ - "REF", - 4 - ] - ], - [ - "__init__", - [ - "REF", - 5 - ] - ], - [ - "__iter__", - [ - "REF", - 6 - ] - ], - [ - "__ne__", - [ - "REF", - 7 - ] - ], - [ - "__reduce__", - [ - "REF", - 8 - ] - ], - [ - "__repr__", - [ - "REF", - 9 - ] - ], - [ - "__reversed__", - [ - "REF", - 10 - ] - ], - [ - "__setitem__", - [ - "REF", - 11 - ] - ], - [ - "_abc_cache", - [ - "REF", - 12 - ] - ], - [ - "_abc_negative_cache", - [ - "REF", - 17 - ] - ], - [ - "_abc_negative_cache_version", - 10 - ], - [ - "_abc_registry", - [ - "REF", - 22 - ] - ], - [ - "clear", - [ - "REF", - 27 - ] - ], - [ - "copy", - [ - "REF", - 28 - ] - ], - [ - "fromkeys", - [ - "REF", - 29 - ] - ], - [ - "items", - [ - "REF", - 30 - ] - ], - [ - "iteritems", - [ - "REF", - 31 - ] - ], - [ - "iterkeys", - [ - "REF", - 32 - ] - ], - [ - "itervalues", - [ - "REF", - 33 - ] - ], - [ - "keys", - [ - "REF", - 34 - ] - ], - [ - "pop", - [ - "REF", - 35 - ] - ], - [ - "popitem", - [ - "REF", - 36 - ] - ], - [ - "setdefault", - [ - "REF", - 37 - ] - ], - [ - "update", - [ - "REF", - 38 - ] - ], - [ - "values", - [ - "REF", - 39 - ] - ], - [ - "viewitems", - [ - "REF", - 40 - ] - ], - [ - "viewkeys", - [ - "REF", - 41 - ] - ], - [ - "viewvalues", - [ - "REF", - 42 - ] - ] + "module", + "" ], "2": [ - "frozenset", - "frozenset([])" - ], - "3": [ - "FUNCTION", - "__delitem__(self, key, PREV, NEXT, dict_delitem)", - null - ], - "4": [ - "FUNCTION", - "__eq__(self, other)", - null - ], - "5": [ - "FUNCTION", - "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "6": [ - "FUNCTION", - "__iter__(self, NEXT, KEY)", - null - ], - "7": [ - "FUNCTION", - "__ne__(self, other)", - null - ], - "8": [ - "FUNCTION", - "__reduce__(self)", - null - ], - "9": [ - "FUNCTION", - "__repr__(self)", - null - ], - "10": [ - "FUNCTION", - "__reversed__(self, PREV, KEY)", - null - ], - "11": [ - "FUNCTION", - "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", - null - ], - "12": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 13 - ] - ], - [ - "_pending_removals", - [ - "REF", - 14 - ] - ], - [ - "_remove", - [ - "REF", - 15 - ] - ], - [ - "data", - [ - "REF", - 16 - ] - ] - ], - "13": [ - "SET" - ], - "14": [ - "LIST" - ], - "15": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "16": [ - "SET" - ], - "17": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 18 - ] - ], - [ - "_pending_removals", - [ - "REF", - 19 - ] - ], - [ - "_remove", - [ - "REF", - 20 - ] - ], - [ - "data", - [ - "REF", - 21 - ] - ] - ], - "18": [ - "SET" - ], - "19": [ - "LIST" - ], - "20": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "21": [ - "SET" - ], - "22": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 23 - ] - ], - [ - "_pending_removals", - [ - "REF", - 24 - ] - ], - [ - "_remove", - [ - "REF", - 25 - ] - ], - [ - "data", - [ - "REF", - 26 - ] - ] - ], - "23": [ - "SET" - ], - "24": [ - "LIST" - ], - "25": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "26": [ - "SET" - ], - "27": [ - "FUNCTION", - "clear(self)", - null - ], - "28": [ - "FUNCTION", - "copy(self)", - null - ], - "29": [ - "classmethod", - "" - ], - "30": [ - "FUNCTION", - "items(self)", - null - ], - "31": [ - "FUNCTION", - "iteritems(self)", - null - ], - "32": [ - "FUNCTION", - "iterkeys(self)", - null - ], - "33": [ - "FUNCTION", - "itervalues(self)", - null - ], - "34": [ - "FUNCTION", - "keys(self)", - null - ], - "35": [ - "FUNCTION", - "pop(self, key, default)", - null - ], - "36": [ - "FUNCTION", - "popitem(self, last)", - null - ], - "37": [ - "FUNCTION", - "setdefault(self, key, default)", - null - ], - "38": [ - "FUNCTION", - "update(*a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "39": [ - "FUNCTION", - "values(self)", - null - ], - "40": [ - "FUNCTION", - "viewitems(self)", - null - ], - "41": [ - "FUNCTION", - "viewkeys(self)", - null - ], - "42": [ - "FUNCTION", - "viewvalues(self)", - null - ], - "43": [ - "CLASS", - "datetime", - [ - "date" - ], - [ - "__add__", - [ - "REF", - 44 - ] - ], - [ - "__eq__", - [ - "REF", - 45 - ] - ], - [ - "__ge__", - [ - "REF", - 46 - ] - ], - [ - "__getattribute__", - [ - "REF", - 47 - ] - ], - [ - "__gt__", - [ - "REF", - 48 - ] - ], - [ - "__hash__", - [ - "REF", - 49 - ] - ], - [ - "__le__", - [ - "REF", - 50 - ] - ], - [ - "__lt__", - [ - "REF", - 51 - ] - ], - [ - "__ne__", - [ - "REF", - 52 - ] - ], - [ - "__new__", - [ - "REF", - 53 - ] - ], - [ - "__radd__", - [ - "REF", - 54 - ] - ], - [ - "__reduce__", - [ - "REF", - 55 - ] - ], - [ - "__repr__", - [ - "REF", - 56 - ] - ], - [ - "__rsub__", - [ - "REF", - 57 - ] - ], - [ - "__str__", - [ - "REF", - 58 - ] - ], - [ - "__sub__", - [ - "REF", - 59 - ] - ], - [ - "astimezone", - [ - "REF", - 60 - ] - ], - [ - "combine", - [ - "REF", - 61 - ] - ], - [ - "ctime", - [ - "REF", - 62 - ] - ], - [ - "date", - [ - "REF", - 63 - ] - ], - [ - "dst", - [ - "REF", - 64 - ] - ], - [ - "fromtimestamp", - [ - "REF", - 65 - ] - ], - [ - "hour", - [ - "REF", - 66 - ] - ], - [ - "isoformat", - [ - "REF", - 67 - ] - ], - [ - "max", - [ - "REF", - 68 - ] - ], - [ - "microsecond", - [ - "REF", - 69 - ] - ], - [ - "min", - [ - "REF", - 70 - ] - ], - [ - "minute", - [ - "REF", - 71 - ] - ], - [ - "now", - [ - "REF", - 72 - ] - ], - [ - "replace", - [ - "REF", - 73 - ] - ], - [ - "resolution", - [ - "REF", - 74 - ] - ], - [ - "second", - [ - "REF", - 75 - ] - ], - [ - "strptime", - [ - "REF", - 76 - ] - ], - [ - "time", - [ - "REF", - 77 - ] - ], - [ - "timetuple", - [ - "REF", - 78 - ] - ], - [ - "timetz", - [ - "REF", - 79 - ] - ], - [ - "tzinfo", - [ - "REF", - 80 - ] - ], - [ - "tzname", - [ - "REF", - 81 - ] - ], - [ - "utcfromtimestamp", - [ - "REF", - 82 - ] - ], - [ - "utcnow", - [ - "REF", - 83 - ] - ], - [ - "utcoffset", - [ - "REF", - 84 - ] - ], - [ - "utctimetuple", - [ - "REF", - 85 - ] - ] - ], - "44": [ - "wrapper_descriptor", - "" - ], - "45": [ - "wrapper_descriptor", - "" - ], - "46": [ - "wrapper_descriptor", - "" - ], - "47": [ - "wrapper_descriptor", - "" - ], - "48": [ - "wrapper_descriptor", - "" - ], - "49": [ - "wrapper_descriptor", - "" - ], - "50": [ - "wrapper_descriptor", - "" - ], - "51": [ - "wrapper_descriptor", - "" - ], - "52": [ - "wrapper_descriptor", - "" - ], - "53": [ - "builtin_function_or_method", - "" - ], - "54": [ - "wrapper_descriptor", - "" - ], - "55": [ - "method_descriptor", - "" - ], - "56": [ - "wrapper_descriptor", - "" - ], - "57": [ - "wrapper_descriptor", - "" - ], - "58": [ - "wrapper_descriptor", - "" - ], - "59": [ - "wrapper_descriptor", - "" - ], - "60": [ - "method_descriptor", - "" - ], - "61": [ - "classmethod_descriptor", - "" - ], - "62": [ - "method_descriptor", - "" - ], - "63": [ - "method_descriptor", - "" - ], - "64": [ - "method_descriptor", - "" - ], - "65": [ - "classmethod_descriptor", - "" - ], - "66": [ - "getset_descriptor", - "" - ], - "67": [ - "method_descriptor", - "" - ], - "68": [ - "datetime.datetime", - "9999-12-31 23:59:59.999999" - ], - "69": [ - "getset_descriptor", - "" - ], - "70": [ - "datetime.datetime", - "0001-01-01 00:00:00" - ], - "71": [ - "getset_descriptor", - "" - ], - "72": [ - "classmethod_descriptor", - "" - ], - "73": [ - "method_descriptor", - "" - ], - "74": [ - "datetime.timedelta", - "0:00:00.000001" - ], - "75": [ - "getset_descriptor", - "" - ], - "76": [ - "classmethod_descriptor", - "" - ], - "77": [ - "method_descriptor", - "" - ], - "78": [ - "method_descriptor", - "" - ], - "79": [ - "method_descriptor", - "" - ], - "80": [ - "getset_descriptor", - "" - ], - "81": [ - "method_descriptor", - "" - ], - "82": [ - "classmethod_descriptor", - "" - ], - "83": [ - "classmethod_descriptor", - "" - ], - "84": [ - "method_descriptor", - "" - ], - "85": [ - "method_descriptor", - "" + "module", + "" ] }, "line": 3, @@ -1481,1016 +70,41 @@ }, { "ordered_globals": [ - "OrderedDict", + "math", "__package__", - "datetime", - "JSONDecoder" + "operator", + "string" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "datetime": [ + "operator": [ "REF", - 43 + 2 ], - "OrderedDict": [ + "string": [ "REF", - 1 + 3 ], - "JSONDecoder": [ + "math": [ "REF", - 86 + 1 ], "__package__": null }, "heap": { "1": [ - "INSTANCE", - "ABCMeta", - [ - "__abstractmethods__", - [ - "REF", - 2 - ] - ], - [ - "__delitem__", - [ - "REF", - 3 - ] - ], - [ - "__eq__", - [ - "REF", - 4 - ] - ], - [ - "__init__", - [ - "REF", - 5 - ] - ], - [ - "__iter__", - [ - "REF", - 6 - ] - ], - [ - "__ne__", - [ - "REF", - 7 - ] - ], - [ - "__reduce__", - [ - "REF", - 8 - ] - ], - [ - "__repr__", - [ - "REF", - 9 - ] - ], - [ - "__reversed__", - [ - "REF", - 10 - ] - ], - [ - "__setitem__", - [ - "REF", - 11 - ] - ], - [ - "_abc_cache", - [ - "REF", - 12 - ] - ], - [ - "_abc_negative_cache", - [ - "REF", - 17 - ] - ], - [ - "_abc_negative_cache_version", - 10 - ], - [ - "_abc_registry", - [ - "REF", - 22 - ] - ], - [ - "clear", - [ - "REF", - 27 - ] - ], - [ - "copy", - [ - "REF", - 28 - ] - ], - [ - "fromkeys", - [ - "REF", - 29 - ] - ], - [ - "items", - [ - "REF", - 30 - ] - ], - [ - "iteritems", - [ - "REF", - 31 - ] - ], - [ - "iterkeys", - [ - "REF", - 32 - ] - ], - [ - "itervalues", - [ - "REF", - 33 - ] - ], - [ - "keys", - [ - "REF", - 34 - ] - ], - [ - "pop", - [ - "REF", - 35 - ] - ], - [ - "popitem", - [ - "REF", - 36 - ] - ], - [ - "setdefault", - [ - "REF", - 37 - ] - ], - [ - "update", - [ - "REF", - 38 - ] - ], - [ - "values", - [ - "REF", - 39 - ] - ], - [ - "viewitems", - [ - "REF", - 40 - ] - ], - [ - "viewkeys", - [ - "REF", - 41 - ] - ], - [ - "viewvalues", - [ - "REF", - 42 - ] - ] + "module", + "" ], "2": [ - "frozenset", - "frozenset([])" + "module", + "" ], "3": [ - "FUNCTION", - "__delitem__(self, key, PREV, NEXT, dict_delitem)", - null - ], - "4": [ - "FUNCTION", - "__eq__(self, other)", - null - ], - "5": [ - "FUNCTION", - "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "6": [ - "FUNCTION", - "__iter__(self, NEXT, KEY)", - null - ], - "7": [ - "FUNCTION", - "__ne__(self, other)", - null - ], - "8": [ - "FUNCTION", - "__reduce__(self)", - null - ], - "9": [ - "FUNCTION", - "__repr__(self)", - null - ], - "10": [ - "FUNCTION", - "__reversed__(self, PREV, KEY)", - null - ], - "11": [ - "FUNCTION", - "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", - null - ], - "12": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 13 - ] - ], - [ - "_pending_removals", - [ - "REF", - 14 - ] - ], - [ - "_remove", - [ - "REF", - 15 - ] - ], - [ - "data", - [ - "REF", - 16 - ] - ] - ], - "13": [ - "SET" - ], - "14": [ - "LIST" - ], - "15": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "16": [ - "SET" - ], - "17": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 18 - ] - ], - [ - "_pending_removals", - [ - "REF", - 19 - ] - ], - [ - "_remove", - [ - "REF", - 20 - ] - ], - [ - "data", - [ - "REF", - 21 - ] - ] - ], - "18": [ - "SET" - ], - "19": [ - "LIST" - ], - "20": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "21": [ - "SET" - ], - "22": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 23 - ] - ], - [ - "_pending_removals", - [ - "REF", - 24 - ] - ], - [ - "_remove", - [ - "REF", - 25 - ] - ], - [ - "data", - [ - "REF", - 26 - ] - ] - ], - "23": [ - "SET" - ], - "24": [ - "LIST" - ], - "25": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "26": [ - "SET" - ], - "27": [ - "FUNCTION", - "clear(self)", - null - ], - "28": [ - "FUNCTION", - "copy(self)", - null - ], - "29": [ - "classmethod", - "" - ], - "30": [ - "FUNCTION", - "items(self)", - null - ], - "31": [ - "FUNCTION", - "iteritems(self)", - null - ], - "32": [ - "FUNCTION", - "iterkeys(self)", - null - ], - "33": [ - "FUNCTION", - "itervalues(self)", - null - ], - "34": [ - "FUNCTION", - "keys(self)", - null - ], - "35": [ - "FUNCTION", - "pop(self, key, default)", - null - ], - "36": [ - "FUNCTION", - "popitem(self, last)", - null - ], - "37": [ - "FUNCTION", - "setdefault(self, key, default)", - null - ], - "38": [ - "FUNCTION", - "update(*a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "39": [ - "FUNCTION", - "values(self)", - null - ], - "40": [ - "FUNCTION", - "viewitems(self)", - null - ], - "41": [ - "FUNCTION", - "viewkeys(self)", - null - ], - "42": [ - "FUNCTION", - "viewvalues(self)", - null - ], - "43": [ - "CLASS", - "datetime", - [ - "date" - ], - [ - "__add__", - [ - "REF", - 44 - ] - ], - [ - "__eq__", - [ - "REF", - 45 - ] - ], - [ - "__ge__", - [ - "REF", - 46 - ] - ], - [ - "__getattribute__", - [ - "REF", - 47 - ] - ], - [ - "__gt__", - [ - "REF", - 48 - ] - ], - [ - "__hash__", - [ - "REF", - 49 - ] - ], - [ - "__le__", - [ - "REF", - 50 - ] - ], - [ - "__lt__", - [ - "REF", - 51 - ] - ], - [ - "__ne__", - [ - "REF", - 52 - ] - ], - [ - "__new__", - [ - "REF", - 53 - ] - ], - [ - "__radd__", - [ - "REF", - 54 - ] - ], - [ - "__reduce__", - [ - "REF", - 55 - ] - ], - [ - "__repr__", - [ - "REF", - 56 - ] - ], - [ - "__rsub__", - [ - "REF", - 57 - ] - ], - [ - "__str__", - [ - "REF", - 58 - ] - ], - [ - "__sub__", - [ - "REF", - 59 - ] - ], - [ - "astimezone", - [ - "REF", - 60 - ] - ], - [ - "combine", - [ - "REF", - 61 - ] - ], - [ - "ctime", - [ - "REF", - 62 - ] - ], - [ - "date", - [ - "REF", - 63 - ] - ], - [ - "dst", - [ - "REF", - 64 - ] - ], - [ - "fromtimestamp", - [ - "REF", - 65 - ] - ], - [ - "hour", - [ - "REF", - 66 - ] - ], - [ - "isoformat", - [ - "REF", - 67 - ] - ], - [ - "max", - [ - "REF", - 68 - ] - ], - [ - "microsecond", - [ - "REF", - 69 - ] - ], - [ - "min", - [ - "REF", - 70 - ] - ], - [ - "minute", - [ - "REF", - 71 - ] - ], - [ - "now", - [ - "REF", - 72 - ] - ], - [ - "replace", - [ - "REF", - 73 - ] - ], - [ - "resolution", - [ - "REF", - 74 - ] - ], - [ - "second", - [ - "REF", - 75 - ] - ], - [ - "strptime", - [ - "REF", - 76 - ] - ], - [ - "time", - [ - "REF", - 77 - ] - ], - [ - "timetuple", - [ - "REF", - 78 - ] - ], - [ - "timetz", - [ - "REF", - 79 - ] - ], - [ - "tzinfo", - [ - "REF", - 80 - ] - ], - [ - "tzname", - [ - "REF", - 81 - ] - ], - [ - "utcfromtimestamp", - [ - "REF", - 82 - ] - ], - [ - "utcnow", - [ - "REF", - 83 - ] - ], - [ - "utcoffset", - [ - "REF", - 84 - ] - ], - [ - "utctimetuple", - [ - "REF", - 85 - ] - ] - ], - "44": [ - "wrapper_descriptor", - "" - ], - "45": [ - "wrapper_descriptor", - "" - ], - "46": [ - "wrapper_descriptor", - "" - ], - "47": [ - "wrapper_descriptor", - "" - ], - "48": [ - "wrapper_descriptor", - "" - ], - "49": [ - "wrapper_descriptor", - "" - ], - "50": [ - "wrapper_descriptor", - "" - ], - "51": [ - "wrapper_descriptor", - "" - ], - "52": [ - "wrapper_descriptor", - "" - ], - "53": [ - "builtin_function_or_method", - "" - ], - "54": [ - "wrapper_descriptor", - "" - ], - "55": [ - "method_descriptor", - "" - ], - "56": [ - "wrapper_descriptor", - "" - ], - "57": [ - "wrapper_descriptor", - "" - ], - "58": [ - "wrapper_descriptor", - "" - ], - "59": [ - "wrapper_descriptor", - "" - ], - "60": [ - "method_descriptor", - "" - ], - "61": [ - "classmethod_descriptor", - "" - ], - "62": [ - "method_descriptor", - "" - ], - "63": [ - "method_descriptor", - "" - ], - "64": [ - "method_descriptor", - "" - ], - "65": [ - "classmethod_descriptor", - "" - ], - "66": [ - "getset_descriptor", - "" - ], - "67": [ - "method_descriptor", - "" - ], - "68": [ - "datetime.datetime", - "9999-12-31 23:59:59.999999" - ], - "69": [ - "getset_descriptor", - "" - ], - "70": [ - "datetime.datetime", - "0001-01-01 00:00:00" - ], - "71": [ - "getset_descriptor", - "" - ], - "72": [ - "classmethod_descriptor", - "" - ], - "73": [ - "method_descriptor", - "" - ], - "74": [ - "datetime.timedelta", - "0:00:00.000001" - ], - "75": [ - "getset_descriptor", - "" - ], - "76": [ - "classmethod_descriptor", - "" - ], - "77": [ - "method_descriptor", - "" - ], - "78": [ - "method_descriptor", - "" - ], - "79": [ - "method_descriptor", - "" - ], - "80": [ - "getset_descriptor", - "" - ], - "81": [ - "method_descriptor", - "" - ], - "82": [ - "classmethod_descriptor", - "" - ], - "83": [ - "classmethod_descriptor", - "" - ], - "84": [ - "method_descriptor", - "" - ], - "85": [ - "method_descriptor", - "" - ], - "86": [ - "CLASS", - "JSONDecoder", - [], - [ - "__init__", - [ - "REF", - 87 - ] - ], - [ - "decode", - [ - "REF", - 88 - ] - ], - [ - "raw_decode", - [ - "REF", - 89 - ] - ] - ], - "87": [ - "FUNCTION", - "__init__(self, encoding, object_hook, parse_float, parse_int, parse_constant, strict, object_pairs_hook)", - null - ], - "88": [ - "FUNCTION", - "decode(self, s, _w)", - null - ], - "89": [ - "FUNCTION", - "raw_decode(self, s, idx)", - null + "module", + "" ] }, "line": 4, @@ -2498,1018 +112,50 @@ }, { "ordered_globals": [ - "OrderedDict", + "math", "__package__", - "datetime", - "JSONDecoder", - "pi" + "operator", + "string", + "collections" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "datetime": [ + "operator": [ "REF", - 43 + 2 ], - "pi": 3.141592653589793, - "OrderedDict": [ + "collections": [ "REF", - 1 + 4 + ], + "string": [ + "REF", + 3 ], - "JSONDecoder": [ + "math": [ "REF", - 86 + 1 ], "__package__": null }, "heap": { "1": [ - "INSTANCE", - "ABCMeta", - [ - "__abstractmethods__", - [ - "REF", - 2 - ] - ], - [ - "__delitem__", - [ - "REF", - 3 - ] - ], - [ - "__eq__", - [ - "REF", - 4 - ] - ], - [ - "__init__", - [ - "REF", - 5 - ] - ], - [ - "__iter__", - [ - "REF", - 6 - ] - ], - [ - "__ne__", - [ - "REF", - 7 - ] - ], - [ - "__reduce__", - [ - "REF", - 8 - ] - ], - [ - "__repr__", - [ - "REF", - 9 - ] - ], - [ - "__reversed__", - [ - "REF", - 10 - ] - ], - [ - "__setitem__", - [ - "REF", - 11 - ] - ], - [ - "_abc_cache", - [ - "REF", - 12 - ] - ], - [ - "_abc_negative_cache", - [ - "REF", - 17 - ] - ], - [ - "_abc_negative_cache_version", - 10 - ], - [ - "_abc_registry", - [ - "REF", - 22 - ] - ], - [ - "clear", - [ - "REF", - 27 - ] - ], - [ - "copy", - [ - "REF", - 28 - ] - ], - [ - "fromkeys", - [ - "REF", - 29 - ] - ], - [ - "items", - [ - "REF", - 30 - ] - ], - [ - "iteritems", - [ - "REF", - 31 - ] - ], - [ - "iterkeys", - [ - "REF", - 32 - ] - ], - [ - "itervalues", - [ - "REF", - 33 - ] - ], - [ - "keys", - [ - "REF", - 34 - ] - ], - [ - "pop", - [ - "REF", - 35 - ] - ], - [ - "popitem", - [ - "REF", - 36 - ] - ], - [ - "setdefault", - [ - "REF", - 37 - ] - ], - [ - "update", - [ - "REF", - 38 - ] - ], - [ - "values", - [ - "REF", - 39 - ] - ], - [ - "viewitems", - [ - "REF", - 40 - ] - ], - [ - "viewkeys", - [ - "REF", - 41 - ] - ], - [ - "viewvalues", - [ - "REF", - 42 - ] - ] + "module", + "" ], "2": [ - "frozenset", - "frozenset([])" + "module", + "" ], "3": [ - "FUNCTION", - "__delitem__(self, key, PREV, NEXT, dict_delitem)", - null + "module", + "" ], "4": [ - "FUNCTION", - "__eq__(self, other)", - null - ], - "5": [ - "FUNCTION", - "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "6": [ - "FUNCTION", - "__iter__(self, NEXT, KEY)", - null - ], - "7": [ - "FUNCTION", - "__ne__(self, other)", - null - ], - "8": [ - "FUNCTION", - "__reduce__(self)", - null - ], - "9": [ - "FUNCTION", - "__repr__(self)", - null - ], - "10": [ - "FUNCTION", - "__reversed__(self, PREV, KEY)", - null - ], - "11": [ - "FUNCTION", - "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", - null - ], - "12": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 13 - ] - ], - [ - "_pending_removals", - [ - "REF", - 14 - ] - ], - [ - "_remove", - [ - "REF", - 15 - ] - ], - [ - "data", - [ - "REF", - 16 - ] - ] - ], - "13": [ - "SET" - ], - "14": [ - "LIST" - ], - "15": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "16": [ - "SET" - ], - "17": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 18 - ] - ], - [ - "_pending_removals", - [ - "REF", - 19 - ] - ], - [ - "_remove", - [ - "REF", - 20 - ] - ], - [ - "data", - [ - "REF", - 21 - ] - ] - ], - "18": [ - "SET" - ], - "19": [ - "LIST" - ], - "20": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "21": [ - "SET" - ], - "22": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 23 - ] - ], - [ - "_pending_removals", - [ - "REF", - 24 - ] - ], - [ - "_remove", - [ - "REF", - 25 - ] - ], - [ - "data", - [ - "REF", - 26 - ] - ] - ], - "23": [ - "SET" - ], - "24": [ - "LIST" - ], - "25": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "26": [ - "SET" - ], - "27": [ - "FUNCTION", - "clear(self)", - null - ], - "28": [ - "FUNCTION", - "copy(self)", - null - ], - "29": [ - "classmethod", - "" - ], - "30": [ - "FUNCTION", - "items(self)", - null - ], - "31": [ - "FUNCTION", - "iteritems(self)", - null - ], - "32": [ - "FUNCTION", - "iterkeys(self)", - null - ], - "33": [ - "FUNCTION", - "itervalues(self)", - null - ], - "34": [ - "FUNCTION", - "keys(self)", - null - ], - "35": [ - "FUNCTION", - "pop(self, key, default)", - null - ], - "36": [ - "FUNCTION", - "popitem(self, last)", - null - ], - "37": [ - "FUNCTION", - "setdefault(self, key, default)", - null - ], - "38": [ - "FUNCTION", - "update(*a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "39": [ - "FUNCTION", - "values(self)", - null - ], - "40": [ - "FUNCTION", - "viewitems(self)", - null - ], - "41": [ - "FUNCTION", - "viewkeys(self)", - null - ], - "42": [ - "FUNCTION", - "viewvalues(self)", - null - ], - "43": [ - "CLASS", - "datetime", - [ - "date" - ], - [ - "__add__", - [ - "REF", - 44 - ] - ], - [ - "__eq__", - [ - "REF", - 45 - ] - ], - [ - "__ge__", - [ - "REF", - 46 - ] - ], - [ - "__getattribute__", - [ - "REF", - 47 - ] - ], - [ - "__gt__", - [ - "REF", - 48 - ] - ], - [ - "__hash__", - [ - "REF", - 49 - ] - ], - [ - "__le__", - [ - "REF", - 50 - ] - ], - [ - "__lt__", - [ - "REF", - 51 - ] - ], - [ - "__ne__", - [ - "REF", - 52 - ] - ], - [ - "__new__", - [ - "REF", - 53 - ] - ], - [ - "__radd__", - [ - "REF", - 54 - ] - ], - [ - "__reduce__", - [ - "REF", - 55 - ] - ], - [ - "__repr__", - [ - "REF", - 56 - ] - ], - [ - "__rsub__", - [ - "REF", - 57 - ] - ], - [ - "__str__", - [ - "REF", - 58 - ] - ], - [ - "__sub__", - [ - "REF", - 59 - ] - ], - [ - "astimezone", - [ - "REF", - 60 - ] - ], - [ - "combine", - [ - "REF", - 61 - ] - ], - [ - "ctime", - [ - "REF", - 62 - ] - ], - [ - "date", - [ - "REF", - 63 - ] - ], - [ - "dst", - [ - "REF", - 64 - ] - ], - [ - "fromtimestamp", - [ - "REF", - 65 - ] - ], - [ - "hour", - [ - "REF", - 66 - ] - ], - [ - "isoformat", - [ - "REF", - 67 - ] - ], - [ - "max", - [ - "REF", - 68 - ] - ], - [ - "microsecond", - [ - "REF", - 69 - ] - ], - [ - "min", - [ - "REF", - 70 - ] - ], - [ - "minute", - [ - "REF", - 71 - ] - ], - [ - "now", - [ - "REF", - 72 - ] - ], - [ - "replace", - [ - "REF", - 73 - ] - ], - [ - "resolution", - [ - "REF", - 74 - ] - ], - [ - "second", - [ - "REF", - 75 - ] - ], - [ - "strptime", - [ - "REF", - 76 - ] - ], - [ - "time", - [ - "REF", - 77 - ] - ], - [ - "timetuple", - [ - "REF", - 78 - ] - ], - [ - "timetz", - [ - "REF", - 79 - ] - ], - [ - "tzinfo", - [ - "REF", - 80 - ] - ], - [ - "tzname", - [ - "REF", - 81 - ] - ], - [ - "utcfromtimestamp", - [ - "REF", - 82 - ] - ], - [ - "utcnow", - [ - "REF", - 83 - ] - ], - [ - "utcoffset", - [ - "REF", - 84 - ] - ], - [ - "utctimetuple", - [ - "REF", - 85 - ] - ] - ], - "44": [ - "wrapper_descriptor", - "" - ], - "45": [ - "wrapper_descriptor", - "" - ], - "46": [ - "wrapper_descriptor", - "" - ], - "47": [ - "wrapper_descriptor", - "" - ], - "48": [ - "wrapper_descriptor", - "" - ], - "49": [ - "wrapper_descriptor", - "" - ], - "50": [ - "wrapper_descriptor", - "" - ], - "51": [ - "wrapper_descriptor", - "" - ], - "52": [ - "wrapper_descriptor", - "" - ], - "53": [ - "builtin_function_or_method", - "" - ], - "54": [ - "wrapper_descriptor", - "" - ], - "55": [ - "method_descriptor", - "" - ], - "56": [ - "wrapper_descriptor", - "" - ], - "57": [ - "wrapper_descriptor", - "" - ], - "58": [ - "wrapper_descriptor", - "" - ], - "59": [ - "wrapper_descriptor", - "" - ], - "60": [ - "method_descriptor", - "" - ], - "61": [ - "classmethod_descriptor", - "" - ], - "62": [ - "method_descriptor", - "" - ], - "63": [ - "method_descriptor", - "" - ], - "64": [ - "method_descriptor", - "" - ], - "65": [ - "classmethod_descriptor", - "" - ], - "66": [ - "getset_descriptor", - "" - ], - "67": [ - "method_descriptor", - "" - ], - "68": [ - "datetime.datetime", - "9999-12-31 23:59:59.999999" - ], - "69": [ - "getset_descriptor", - "" - ], - "70": [ - "datetime.datetime", - "0001-01-01 00:00:00" - ], - "71": [ - "getset_descriptor", - "" - ], - "72": [ - "classmethod_descriptor", - "" - ], - "73": [ - "method_descriptor", - "" - ], - "74": [ - "datetime.timedelta", - "0:00:00.000001" - ], - "75": [ - "getset_descriptor", - "" - ], - "76": [ - "classmethod_descriptor", - "" - ], - "77": [ - "method_descriptor", - "" - ], - "78": [ - "method_descriptor", - "" - ], - "79": [ - "method_descriptor", - "" - ], - "80": [ - "getset_descriptor", - "" - ], - "81": [ - "method_descriptor", - "" - ], - "82": [ - "classmethod_descriptor", - "" - ], - "83": [ - "classmethod_descriptor", - "" - ], - "84": [ - "method_descriptor", - "" - ], - "85": [ - "method_descriptor", - "" - ], - "86": [ - "CLASS", - "JSONDecoder", - [], - [ - "__init__", - [ - "REF", - 87 - ] - ], - [ - "decode", - [ - "REF", - 88 - ] - ], - [ - "raw_decode", - [ - "REF", - 89 - ] - ] - ], - "87": [ - "FUNCTION", - "__init__(self, encoding, object_hook, parse_float, parse_int, parse_constant, strict, object_pairs_hook)", - null - ], - "88": [ - "FUNCTION", - "decode(self, s, _w)", - null - ], - "89": [ - "FUNCTION", - "raw_decode(self, s, idx)", - null + "module", + "" ] }, "line": 5, @@ -3517,1063 +163,59 @@ }, { "ordered_globals": [ - "OrderedDict", + "math", "__package__", - "datetime", - "JSONDecoder", - "pi", - "cos", - "sqrt", - "atan2", - "sin", - "radians" + "operator", + "string", + "collections", + "re" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "cos": [ - "REF", - 90 - ], - "pi": 3.141592653589793, - "OrderedDict": [ - "REF", - 1 - ], - "JSONDecoder": [ + "string": [ "REF", - 86 + 3 ], - "sqrt": [ - "REF", - 91 - ], - "datetime": [ + "__package__": null, + "re": [ "REF", - 43 + 5 ], - "atan2": [ + "collections": [ "REF", - 92 + 4 ], - "__package__": null, - "sin": [ + "operator": [ "REF", - 93 + 2 ], - "radians": [ + "math": [ "REF", - 94 + 1 ] }, "heap": { "1": [ - "INSTANCE", - "ABCMeta", - [ - "__abstractmethods__", - [ - "REF", - 2 - ] - ], - [ - "__delitem__", - [ - "REF", - 3 - ] - ], - [ - "__eq__", - [ - "REF", - 4 - ] - ], - [ - "__init__", - [ - "REF", - 5 - ] - ], - [ - "__iter__", - [ - "REF", - 6 - ] - ], - [ - "__ne__", - [ - "REF", - 7 - ] - ], - [ - "__reduce__", - [ - "REF", - 8 - ] - ], - [ - "__repr__", - [ - "REF", - 9 - ] - ], - [ - "__reversed__", - [ - "REF", - 10 - ] - ], - [ - "__setitem__", - [ - "REF", - 11 - ] - ], - [ - "_abc_cache", - [ - "REF", - 12 - ] - ], - [ - "_abc_negative_cache", - [ - "REF", - 17 - ] - ], - [ - "_abc_negative_cache_version", - 10 - ], - [ - "_abc_registry", - [ - "REF", - 22 - ] - ], - [ - "clear", - [ - "REF", - 27 - ] - ], - [ - "copy", - [ - "REF", - 28 - ] - ], - [ - "fromkeys", - [ - "REF", - 29 - ] - ], - [ - "items", - [ - "REF", - 30 - ] - ], - [ - "iteritems", - [ - "REF", - 31 - ] - ], - [ - "iterkeys", - [ - "REF", - 32 - ] - ], - [ - "itervalues", - [ - "REF", - 33 - ] - ], - [ - "keys", - [ - "REF", - 34 - ] - ], - [ - "pop", - [ - "REF", - 35 - ] - ], - [ - "popitem", - [ - "REF", - 36 - ] - ], - [ - "setdefault", - [ - "REF", - 37 - ] - ], - [ - "update", - [ - "REF", - 38 - ] - ], - [ - "values", - [ - "REF", - 39 - ] - ], - [ - "viewitems", - [ - "REF", - 40 - ] - ], - [ - "viewkeys", - [ - "REF", - 41 - ] - ], - [ - "viewvalues", - [ - "REF", - 42 - ] - ] + "module", + "" ], "2": [ - "frozenset", - "frozenset([])" + "module", + "" ], "3": [ - "FUNCTION", - "__delitem__(self, key, PREV, NEXT, dict_delitem)", - null + "module", + "" ], "4": [ - "FUNCTION", - "__eq__(self, other)", - null + "module", + "" ], "5": [ - "FUNCTION", - "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "6": [ - "FUNCTION", - "__iter__(self, NEXT, KEY)", - null - ], - "7": [ - "FUNCTION", - "__ne__(self, other)", - null - ], - "8": [ - "FUNCTION", - "__reduce__(self)", - null - ], - "9": [ - "FUNCTION", - "__repr__(self)", - null - ], - "10": [ - "FUNCTION", - "__reversed__(self, PREV, KEY)", - null - ], - "11": [ - "FUNCTION", - "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", - null - ], - "12": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 13 - ] - ], - [ - "_pending_removals", - [ - "REF", - 14 - ] - ], - [ - "_remove", - [ - "REF", - 15 - ] - ], - [ - "data", - [ - "REF", - 16 - ] - ] - ], - "13": [ - "SET" - ], - "14": [ - "LIST" - ], - "15": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "16": [ - "SET" - ], - "17": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 18 - ] - ], - [ - "_pending_removals", - [ - "REF", - 19 - ] - ], - [ - "_remove", - [ - "REF", - 20 - ] - ], - [ - "data", - [ - "REF", - 21 - ] - ] - ], - "18": [ - "SET" - ], - "19": [ - "LIST" - ], - "20": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "21": [ - "SET" - ], - "22": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 23 - ] - ], - [ - "_pending_removals", - [ - "REF", - 24 - ] - ], - [ - "_remove", - [ - "REF", - 25 - ] - ], - [ - "data", - [ - "REF", - 26 - ] - ] - ], - "23": [ - "SET" - ], - "24": [ - "LIST" - ], - "25": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "26": [ - "SET" - ], - "27": [ - "FUNCTION", - "clear(self)", - null - ], - "28": [ - "FUNCTION", - "copy(self)", - null - ], - "29": [ - "classmethod", - "" - ], - "30": [ - "FUNCTION", - "items(self)", - null - ], - "31": [ - "FUNCTION", - "iteritems(self)", - null - ], - "32": [ - "FUNCTION", - "iterkeys(self)", - null - ], - "33": [ - "FUNCTION", - "itervalues(self)", - null - ], - "34": [ - "FUNCTION", - "keys(self)", - null - ], - "35": [ - "FUNCTION", - "pop(self, key, default)", - null - ], - "36": [ - "FUNCTION", - "popitem(self, last)", - null - ], - "37": [ - "FUNCTION", - "setdefault(self, key, default)", - null - ], - "38": [ - "FUNCTION", - "update(*a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "39": [ - "FUNCTION", - "values(self)", - null - ], - "40": [ - "FUNCTION", - "viewitems(self)", - null - ], - "41": [ - "FUNCTION", - "viewkeys(self)", - null - ], - "42": [ - "FUNCTION", - "viewvalues(self)", - null - ], - "43": [ - "CLASS", - "datetime", - [ - "date" - ], - [ - "__add__", - [ - "REF", - 44 - ] - ], - [ - "__eq__", - [ - "REF", - 45 - ] - ], - [ - "__ge__", - [ - "REF", - 46 - ] - ], - [ - "__getattribute__", - [ - "REF", - 47 - ] - ], - [ - "__gt__", - [ - "REF", - 48 - ] - ], - [ - "__hash__", - [ - "REF", - 49 - ] - ], - [ - "__le__", - [ - "REF", - 50 - ] - ], - [ - "__lt__", - [ - "REF", - 51 - ] - ], - [ - "__ne__", - [ - "REF", - 52 - ] - ], - [ - "__new__", - [ - "REF", - 53 - ] - ], - [ - "__radd__", - [ - "REF", - 54 - ] - ], - [ - "__reduce__", - [ - "REF", - 55 - ] - ], - [ - "__repr__", - [ - "REF", - 56 - ] - ], - [ - "__rsub__", - [ - "REF", - 57 - ] - ], - [ - "__str__", - [ - "REF", - 58 - ] - ], - [ - "__sub__", - [ - "REF", - 59 - ] - ], - [ - "astimezone", - [ - "REF", - 60 - ] - ], - [ - "combine", - [ - "REF", - 61 - ] - ], - [ - "ctime", - [ - "REF", - 62 - ] - ], - [ - "date", - [ - "REF", - 63 - ] - ], - [ - "dst", - [ - "REF", - 64 - ] - ], - [ - "fromtimestamp", - [ - "REF", - 65 - ] - ], - [ - "hour", - [ - "REF", - 66 - ] - ], - [ - "isoformat", - [ - "REF", - 67 - ] - ], - [ - "max", - [ - "REF", - 68 - ] - ], - [ - "microsecond", - [ - "REF", - 69 - ] - ], - [ - "min", - [ - "REF", - 70 - ] - ], - [ - "minute", - [ - "REF", - 71 - ] - ], - [ - "now", - [ - "REF", - 72 - ] - ], - [ - "replace", - [ - "REF", - 73 - ] - ], - [ - "resolution", - [ - "REF", - 74 - ] - ], - [ - "second", - [ - "REF", - 75 - ] - ], - [ - "strptime", - [ - "REF", - 76 - ] - ], - [ - "time", - [ - "REF", - 77 - ] - ], - [ - "timetuple", - [ - "REF", - 78 - ] - ], - [ - "timetz", - [ - "REF", - 79 - ] - ], - [ - "tzinfo", - [ - "REF", - 80 - ] - ], - [ - "tzname", - [ - "REF", - 81 - ] - ], - [ - "utcfromtimestamp", - [ - "REF", - 82 - ] - ], - [ - "utcnow", - [ - "REF", - 83 - ] - ], - [ - "utcoffset", - [ - "REF", - 84 - ] - ], - [ - "utctimetuple", - [ - "REF", - 85 - ] - ] - ], - "44": [ - "wrapper_descriptor", - "" - ], - "45": [ - "wrapper_descriptor", - "" - ], - "46": [ - "wrapper_descriptor", - "" - ], - "47": [ - "wrapper_descriptor", - "" - ], - "48": [ - "wrapper_descriptor", - "" - ], - "49": [ - "wrapper_descriptor", - "" - ], - "50": [ - "wrapper_descriptor", - "" - ], - "51": [ - "wrapper_descriptor", - "" - ], - "52": [ - "wrapper_descriptor", - "" - ], - "53": [ - "builtin_function_or_method", - "" - ], - "54": [ - "wrapper_descriptor", - "" - ], - "55": [ - "method_descriptor", - "" - ], - "56": [ - "wrapper_descriptor", - "" - ], - "57": [ - "wrapper_descriptor", - "" - ], - "58": [ - "wrapper_descriptor", - "" - ], - "59": [ - "wrapper_descriptor", - "" - ], - "60": [ - "method_descriptor", - "" - ], - "61": [ - "classmethod_descriptor", - "" - ], - "62": [ - "method_descriptor", - "" - ], - "63": [ - "method_descriptor", - "" - ], - "64": [ - "method_descriptor", - "" - ], - "65": [ - "classmethod_descriptor", - "" - ], - "66": [ - "getset_descriptor", - "" - ], - "67": [ - "method_descriptor", - "" - ], - "68": [ - "datetime.datetime", - "9999-12-31 23:59:59.999999" - ], - "69": [ - "getset_descriptor", - "" - ], - "70": [ - "datetime.datetime", - "0001-01-01 00:00:00" - ], - "71": [ - "getset_descriptor", - "" - ], - "72": [ - "classmethod_descriptor", - "" - ], - "73": [ - "method_descriptor", - "" - ], - "74": [ - "datetime.timedelta", - "0:00:00.000001" - ], - "75": [ - "getset_descriptor", - "" - ], - "76": [ - "classmethod_descriptor", - "" - ], - "77": [ - "method_descriptor", - "" - ], - "78": [ - "method_descriptor", - "" - ], - "79": [ - "method_descriptor", - "" - ], - "80": [ - "getset_descriptor", - "" - ], - "81": [ - "method_descriptor", - "" - ], - "82": [ - "classmethod_descriptor", - "" - ], - "83": [ - "classmethod_descriptor", - "" - ], - "84": [ - "method_descriptor", - "" - ], - "85": [ - "method_descriptor", - "" - ], - "86": [ - "CLASS", - "JSONDecoder", - [], - [ - "__init__", - [ - "REF", - 87 - ] - ], - [ - "decode", - [ - "REF", - 88 - ] - ], - [ - "raw_decode", - [ - "REF", - 89 - ] - ] - ], - "87": [ - "FUNCTION", - "__init__(self, encoding, object_hook, parse_float, parse_int, parse_constant, strict, object_pairs_hook)", - null - ], - "88": [ - "FUNCTION", - "decode(self, s, _w)", - null - ], - "89": [ - "FUNCTION", - "raw_decode(self, s, idx)", - null - ], - "90": [ - "builtin_function_or_method", - "" - ], - "91": [ - "builtin_function_or_method", - "" - ], - "92": [ - "builtin_function_or_method", - "" - ], - "93": [ - "builtin_function_or_method", - "" - ], - "94": [ - "builtin_function_or_method", - "" + "module", + "" ] }, "line": 6, @@ -4581,1068 +223,72 @@ }, { "ordered_globals": [ - "OrderedDict", + "math", "__package__", - "datetime", - "JSONDecoder", - "pi", - "cos", - "sqrt", - "atan2", - "sin", - "radians" + "operator", + "string", + "collections", + "re", + "json" ], "stdout": "", - "exception_msg": "RuntimeError: cannot unmarshal code objects in restricted execution mode", "func_name": "", "stack_to_render": [], "globals": { - "cos": [ - "REF", - 90 - ], - "pi": 3.141592653589793, - "OrderedDict": [ - "REF", - 1 - ], - "JSONDecoder": [ + "string": [ "REF", - 86 + 3 ], - "sqrt": [ + "__package__": null, + "re": [ "REF", - 91 + 5 ], - "datetime": [ + "json": [ "REF", - 43 + 6 ], - "atan2": [ + "collections": [ "REF", - 92 + 4 ], - "__package__": null, - "sin": [ + "operator": [ "REF", - 93 + 2 ], - "radians": [ + "math": [ "REF", - 94 + 1 ] }, "heap": { "1": [ - "INSTANCE", - "ABCMeta", - [ - "__abstractmethods__", - [ - "REF", - 2 - ] - ], - [ - "__delitem__", - [ - "REF", - 3 - ] - ], - [ - "__eq__", - [ - "REF", - 4 - ] - ], - [ - "__init__", - [ - "REF", - 5 - ] - ], - [ - "__iter__", - [ - "REF", - 6 - ] - ], - [ - "__ne__", - [ - "REF", - 7 - ] - ], - [ - "__reduce__", - [ - "REF", - 8 - ] - ], - [ - "__repr__", - [ - "REF", - 9 - ] - ], - [ - "__reversed__", - [ - "REF", - 10 - ] - ], - [ - "__setitem__", - [ - "REF", - 11 - ] - ], - [ - "_abc_cache", - [ - "REF", - 12 - ] - ], - [ - "_abc_negative_cache", - [ - "REF", - 17 - ] - ], - [ - "_abc_negative_cache_version", - 10 - ], - [ - "_abc_registry", - [ - "REF", - 22 - ] - ], - [ - "clear", - [ - "REF", - 27 - ] - ], - [ - "copy", - [ - "REF", - 28 - ] - ], - [ - "fromkeys", - [ - "REF", - 29 - ] - ], - [ - "items", - [ - "REF", - 30 - ] - ], - [ - "iteritems", - [ - "REF", - 31 - ] - ], - [ - "iterkeys", - [ - "REF", - 32 - ] - ], - [ - "itervalues", - [ - "REF", - 33 - ] - ], - [ - "keys", - [ - "REF", - 34 - ] - ], - [ - "pop", - [ - "REF", - 35 - ] - ], - [ - "popitem", - [ - "REF", - 36 - ] - ], - [ - "setdefault", - [ - "REF", - 37 - ] - ], - [ - "update", - [ - "REF", - 38 - ] - ], - [ - "values", - [ - "REF", - 39 - ] - ], - [ - "viewitems", - [ - "REF", - 40 - ] - ], - [ - "viewkeys", - [ - "REF", - 41 - ] - ], - [ - "viewvalues", - [ - "REF", - 42 - ] - ] + "module", + "" ], "2": [ - "frozenset", - "frozenset([])" + "module", + "" ], "3": [ - "FUNCTION", - "__delitem__(self, key, PREV, NEXT, dict_delitem)", - null + "module", + "" ], "4": [ - "FUNCTION", - "__eq__(self, other)", - null + "module", + "" ], "5": [ - "FUNCTION", - "__init__(self, *a, *r, *g, *s, **k, **w, **d, **s)", - null + "module", + "" ], "6": [ - "FUNCTION", - "__iter__(self, NEXT, KEY)", - null - ], - "7": [ - "FUNCTION", - "__ne__(self, other)", - null - ], - "8": [ - "FUNCTION", - "__reduce__(self)", - null - ], - "9": [ - "FUNCTION", - "__repr__(self)", - null - ], - "10": [ - "FUNCTION", - "__reversed__(self, PREV, KEY)", - null - ], - "11": [ - "FUNCTION", - "__setitem__(self, key, value, PREV, NEXT, dict_setitem)", - null - ], - "12": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 13 - ] - ], - [ - "_pending_removals", - [ - "REF", - 14 - ] - ], - [ - "_remove", - [ - "REF", - 15 - ] - ], - [ - "data", - [ - "REF", - 16 - ] - ] - ], - "13": [ - "SET" - ], - "14": [ - "LIST" - ], - "15": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "16": [ - "SET" - ], - "17": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 18 - ] - ], - [ - "_pending_removals", - [ - "REF", - 19 - ] - ], - [ - "_remove", - [ - "REF", - 20 - ] - ], - [ - "data", - [ - "REF", - 21 - ] - ] - ], - "18": [ - "SET" - ], - "19": [ - "LIST" - ], - "20": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "21": [ - "SET" - ], - "22": [ - "INSTANCE", - "WeakSet", - [ - "_iterating", - [ - "REF", - 23 - ] - ], - [ - "_pending_removals", - [ - "REF", - 24 - ] - ], - [ - "_remove", - [ - "REF", - 25 - ] - ], - [ - "data", - [ - "REF", - 26 - ] - ] - ], - "23": [ - "SET" - ], - "24": [ - "LIST" - ], - "25": [ - "FUNCTION", - "_remove(item, selfref)", - null - ], - "26": [ - "SET" - ], - "27": [ - "FUNCTION", - "clear(self)", - null - ], - "28": [ - "FUNCTION", - "copy(self)", - null - ], - "29": [ - "classmethod", - "" - ], - "30": [ - "FUNCTION", - "items(self)", - null - ], - "31": [ - "FUNCTION", - "iteritems(self)", - null - ], - "32": [ - "FUNCTION", - "iterkeys(self)", - null - ], - "33": [ - "FUNCTION", - "itervalues(self)", - null - ], - "34": [ - "FUNCTION", - "keys(self)", - null - ], - "35": [ - "FUNCTION", - "pop(self, key, default)", - null - ], - "36": [ - "FUNCTION", - "popitem(self, last)", - null - ], - "37": [ - "FUNCTION", - "setdefault(self, key, default)", - null - ], - "38": [ - "FUNCTION", - "update(*a, *r, *g, *s, **k, **w, **d, **s)", - null - ], - "39": [ - "FUNCTION", - "values(self)", - null - ], - "40": [ - "FUNCTION", - "viewitems(self)", - null - ], - "41": [ - "FUNCTION", - "viewkeys(self)", - null - ], - "42": [ - "FUNCTION", - "viewvalues(self)", - null - ], - "43": [ - "CLASS", - "datetime", - [ - "date" - ], - [ - "__add__", - [ - "REF", - 44 - ] - ], - [ - "__eq__", - [ - "REF", - 45 - ] - ], - [ - "__ge__", - [ - "REF", - 46 - ] - ], - [ - "__getattribute__", - [ - "REF", - 47 - ] - ], - [ - "__gt__", - [ - "REF", - 48 - ] - ], - [ - "__hash__", - [ - "REF", - 49 - ] - ], - [ - "__le__", - [ - "REF", - 50 - ] - ], - [ - "__lt__", - [ - "REF", - 51 - ] - ], - [ - "__ne__", - [ - "REF", - 52 - ] - ], - [ - "__new__", - [ - "REF", - 53 - ] - ], - [ - "__radd__", - [ - "REF", - 54 - ] - ], - [ - "__reduce__", - [ - "REF", - 55 - ] - ], - [ - "__repr__", - [ - "REF", - 56 - ] - ], - [ - "__rsub__", - [ - "REF", - 57 - ] - ], - [ - "__str__", - [ - "REF", - 58 - ] - ], - [ - "__sub__", - [ - "REF", - 59 - ] - ], - [ - "astimezone", - [ - "REF", - 60 - ] - ], - [ - "combine", - [ - "REF", - 61 - ] - ], - [ - "ctime", - [ - "REF", - 62 - ] - ], - [ - "date", - [ - "REF", - 63 - ] - ], - [ - "dst", - [ - "REF", - 64 - ] - ], - [ - "fromtimestamp", - [ - "REF", - 65 - ] - ], - [ - "hour", - [ - "REF", - 66 - ] - ], - [ - "isoformat", - [ - "REF", - 67 - ] - ], - [ - "max", - [ - "REF", - 68 - ] - ], - [ - "microsecond", - [ - "REF", - 69 - ] - ], - [ - "min", - [ - "REF", - 70 - ] - ], - [ - "minute", - [ - "REF", - 71 - ] - ], - [ - "now", - [ - "REF", - 72 - ] - ], - [ - "replace", - [ - "REF", - 73 - ] - ], - [ - "resolution", - [ - "REF", - 74 - ] - ], - [ - "second", - [ - "REF", - 75 - ] - ], - [ - "strptime", - [ - "REF", - 76 - ] - ], - [ - "time", - [ - "REF", - 77 - ] - ], - [ - "timetuple", - [ - "REF", - 78 - ] - ], - [ - "timetz", - [ - "REF", - 79 - ] - ], - [ - "tzinfo", - [ - "REF", - 80 - ] - ], - [ - "tzname", - [ - "REF", - 81 - ] - ], - [ - "utcfromtimestamp", - [ - "REF", - 82 - ] - ], - [ - "utcnow", - [ - "REF", - 83 - ] - ], - [ - "utcoffset", - [ - "REF", - 84 - ] - ], - [ - "utctimetuple", - [ - "REF", - 85 - ] - ] - ], - "44": [ - "wrapper_descriptor", - "" - ], - "45": [ - "wrapper_descriptor", - "" - ], - "46": [ - "wrapper_descriptor", - "" - ], - "47": [ - "wrapper_descriptor", - "" - ], - "48": [ - "wrapper_descriptor", - "" - ], - "49": [ - "wrapper_descriptor", - "" - ], - "50": [ - "wrapper_descriptor", - "" - ], - "51": [ - "wrapper_descriptor", - "" - ], - "52": [ - "wrapper_descriptor", - "" - ], - "53": [ - "builtin_function_or_method", - "" - ], - "54": [ - "wrapper_descriptor", - "" - ], - "55": [ - "method_descriptor", - "" - ], - "56": [ - "wrapper_descriptor", - "" - ], - "57": [ - "wrapper_descriptor", - "" - ], - "58": [ - "wrapper_descriptor", - "" - ], - "59": [ - "wrapper_descriptor", - "" - ], - "60": [ - "method_descriptor", - "" - ], - "61": [ - "classmethod_descriptor", - "" - ], - "62": [ - "method_descriptor", - "" - ], - "63": [ - "method_descriptor", - "" - ], - "64": [ - "method_descriptor", - "" - ], - "65": [ - "classmethod_descriptor", - "" - ], - "66": [ - "getset_descriptor", - "" - ], - "67": [ - "method_descriptor", - "" - ], - "68": [ - "datetime.datetime", - "9999-12-31 23:59:59.999999" - ], - "69": [ - "getset_descriptor", - "" - ], - "70": [ - "datetime.datetime", - "0001-01-01 00:00:00" - ], - "71": [ - "getset_descriptor", - "" - ], - "72": [ - "classmethod_descriptor", - "" - ], - "73": [ - "method_descriptor", - "" - ], - "74": [ - "datetime.timedelta", - "0:00:00.000001" - ], - "75": [ - "getset_descriptor", - "" - ], - "76": [ - "classmethod_descriptor", - "" - ], - "77": [ - "method_descriptor", - "" - ], - "78": [ - "method_descriptor", - "" - ], - "79": [ - "method_descriptor", - "" - ], - "80": [ - "getset_descriptor", - "" - ], - "81": [ - "method_descriptor", - "" - ], - "82": [ - "classmethod_descriptor", - "" - ], - "83": [ - "classmethod_descriptor", - "" - ], - "84": [ - "method_descriptor", - "" - ], - "85": [ - "method_descriptor", - "" - ], - "86": [ - "CLASS", - "JSONDecoder", - [], - [ - "__init__", - [ - "REF", - 87 - ] - ], - [ - "decode", - [ - "REF", - 88 - ] - ], - [ - "raw_decode", - [ - "REF", - 89 - ] - ] - ], - "87": [ - "FUNCTION", - "__init__(self, encoding, object_hook, parse_float, parse_int, parse_constant, strict, object_pairs_hook)", - null - ], - "88": [ - "FUNCTION", - "decode(self, s, _w)", - null - ], - "89": [ - "FUNCTION", - "raw_decode(self, s, idx)", - null - ], - "90": [ - "builtin_function_or_method", - "" - ], - "91": [ - "builtin_function_or_method", - "" - ], - "92": [ - "builtin_function_or_method", - "" - ], - "93": [ - "builtin_function_or_method", - "" - ], - "94": [ - "builtin_function_or_method", - "" + "module", + "" ] }, "line": 6, - "event": "exception" + "event": "return" } ] } diff --git a/PyTutorGAE/tests/backend-tests/john-import-test.txt b/PyTutorGAE/tests/backend-tests/john-import-test.txt index 86746d336..68f54d63d 100644 --- a/PyTutorGAE/tests/backend-tests/john-import-test.txt +++ b/PyTutorGAE/tests/backend-tests/john-import-test.txt @@ -1,21 +1,11 @@ -from collections import OrderedDict -from datetime import datetime -from json import JSONDecoder -from math import pi -from math import sin, cos, atan2, radians, sqrt -from random import randint -import code -import doctest -import functools -import inspect -import io import math -import operator as op -import os -import random -import re -import signal +import operator import string -import sys -import unittest +import collections +import re +import json +# these don't seem allowed by bdb in Python 2.6, so punt for now +#import random +#import datetime +#import functools From c62f5cfc47d38ad690209e61e2e900276d2eef1c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 21:36:54 -0700 Subject: [PATCH 154/502] revert prev. change --- PyTutorGAE/pg_logger.py | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index ee915007a..8556c32f6 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -553,26 +553,28 @@ def _runscript(self, script_str): self._wait_for_mainpyfile = 1 + # I think Google App Engine takes care of sandboxing, but maybe + # we should do some extra sandboxing ourselves ... + ''' # ok, let's try to sorta 'sandbox' the user script by not - # allowing certain potentially dangerous operations. - # - # (Note that we still allow imports and let App Engine take care - # of sandboxing those appropriately.) + # allowing certain potentially dangerous operations: user_builtins = {} for (k,v) in __builtins__.iteritems(): if k in ('reload', 'input', 'apply', 'open', 'compile', - 'file', 'eval', 'execfile', + '__import__', 'file', 'eval', 'execfile', 'exit', 'quit', 'raw_input', - 'dir', 'globals', 'locals', 'vars'): + 'dir', 'globals', 'locals', 'vars', + 'compile'): continue user_builtins[k] = v + ''' user_stdout = cStringIO.StringIO() sys.stdout = user_stdout user_globals = {"__name__" : "__main__", - "__builtins__" : user_builtins, + "__builtins__" : __builtins__, "__user_stdout__" : user_stdout} try: From be1b9a6100d334453e8979f7f386641ffdd578f5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 21:51:03 -0700 Subject: [PATCH 155/502] prettier-printing of modules and restrict floats to be 4 digits --- PyTutorGAE/pg_encoder.py | 16 ++- example-code/py_tutorial.golden | 116 ++++++++--------- example-code/sqrt.golden | 214 ++++++++++++++++---------------- 3 files changed, 180 insertions(+), 166 deletions(-) diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py index cc86a87d6..d1a33a8d1 100644 --- a/PyTutorGAE/pg_encoder.py +++ b/PyTutorGAE/pg_encoder.py @@ -45,12 +45,17 @@ # * instance - ['INSTANCE', class name, [attr1, value1], [attr2, value2], ..., [attrN, valueN]] # * class - ['CLASS', class name, [list of superclass names], [attr1, value1], [attr2, value2], ..., [attrN, valueN]] # * function - ['FUNCTION', function name, parent frame ID (for nested functions)] +# * module - ['module', module name] # * other - [, string representation of object] # * compound object reference - ['REF', target object's unique_id] # # the unique_id is derived from id(), which allows us to capture aliasing +# number of significant digits for floats +FLOAT_PRECISION = 4 + + import re, types import sys typeRE = re.compile("") @@ -103,7 +108,10 @@ def set_function_parent_frame_ID(self, ref_obj, enclosing_frame_id): def encode(self, dat): # primitive type if type(dat) in (int, long, float, str, bool, type(None)): - return dat + if type(dat) is float: + return round(dat, FLOAT_PRECISION) + else: + return dat # compound type - return an object reference and update encoded_heap_objects else: @@ -166,9 +174,15 @@ def encode(self, dat): new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later elif self.is_class(dat) or self.is_instance(dat): self.encode_class_or_instance(dat, new_obj) + elif typ is types.ModuleType: + new_obj.extend(['module', dat.__name__]) else: typeStr = str(typ) m = typeRE.match(typeStr) + + if not m: + m = classRE.match(typeStr) + assert m, typ new_obj.extend([m.group(1), str(dat)]) diff --git a/example-code/py_tutorial.golden b/example-code/py_tutorial.golden index c46ed318f..408ae9b30 100644 --- a/example-code/py_tutorial.golden +++ b/example-code/py_tutorial.golden @@ -35,7 +35,7 @@ "stack_to_render": [], "globals": { "age": 26, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": {}, "line": 8, @@ -52,7 +52,7 @@ "stack_to_render": [], "globals": { "age": 26, - "pi": 3.1415899999999999, + "pi": 3.1416, "s": "Rutherford Birchard Hayes" }, "heap": {}, @@ -75,7 +75,7 @@ 1 ], "age": 26, - "pi": 3.1415899999999999, + "pi": 3.1416, "s": "Rutherford Birchard Hayes" }, "heap": { @@ -106,7 +106,7 @@ 1 ], "age": 26, - "pi": 3.1415899999999999, + "pi": 3.1416, "s": "Rutherford Birchard Hayes", "firstName": "Rutherford" }, @@ -142,7 +142,7 @@ 1 ], "s": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -178,7 +178,7 @@ 1 ], "s": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -216,7 +216,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -254,7 +254,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -292,7 +292,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -335,7 +335,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -384,7 +384,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -436,7 +436,7 @@ "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -488,7 +488,7 @@ "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -540,7 +540,7 @@ "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -592,7 +592,7 @@ "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -644,7 +644,7 @@ "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -696,7 +696,7 @@ "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -748,7 +748,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -800,7 +800,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -852,7 +852,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -909,7 +909,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -983,7 +983,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1067,7 +1067,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1151,7 +1151,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1236,7 +1236,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1321,7 +1321,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1406,7 +1406,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1491,7 +1491,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1576,7 +1576,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1661,7 +1661,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1746,7 +1746,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1831,7 +1831,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -1916,7 +1916,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2001,7 +2001,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2086,7 +2086,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2171,7 +2171,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2256,7 +2256,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2341,7 +2341,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2426,7 +2426,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2511,7 +2511,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2601,7 +2601,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2705,7 +2705,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2812,7 +2812,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -2923,7 +2923,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -3038,7 +3038,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -3157,7 +3157,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999 + "pi": 3.1416 }, "heap": { "1": [ @@ -3283,7 +3283,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 3000000000 }, "heap": { @@ -3410,7 +3410,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 3000000000 }, "heap": { @@ -3537,7 +3537,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 58000000000 }, "heap": { @@ -3664,7 +3664,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 58000000000 }, "heap": { @@ -3791,7 +3791,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 20000 }, "heap": { @@ -3918,7 +3918,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 20000 }, "heap": { @@ -4045,7 +4045,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 20000 }, "heap": { @@ -4172,7 +4172,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 40000000 }, "heap": { @@ -4299,7 +4299,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 40000000 }, "heap": { @@ -4426,7 +4426,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 40000000 }, "heap": { @@ -4553,7 +4553,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 40000000 }, "heap": { @@ -4680,7 +4680,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1415899999999999, + "pi": 3.1416, "worth": 40000000 }, "heap": { diff --git a/example-code/sqrt.golden b/example-code/sqrt.golden index 5d8be8e5d..f091f44c5 100644 --- a/example-code/sqrt.golden +++ b/example-code/sqrt.golden @@ -3122,7 +3122,7 @@ "frame_id": 9, "encoded_locals": { "a": 5.0, - "__return__": 3.3999999999999999, + "__return__": 3.4, "b": 1.8 }, "is_highlighted": true, @@ -3255,7 +3255,7 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 3.3999999999999999, + "__return__": 3.4, "guess": 5.0 }, "is_highlighted": true, @@ -3387,7 +3387,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -3517,7 +3517,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -3647,7 +3647,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -3664,7 +3664,7 @@ { "frame_id": 11, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -3794,7 +3794,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -3811,7 +3811,7 @@ { "frame_id": 11, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -3941,7 +3941,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -3959,7 +3959,7 @@ "frame_id": 11, "encoded_locals": { "__return__": false, - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -4090,7 +4090,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -4220,7 +4220,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -4237,7 +4237,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -4367,7 +4367,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -4384,7 +4384,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -4514,7 +4514,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -4531,7 +4531,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -4548,8 +4548,8 @@ { "frame_id": 13, "encoded_locals": { - "a": 3.3999999999999999, - "b": 2.6470588235294117 + "a": 3.4, + "b": 2.6471 }, "is_highlighted": true, "is_parent": false, @@ -4680,7 +4680,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -4697,7 +4697,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -4714,8 +4714,8 @@ { "frame_id": 13, "encoded_locals": { - "a": 3.3999999999999999, - "b": 2.6470588235294117 + "a": 3.4, + "b": 2.6471 }, "is_highlighted": true, "is_parent": false, @@ -4846,7 +4846,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -4863,7 +4863,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -4880,9 +4880,9 @@ { "frame_id": 13, "encoded_locals": { - "a": 3.3999999999999999, - "__return__": 3.0235294117647058, - "b": 2.6470588235294117 + "a": 3.4, + "__return__": 3.0235, + "b": 2.6471 }, "is_highlighted": true, "is_parent": false, @@ -5014,7 +5014,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -5031,8 +5031,8 @@ { "frame_id": 12, "encoded_locals": { - "__return__": 3.0235294117647058, - "guess": 3.3999999999999999 + "__return__": 3.0235, + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -5163,7 +5163,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -5180,7 +5180,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -5310,7 +5310,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -5327,7 +5327,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -5457,7 +5457,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -5474,7 +5474,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -5491,7 +5491,7 @@ { "frame_id": 15, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -5621,7 +5621,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -5638,7 +5638,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -5655,7 +5655,7 @@ { "frame_id": 15, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -5785,7 +5785,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -5802,7 +5802,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -5820,7 +5820,7 @@ "frame_id": 15, "encoded_locals": { "__return__": false, - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -5951,7 +5951,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -5968,7 +5968,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -6098,7 +6098,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -6115,7 +6115,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -6132,7 +6132,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -6262,7 +6262,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -6279,7 +6279,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -6296,7 +6296,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -6426,7 +6426,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -6443,7 +6443,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -6460,7 +6460,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -6477,8 +6477,8 @@ { "frame_id": 17, "encoded_locals": { - "a": 3.0235294117647058, - "b": 2.9766536964980546 + "a": 3.0235, + "b": 2.9767 }, "is_highlighted": true, "is_parent": false, @@ -6609,7 +6609,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -6626,7 +6626,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -6643,7 +6643,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -6660,8 +6660,8 @@ { "frame_id": 17, "encoded_locals": { - "a": 3.0235294117647058, - "b": 2.9766536964980546 + "a": 3.0235, + "b": 2.9767 }, "is_highlighted": true, "is_parent": false, @@ -6792,7 +6792,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -6809,7 +6809,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -6826,7 +6826,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -6843,9 +6843,9 @@ { "frame_id": 17, "encoded_locals": { - "a": 3.0235294117647058, - "__return__": 3.0000915541313802, - "b": 2.9766536964980546 + "a": 3.0235, + "__return__": 3.0001, + "b": 2.9767 }, "is_highlighted": true, "is_parent": false, @@ -6977,7 +6977,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -6994,7 +6994,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -7011,8 +7011,8 @@ { "frame_id": 16, "encoded_locals": { - "__return__": 3.0000915541313802, - "guess": 3.0235294117647058 + "__return__": 3.0001, + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -7143,7 +7143,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -7160,7 +7160,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -7177,7 +7177,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0000915541313802 + "guess": 3.0001 }, "is_highlighted": true, "is_parent": false, @@ -7307,7 +7307,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -7324,7 +7324,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -7341,7 +7341,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0000915541313802 + "guess": 3.0001 }, "is_highlighted": true, "is_parent": false, @@ -7471,7 +7471,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -7488,7 +7488,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -7505,7 +7505,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0000915541313802 + "guess": 3.0001 }, "is_highlighted": false, "is_parent": false, @@ -7522,7 +7522,7 @@ { "frame_id": 19, "encoded_locals": { - "guess": 3.0000915541313802 + "guess": 3.0001 }, "is_highlighted": true, "is_parent": false, @@ -7652,7 +7652,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -7669,7 +7669,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -7686,7 +7686,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0000915541313802 + "guess": 3.0001 }, "is_highlighted": false, "is_parent": false, @@ -7703,7 +7703,7 @@ { "frame_id": 19, "encoded_locals": { - "guess": 3.0000915541313802 + "guess": 3.0001 }, "is_highlighted": true, "is_parent": false, @@ -7833,7 +7833,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -7850,7 +7850,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -7867,7 +7867,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0000915541313802 + "guess": 3.0001 }, "is_highlighted": false, "is_parent": false, @@ -7885,7 +7885,7 @@ "frame_id": 19, "encoded_locals": { "__return__": true, - "guess": 3.0000915541313802 + "guess": 3.0001 }, "is_highlighted": true, "is_parent": false, @@ -8016,7 +8016,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -8033,7 +8033,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -8050,7 +8050,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0000915541313802 + "guess": 3.0001 }, "is_highlighted": true, "is_parent": false, @@ -8180,7 +8180,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -8197,7 +8197,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235294117647058 + "guess": 3.0235 }, "is_highlighted": false, "is_parent": false, @@ -8214,8 +8214,8 @@ { "frame_id": 18, "encoded_locals": { - "__return__": 3.0000915541313802, - "guess": 3.0000915541313802 + "__return__": 3.0001, + "guess": 3.0001 }, "is_highlighted": true, "is_parent": false, @@ -8346,7 +8346,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.3999999999999999 + "guess": 3.4 }, "is_highlighted": false, "is_parent": false, @@ -8363,8 +8363,8 @@ { "frame_id": 14, "encoded_locals": { - "__return__": 3.0000915541313802, - "guess": 3.0235294117647058 + "__return__": 3.0001, + "guess": 3.0235 }, "is_highlighted": true, "is_parent": false, @@ -8495,8 +8495,8 @@ { "frame_id": 10, "encoded_locals": { - "__return__": 3.0000915541313802, - "guess": 3.3999999999999999 + "__return__": 3.0001, + "guess": 3.4 }, "is_highlighted": true, "is_parent": false, @@ -8610,7 +8610,7 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 3.0000915541313802, + "__return__": 3.0001, "guess": 5.0 }, "is_highlighted": true, @@ -8708,7 +8708,7 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 3.0000915541313802, + "__return__": 3.0001, "guess": 1.0 }, "is_highlighted": true, @@ -8779,7 +8779,7 @@ "REF", 3 ], - "__return__": 3.0000915541313802, + "__return__": 3.0001, "x": 9, "average": [ "REF", @@ -8861,7 +8861,7 @@ "REF", 3 ], - "__return__": 3.0000915541313802, + "__return__": 3.0001, "x": 9, "average": [ "REF", @@ -8893,7 +8893,7 @@ "REF", 1 ], - "ans": 3.0000915541313802 + "ans": 3.0001 }, "heap": { "1": [ From d830d12be76fa97382e391d27498a07d720fbbde Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 22:24:44 -0700 Subject: [PATCH 156/502] added some rudimentary python sandboxing --- PyTutorGAE/pg_logger.py | 50 +++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 8556c32f6..121ecbe9f 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -54,8 +54,31 @@ #DEBUG = False DEBUG = True +BUILTIN_IMPORT = __builtins__['__import__'] -IGNORE_VARS = set(('__user_stdout__', '__builtins__', '__name__', '__exception__', '__doc__')) +# simple sandboxing scheme: + +# whitelist of module imports +ALLOWED_MODULE_IMPORTS = ('math', 'random', 'datetime', + 'functools', 'operator', 'string', + 'collections', 're', 'json') + +# Restrict imports to a whitelist +def __restricted_import__(*args): + if args[0] in ALLOWED_MODULE_IMPORTS: + return BUILTIN_IMPORT(*args) + else: + raise ImportError('{0} not supported'.format(args[0])) + + +# blacklist of builtins +BANNED_BUILTINS = ('reload', 'input', 'apply', 'open', 'compile', + 'file', 'eval', 'exec', 'execfile', + 'exit', 'quit', 'raw_input', 'help', + 'dir', 'globals', 'locals', 'vars') + + +IGNORE_VARS = set(('__user_stdout__', '__builtins__', '__name__', '__exception__', '__doc__', '__package__')) def get_user_stdout(frame): return frame.f_globals['__user_stdout__'].getvalue() @@ -241,6 +264,10 @@ def interaction(self, frame, traceback, event_type): top_frame = tos[0] lineno = tos[1] + # don't trace inside of our __restricted_import__ helper function + if top_frame.f_code.co_name == '__restricted_import__': + return + self.encoder.reset_heap() # VERY VERY VERY IMPORTANT, # or else we won't properly capture heap object mutations in the trace! @@ -553,28 +580,23 @@ def _runscript(self, script_str): self._wait_for_mainpyfile = 1 - # I think Google App Engine takes care of sandboxing, but maybe - # we should do some extra sandboxing ourselves ... - ''' # ok, let's try to sorta 'sandbox' the user script by not - # allowing certain potentially dangerous operations: + # allowing certain potentially dangerous operations. user_builtins = {} - for (k,v) in __builtins__.iteritems(): - if k in ('reload', 'input', 'apply', 'open', 'compile', - '__import__', 'file', 'eval', 'execfile', - 'exit', 'quit', 'raw_input', - 'dir', 'globals', 'locals', 'vars', - 'compile'): + for (k, v) in __builtins__.iteritems(): + if k in BANNED_BUILTINS: continue - user_builtins[k] = v - ''' + elif k == '__import__': + user_builtins[k] = __restricted_import__ + else: + user_builtins[k] = v user_stdout = cStringIO.StringIO() sys.stdout = user_stdout user_globals = {"__name__" : "__main__", - "__builtins__" : __builtins__, + "__builtins__" : user_builtins, "__user_stdout__" : user_stdout} try: From cf51044414c42cbd9d635f48e755fbdac55bc1fb Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 22:24:55 -0700 Subject: [PATCH 157/502] sync'ed tests --- .../tests/backend-tests/exec_test.golden | 48 +- .../tests/backend-tests/import_error.golden | 50 +- .../infinite_loop_one_liner.golden | 20 +- .../backend-tests/john-import-test.golden | 74 +- .../tests/backend-tests/john-import-test.txt | 2 +- .../tests/backend-tests/open_error.golden | 1215 +---------------- 6 files changed, 57 insertions(+), 1352 deletions(-) diff --git a/PyTutorGAE/tests/backend-tests/exec_test.golden b/PyTutorGAE/tests/backend-tests/exec_test.golden index af1afcf98..aba0c1788 100644 --- a/PyTutorGAE/tests/backend-tests/exec_test.golden +++ b/PyTutorGAE/tests/backend-tests/exec_test.golden @@ -1,4 +1,3 @@ -security breach { "code": "exec \"import os; os.system('echo security breach')\"\n", "trace": [ @@ -33,52 +32,15 @@ security breach "event": "step_line" }, { - "ordered_globals": [ - "os", - "__package__" - ], - "stdout": "", - "func_name": "", - "stack_to_render": [], - "globals": { - "os": [ - "REF", - 1 - ], - "__package__": null - }, - "heap": { - "1": [ - "module", - "" - ] - }, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "os", - "__package__" - ], + "ordered_globals": [], "stdout": "", + "exception_msg": "ImportError: os not supported", "func_name": "", "stack_to_render": [], - "globals": { - "os": [ - "REF", - 1 - ], - "__package__": null - }, - "heap": { - "1": [ - "module", - "" - ] - }, + "globals": {}, + "heap": {}, "line": 1, - "event": "return" + "event": "exception" } ] } diff --git a/PyTutorGAE/tests/backend-tests/import_error.golden b/PyTutorGAE/tests/backend-tests/import_error.golden index 495ab6d33..96e9fa679 100644 --- a/PyTutorGAE/tests/backend-tests/import_error.golden +++ b/PyTutorGAE/tests/backend-tests/import_error.golden @@ -1,4 +1,3 @@ -security breach { "code": "# should NOT allow for any imports\nimport os\n\nos.system(\"echo security breach\")\n", "trace": [ @@ -13,52 +12,15 @@ security breach "event": "step_line" }, { - "ordered_globals": [ - "os", - "__package__" - ], - "stdout": "", - "func_name": "", - "stack_to_render": [], - "globals": { - "os": [ - "REF", - 1 - ], - "__package__": null - }, - "heap": { - "1": [ - "module", - "" - ] - }, - "line": 4, - "event": "step_line" - }, - { - "ordered_globals": [ - "os", - "__package__" - ], + "ordered_globals": [], "stdout": "", + "exception_msg": "ImportError: os not supported", "func_name": "", "stack_to_render": [], - "globals": { - "os": [ - "REF", - 1 - ], - "__package__": null - }, - "heap": { - "1": [ - "module", - "" - ] - }, - "line": 4, - "event": "return" + "globals": {}, + "heap": {}, + "line": 2, + "event": "exception" } ] } diff --git a/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden b/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden index dec2f630d..93cda763e 100644 --- a/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden +++ b/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden @@ -11,16 +11,6 @@ "line": 1, "event": "step_line" }, - { - "ordered_globals": [], - "stdout": "", - "func_name": "", - "stack_to_render": [], - "globals": {}, - "heap": {}, - "line": 1, - "event": "step_line" - }, { "ordered_globals": [], "stdout": "hahahaha\n", @@ -3001,6 +2991,16 @@ "line": 1, "event": "step_line" }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, { "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", "event": "instruction_limit_reached" diff --git a/PyTutorGAE/tests/backend-tests/john-import-test.golden b/PyTutorGAE/tests/backend-tests/john-import-test.golden index 9483d42d3..add78fcb4 100644 --- a/PyTutorGAE/tests/backend-tests/john-import-test.golden +++ b/PyTutorGAE/tests/backend-tests/john-import-test.golden @@ -1,5 +1,5 @@ { - "code": "import math\nimport operator\nimport string\nimport collections\nimport re\nimport json\n\n# these don't seem allowed by bdb in Python 2.6, so punt for now\n#import random\n#import datetime\n#import functools\n", + "code": "import math\nimport operator\nimport string\nimport collections\nimport re\nimport json\n\n# causes some errors in regression tests, but fine in GAE ...\n#import random\n#import datetime\n#import functools\n", "trace": [ { "ordered_globals": [], @@ -13,8 +13,7 @@ }, { "ordered_globals": [ - "math", - "__package__" + "math" ], "stdout": "", "func_name": "", @@ -23,13 +22,12 @@ "math": [ "REF", 1 - ], - "__package__": null + ] }, "heap": { "1": [ "module", - "" + "math" ] }, "line": 2, @@ -38,7 +36,6 @@ { "ordered_globals": [ "math", - "__package__", "operator" ], "stdout": "", @@ -52,17 +49,16 @@ "math": [ "REF", 1 - ], - "__package__": null + ] }, "heap": { "1": [ "module", - "" + "math" ], "2": [ "module", - "" + "operator" ] }, "line": 3, @@ -71,7 +67,6 @@ { "ordered_globals": [ "math", - "__package__", "operator", "string" ], @@ -90,21 +85,20 @@ "math": [ "REF", 1 - ], - "__package__": null + ] }, "heap": { "1": [ "module", - "" + "math" ], "2": [ "module", - "" + "operator" ], "3": [ "module", - "" + "string" ] }, "line": 4, @@ -113,7 +107,6 @@ { "ordered_globals": [ "math", - "__package__", "operator", "string", "collections" @@ -137,25 +130,24 @@ "math": [ "REF", 1 - ], - "__package__": null + ] }, "heap": { "1": [ "module", - "" + "math" ], "2": [ "module", - "" + "operator" ], "3": [ "module", - "" + "string" ], "4": [ "module", - "" + "collections" ] }, "line": 5, @@ -164,7 +156,6 @@ { "ordered_globals": [ "math", - "__package__", "operator", "string", "collections", @@ -174,11 +165,10 @@ "func_name": "", "stack_to_render": [], "globals": { - "string": [ + "operator": [ "REF", - 3 + 2 ], - "__package__": null, "re": [ "REF", 5 @@ -187,9 +177,9 @@ "REF", 4 ], - "operator": [ + "string": [ "REF", - 2 + 3 ], "math": [ "REF", @@ -199,23 +189,23 @@ "heap": { "1": [ "module", - "" + "math" ], "2": [ "module", - "" + "operator" ], "3": [ "module", - "" + "string" ], "4": [ "module", - "" + "collections" ], "5": [ "module", - "" + "re" ] }, "line": 6, @@ -224,7 +214,6 @@ { "ordered_globals": [ "math", - "__package__", "operator", "string", "collections", @@ -239,7 +228,6 @@ "REF", 3 ], - "__package__": null, "re": [ "REF", 5 @@ -264,27 +252,27 @@ "heap": { "1": [ "module", - "" + "math" ], "2": [ "module", - "" + "operator" ], "3": [ "module", - "" + "string" ], "4": [ "module", - "" + "collections" ], "5": [ "module", - "" + "re" ], "6": [ "module", - "" + "json" ] }, "line": 6, diff --git a/PyTutorGAE/tests/backend-tests/john-import-test.txt b/PyTutorGAE/tests/backend-tests/john-import-test.txt index 68f54d63d..fcb15f43f 100644 --- a/PyTutorGAE/tests/backend-tests/john-import-test.txt +++ b/PyTutorGAE/tests/backend-tests/john-import-test.txt @@ -5,7 +5,7 @@ import collections import re import json -# these don't seem allowed by bdb in Python 2.6, so punt for now +# causes some errors in regression tests, but fine in GAE ... #import random #import datetime #import functools diff --git a/PyTutorGAE/tests/backend-tests/open_error.golden b/PyTutorGAE/tests/backend-tests/open_error.golden index 768b56878..c9df6d16a 100644 --- a/PyTutorGAE/tests/backend-tests/open_error.golden +++ b/PyTutorGAE/tests/backend-tests/open_error.golden @@ -12,1222 +12,15 @@ "event": "step_line" }, { - "ordered_globals": [ - "line" - ], + "ordered_globals": [], "stdout": "", + "exception_msg": "NameError: name 'open' is not defined", "func_name": "", "stack_to_render": [], - "globals": { - "line": "root:x:0:0:root:/root:/bin/bash\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "root:x:0:0:root:/root:/bin/bash\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "daemon:x:1:1:daemon:/usr/sbin:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "bin:x:2:2:bin:/bin:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "bin:x:2:2:bin:/bin:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "sys:x:3:3:sys:/dev:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "sys:x:3:3:sys:/dev:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "sync:x:4:65534:sync:/bin:/bin/sync\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "sync:x:4:65534:sync:/bin:/bin/sync\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "games:x:5:60:games:/usr/games:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "games:x:5:60:games:/usr/games:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "man:x:6:12:man:/var/cache/man:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "man:x:6:12:man:/var/cache/man:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "lp:x:7:7:lp:/var/spool/lpd:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "lp:x:7:7:lp:/var/spool/lpd:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "mail:x:8:8:mail:/var/mail:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "mail:x:8:8:mail:/var/mail:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "news:x:9:9:news:/var/spool/news:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "news:x:9:9:news:/var/spool/news:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "proxy:x:13:13:proxy:/bin:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "proxy:x:13:13:proxy:/bin:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "www-data:x:33:33:www-data:/var/www:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "www-data:x:33:33:www-data:/var/www:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "backup:x:34:34:backup:/var/backups:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "backup:x:34:34:backup:/var/backups:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "list:x:38:38:Mailing List Manager:/var/list:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "list:x:38:38:Mailing List Manager:/var/list:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "irc:x:39:39:ircd:/var/run/ircd:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "irc:x:39:39:ircd:/var/run/ircd:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "nobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "nobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "libuuid:x:100:101::/var/lib/libuuid:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "libuuid:x:100:101::/var/lib/libuuid:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "syslog:x:101:103::/home/syslog:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "syslog:x:101:103::/home/syslog:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "messagebus:x:102:107::/var/run/dbus:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "messagebus:x:102:107::/var/run/dbus:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "avahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "avahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "avahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "avahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "couchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "speech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "speech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "usbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "usbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "haldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "haldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "pulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "pulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "rtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "rtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "saned:x:112:118::/home/saned:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "saned:x:112:118::/home/saned:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "hplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "hplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "gdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "gdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "puppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "puppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "ntp:x:116:123::/home/ntp:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "ntp:x:116:123::/home/ntp:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "postfix:x:117:124::/var/spool/postfix:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "postfix:x:117:124::/var/spool/postfix:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "statd:x:118:65534::/var/lib/nfs:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "statd:x:118:65534::/var/lib/nfs:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "sshd:x:119:65534::/var/run/sshd:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "sshd:x:119:65534::/var/run/sshd:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "tss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "tss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "distccd:x:120:65534::/:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "distccd:x:120:65534::/:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "x20:x:903:65534::/nonexistent:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "x20:x:903:65534::/nonexistent:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "objfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "objfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "srcfs:x:905:65534::/nonexistent:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\nsrcfs:x:905:65534::/nonexistent:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "srcfs:x:905:65534::/nonexistent:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\nsrcfs:x:905:65534::/nonexistent:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "crudd:x:906:65534::/nonexistent:/bin/false\n" - }, - "heap": {}, - "line": 2, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\nsrcfs:x:905:65534::/nonexistent:/bin/false\n\ncrudd:x:906:65534::/nonexistent:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "crudd:x:906:65534::/nonexistent:/bin/false\n" - }, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [ - "line" - ], - "stdout": "root:x:0:0:root:/root:/bin/bash\n\ndaemon:x:1:1:daemon:/usr/sbin:/bin/sh\n\nbin:x:2:2:bin:/bin:/bin/sh\n\nsys:x:3:3:sys:/dev:/bin/sh\n\nsync:x:4:65534:sync:/bin:/bin/sync\n\ngames:x:5:60:games:/usr/games:/bin/sh\n\nman:x:6:12:man:/var/cache/man:/bin/sh\n\nlp:x:7:7:lp:/var/spool/lpd:/bin/sh\n\nmail:x:8:8:mail:/var/mail:/bin/sh\n\nnews:x:9:9:news:/var/spool/news:/bin/sh\n\nuucp:x:10:10:uucp:/var/spool/uucp:/bin/sh\n\nproxy:x:13:13:proxy:/bin:/bin/sh\n\nwww-data:x:33:33:www-data:/var/www:/bin/sh\n\nbackup:x:34:34:backup:/var/backups:/bin/sh\n\nlist:x:38:38:Mailing List Manager:/var/list:/bin/sh\n\nirc:x:39:39:ircd:/var/run/ircd:/bin/sh\n\ngnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh\n\nnobody:x:65534:65534:nobody:/nonexistent:/bin/sh\n\nlibuuid:x:100:101::/var/lib/libuuid:/bin/sh\n\nsyslog:x:101:103::/home/syslog:/bin/false\n\nmessagebus:x:102:107::/var/run/dbus:/bin/false\n\navahi-autoipd:x:103:110:Avahi autoip daemon,,,:/var/lib/avahi-autoipd:/bin/false\n\navahi:x:104:111:Avahi mDNS daemon,,,:/var/run/avahi-daemon:/bin/false\n\ncouchdb:x:105:113:CouchDB Administrator,,,:/var/lib/couchdb:/bin/bash\n\nspeech-dispatcher:x:106:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh\n\nusbmux:x:107:46:usbmux daemon,,,:/home/usbmux:/bin/false\n\nhaldaemon:x:108:114:Hardware abstraction layer,,,:/var/run/hald:/bin/false\n\npulse:x:110:115:PulseAudio daemon,,,:/var/run/pulse:/bin/false\n\nrtkit:x:111:117:RealtimeKit,,,:/proc:/bin/false\n\nsaned:x:112:118::/home/saned:/bin/false\n\nhplip:x:113:7:HPLIP system user,,,:/var/run/hplip:/bin/false\n\ngdm:x:114:120:Gnome Display Manager:/var/lib/gdm:/bin/false\n\npuppet:x:115:122:Puppet configuration management daemon,,,:/var/lib/puppet:/bin/false\n\nntp:x:116:123::/home/ntp:/bin/false\n\npostfix:x:117:124::/var/spool/postfix:/bin/false\n\nstatd:x:118:65534::/var/lib/nfs:/bin/false\n\nsshd:x:119:65534::/var/run/sshd:/bin/false\n\ntss:x:109:127::/var/lib/tpm:/usr/sbin/nologin\n\ndistccd:x:120:65534::/:/bin/false\n\nx20:x:903:65534::/nonexistent:/bin/false\n\nobjfs:x:904:65534::/usr/local/google/objfs:/bin/sh\n\nsrcfs:x:905:65534::/nonexistent:/bin/false\n\ncrudd:x:906:65534::/nonexistent:/bin/false\n\n", - "func_name": "", - "stack_to_render": [], - "globals": { - "line": "crudd:x:906:65534::/nonexistent:/bin/false\n" - }, + "globals": {}, "heap": {}, "line": 1, - "event": "return" + "event": "exception" } ] } From 9eae95aef3cc134e2f931d90e8c81ee274bfa915 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 22:57:45 -0700 Subject: [PATCH 158/502] wow what a gross-ass hack, wtf --- PyTutorGAE/pg_logger.py | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 121ecbe9f..0b98dc3a7 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -54,10 +54,20 @@ #DEBUG = False DEBUG = True -BUILTIN_IMPORT = __builtins__['__import__'] # simple sandboxing scheme: + +# ugh, I can't figure out why in Python 2, __builtins__ seems to +# be a dict, but in Python 3, __builtins__ seems to be a module, +# so just handle both cases ... UGLY! +if type(__builtins__) is dict: + BUILTIN_IMPORT = __builtins__['__import__'] +else: + assert type(__builtins__) is types.ModuleType + BUILTIN_IMPORT = __builtins__.__import__ + + # whitelist of module imports ALLOWED_MODULE_IMPORTS = ('math', 'random', 'datetime', 'functools', 'operator', 'string', @@ -583,7 +593,19 @@ def _runscript(self, script_str): # ok, let's try to sorta 'sandbox' the user script by not # allowing certain potentially dangerous operations. user_builtins = {} - for (k, v) in __builtins__.iteritems(): + + # ugh, I can't figure out why in Python 2, __builtins__ seems to + # be a dict, but in Python 3, __builtins__ seems to be a module, + # so just handle both cases ... UGLY! + if type(__builtins__) is dict: + builtin_items = __builtins__.items() + else: + assert type(__builtins__) is types.ModuleType + builtin_items = [] + for k in dir(__builtins__): + builtin_items.append((k, getattr(__builtins__, k))) + + for (k, v) in builtin_items: if k in BANNED_BUILTINS: continue elif k == '__import__': From bc21615cffdd3c97fcc1be6c47cbad19e96bdf28 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 23:03:01 -0700 Subject: [PATCH 159/502] try to get lambdas working in python 2 and 3 --- PyTutorGAE/pg_encoder.py | 2 +- PyTutorGAE/pg_logger.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py index d1a33a8d1..88e1a3867 100644 --- a/PyTutorGAE/pg_encoder.py +++ b/PyTutorGAE/pg_encoder.py @@ -169,7 +169,7 @@ def encode(self, dat): func_name = get_name(dat) if func_name == '': - func_name = u"\u03BB" # Unicode lambda :) + func_name = "\u03BB" if is_python3 else u"\u03BB" pretty_name = func_name + '(' + ', '.join(printed_args) + ')' new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later elif self.is_class(dat) or self.is_instance(dat): diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index 0b98dc3a7..a1d611fed 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -323,7 +323,7 @@ def create_encoded_stack_entry(cur_frame): # special case for lambdas - grab their line numbers too (or not) if cur_name == '': # Unicode lambda :) - cur_name = u"\u03BB" # + ':line' + str(cur_frame.f_code.co_firstlineno) + cur_name = "\u03BB" if is_python3 else u"\u03BB" elif cur_name == '': cur_name = 'unnamed function' From 9cbdcc313113f36fed57779dcd4fa4093c3df5a6 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 23:22:04 -0700 Subject: [PATCH 160/502] argh python 3333333 --- PyTutorGAE/pg_encoder.py | 2 +- PyTutorGAE/pg_logger.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py index 88e1a3867..3350fb3e1 100644 --- a/PyTutorGAE/pg_encoder.py +++ b/PyTutorGAE/pg_encoder.py @@ -169,7 +169,7 @@ def encode(self, dat): func_name = get_name(dat) if func_name == '': - func_name = "\u03BB" if is_python3 else u"\u03BB" + func_name = u"\u03BB" # for Python 3, eliminate the u prefix from the Unicode string pretty_name = func_name + '(' + ', '.join(printed_args) + ')' new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later elif self.is_class(dat) or self.is_instance(dat): diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index a1d611fed..e8cb80f99 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -323,7 +323,7 @@ def create_encoded_stack_entry(cur_frame): # special case for lambdas - grab their line numbers too (or not) if cur_name == '': # Unicode lambda :) - cur_name = "\u03BB" if is_python3 else u"\u03BB" + cur_name = u"\u03BB" # for Python 3, eliminate the u prefix from the Unicode string elif cur_name == '': cur_name = 'unnamed function' From 68c96e6ea127fc15a23b735c5885475a5aaa49e5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 23:34:56 -0700 Subject: [PATCH 161/502] don't do anything special with lambdas on backend; instead render them specially in the js frontend --- PyTutorGAE/js/pytutor.js | 9 +++++++-- PyTutorGAE/pg_encoder.py | 2 -- PyTutorGAE/pg_logger.py | 6 +----- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 0385fc3a1..966446f60 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1512,7 +1512,8 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { else if (obj[0] == 'FUNCTION') { assert(obj.length == 3); - var funcName = htmlspecialchars(obj[1]); // for displaying weird names like '' + // pretty-print lambdas and display other weird characters: + var funcName = htmlspecialchars(obj[1].replace('', 'λ')); var parentFrameID = obj[2]; // optional if (parentFrameID) { @@ -1704,7 +1705,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .append('div') .attr('class', 'stackFrameHeader') .html(function(frame, i) { - var funcName = htmlspecialchars(frame.func_name); // might contain '<' or '>' for weird names like + + // pretty-print lambdas and display other weird characters + // (might contain '<' or '>' for weird names like ) + var funcName = htmlspecialchars(frame.func_name.replace('', 'λ')); + var headerLabel = funcName + '()'; // only display if you're someone's parent diff --git a/PyTutorGAE/pg_encoder.py b/PyTutorGAE/pg_encoder.py index 3350fb3e1..8199e1cb9 100644 --- a/PyTutorGAE/pg_encoder.py +++ b/PyTutorGAE/pg_encoder.py @@ -168,8 +168,6 @@ def encode(self, dat): printed_args.extend(['**' + e for e in argspec.keywords]) func_name = get_name(dat) - if func_name == '': - func_name = u"\u03BB" # for Python 3, eliminate the u prefix from the Unicode string pretty_name = func_name + '(' + ', '.join(printed_args) + ')' new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later elif self.is_class(dat) or self.is_instance(dat): diff --git a/PyTutorGAE/pg_logger.py b/PyTutorGAE/pg_logger.py index e8cb80f99..ec8390ef3 100644 --- a/PyTutorGAE/pg_logger.py +++ b/PyTutorGAE/pg_logger.py @@ -320,11 +320,7 @@ def create_encoded_stack_entry(cur_frame): cur_name = cur_frame.f_code.co_name - # special case for lambdas - grab their line numbers too (or not) - if cur_name == '': - # Unicode lambda :) - cur_name = u"\u03BB" # for Python 3, eliminate the u prefix from the Unicode string - elif cur_name == '': + if cur_name == '': cur_name = 'unnamed function' # encode in a JSON-friendly format now, in order to prevent ill From a5f5e7937123d4cf370eac6aa1d480509a111128 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 22 Aug 2012 23:44:46 -0700 Subject: [PATCH 162/502] updated tests to reflect --- .../tests/backend-tests/john-compose.golden | 140 ++-- .../tests/backend-tests/lambda_1.golden | 324 ++++----- example-code/closures/closure5.golden | 358 +++++----- example-code/closures/lambda-param.golden | 24 +- example-code/map.golden | 138 ++-- example-code/sum.golden | 624 +++++++++--------- 6 files changed, 804 insertions(+), 804 deletions(-) diff --git a/PyTutorGAE/tests/backend-tests/john-compose.golden b/PyTutorGAE/tests/backend-tests/john-compose.golden index ef90915f2..9acb62b04 100644 --- a/PyTutorGAE/tests/backend-tests/john-compose.golden +++ b/PyTutorGAE/tests/backend-tests/john-compose.golden @@ -79,12 +79,12 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ] }, @@ -136,12 +136,12 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ] }, @@ -198,17 +198,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -270,17 +270,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -330,12 +330,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f2", + "unique_hash": "_f2", "ordered_varnames": [ "x" ] @@ -359,17 +359,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -419,12 +419,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f2", + "unique_hash": "_f2", "ordered_varnames": [ "x" ] @@ -448,17 +448,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -508,12 +508,12 @@ }, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f2", + "unique_hash": "_f2", "ordered_varnames": [ "x" ] @@ -525,10 +525,10 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x" ] @@ -552,17 +552,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -612,12 +612,12 @@ }, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f2", + "unique_hash": "_f2", "ordered_varnames": [ "x" ] @@ -629,10 +629,10 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x" ] @@ -656,17 +656,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -716,12 +716,12 @@ }, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f2", + "unique_hash": "_f2", "ordered_varnames": [ "x" ] @@ -734,10 +734,10 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x", "__return__" @@ -762,17 +762,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -822,12 +822,12 @@ }, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f2", + "unique_hash": "_f2", "ordered_varnames": [ "x" ] @@ -839,10 +839,10 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "\u03bb_f4", + "unique_hash": "_f4", "ordered_varnames": [ "x" ] @@ -866,17 +866,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -926,12 +926,12 @@ }, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f2", + "unique_hash": "_f2", "ordered_varnames": [ "x" ] @@ -943,10 +943,10 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "\u03bb_f4", + "unique_hash": "_f4", "ordered_varnames": [ "x" ] @@ -970,17 +970,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1030,12 +1030,12 @@ }, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f2", + "unique_hash": "_f2", "ordered_varnames": [ "x" ] @@ -1048,10 +1048,10 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [], - "unique_hash": "\u03bb_f4", + "unique_hash": "_f4", "ordered_varnames": [ "x", "__return__" @@ -1076,17 +1076,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1137,12 +1137,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f2", + "unique_hash": "_f2", "ordered_varnames": [ "x", "__return__" @@ -1167,17 +1167,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1241,17 +1241,17 @@ ], "2": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", null ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, diff --git a/PyTutorGAE/tests/backend-tests/lambda_1.golden b/PyTutorGAE/tests/backend-tests/lambda_1.golden index 913c30a55..329be1475 100644 --- a/PyTutorGAE/tests/backend-tests/lambda_1.golden +++ b/PyTutorGAE/tests/backend-tests/lambda_1.golden @@ -245,12 +245,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -333,12 +333,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -423,12 +423,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -515,12 +515,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -607,12 +607,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -682,12 +682,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x" ] @@ -716,12 +716,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -791,12 +791,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x" ] @@ -825,12 +825,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -901,12 +901,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x", "__return__" @@ -936,12 +936,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1028,12 +1028,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1103,12 +1103,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f4", + "unique_hash": "_f4", "ordered_varnames": [ "x" ] @@ -1137,12 +1137,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1212,12 +1212,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f4", + "unique_hash": "_f4", "ordered_varnames": [ "x" ] @@ -1246,12 +1246,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1322,12 +1322,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f4", + "unique_hash": "_f4", "ordered_varnames": [ "x", "__return__" @@ -1357,12 +1357,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1449,12 +1449,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1541,12 +1541,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1616,12 +1616,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f5", + "unique_hash": "_f5", "ordered_varnames": [ "x" ] @@ -1650,12 +1650,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1725,12 +1725,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f5", + "unique_hash": "_f5", "ordered_varnames": [ "x" ] @@ -1759,12 +1759,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1835,12 +1835,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f5", + "unique_hash": "_f5", "ordered_varnames": [ "x", "__return__" @@ -1870,12 +1870,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1962,12 +1962,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2037,12 +2037,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f6", + "unique_hash": "_f6", "ordered_varnames": [ "x" ] @@ -2071,12 +2071,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2146,12 +2146,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f6", + "unique_hash": "_f6", "ordered_varnames": [ "x" ] @@ -2180,12 +2180,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2256,12 +2256,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f6", + "unique_hash": "_f6", "ordered_varnames": [ "x", "__return__" @@ -2291,12 +2291,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2383,12 +2383,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2475,12 +2475,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2550,12 +2550,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f7", + "unique_hash": "_f7", "ordered_varnames": [ "x" ] @@ -2584,12 +2584,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2659,12 +2659,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f7", + "unique_hash": "_f7", "ordered_varnames": [ "x" ] @@ -2693,12 +2693,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2769,12 +2769,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f7", + "unique_hash": "_f7", "ordered_varnames": [ "x", "__return__" @@ -2804,12 +2804,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2896,12 +2896,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2971,12 +2971,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [ "x" ] @@ -3005,12 +3005,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3080,12 +3080,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [ "x" ] @@ -3114,12 +3114,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3190,12 +3190,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [ "x", "__return__" @@ -3225,12 +3225,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3317,12 +3317,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3409,12 +3409,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3484,12 +3484,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f9", + "unique_hash": "_f9", "ordered_varnames": [ "x" ] @@ -3518,12 +3518,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3593,12 +3593,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f9", + "unique_hash": "_f9", "ordered_varnames": [ "x" ] @@ -3627,12 +3627,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3703,12 +3703,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f9", + "unique_hash": "_f9", "ordered_varnames": [ "x", "__return__" @@ -3738,12 +3738,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3830,12 +3830,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3905,12 +3905,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f10", + "unique_hash": "_f10", "ordered_varnames": [ "x" ] @@ -3939,12 +3939,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4014,12 +4014,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f10", + "unique_hash": "_f10", "ordered_varnames": [ "x" ] @@ -4048,12 +4048,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4124,12 +4124,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f10", + "unique_hash": "_f10", "ordered_varnames": [ "x", "__return__" @@ -4159,12 +4159,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4251,12 +4251,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4343,12 +4343,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4418,12 +4418,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f11", + "unique_hash": "_f11", "ordered_varnames": [ "x" ] @@ -4452,12 +4452,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4527,12 +4527,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f11", + "unique_hash": "_f11", "ordered_varnames": [ "x" ] @@ -4561,12 +4561,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4637,12 +4637,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f11", + "unique_hash": "_f11", "ordered_varnames": [ "x", "__return__" @@ -4672,12 +4672,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4764,12 +4764,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4839,12 +4839,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f12", + "unique_hash": "_f12", "ordered_varnames": [ "x" ] @@ -4873,12 +4873,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4948,12 +4948,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f12", + "unique_hash": "_f12", "ordered_varnames": [ "x" ] @@ -4982,12 +4982,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5058,12 +5058,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f12", + "unique_hash": "_f12", "ordered_varnames": [ "x", "__return__" @@ -5093,12 +5093,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5185,12 +5185,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5277,12 +5277,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5371,12 +5371,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, diff --git a/example-code/closures/closure5.golden b/example-code/closures/closure5.golden index 95ed6ae75..037cbb077 100644 --- a/example-code/closures/closure5.golden +++ b/example-code/closures/closure5.golden @@ -213,7 +213,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ] }, @@ -277,7 +277,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ] }, @@ -356,7 +356,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ] }, @@ -435,7 +435,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ] }, @@ -519,7 +519,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -613,7 +613,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -623,7 +623,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -717,7 +717,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -727,7 +727,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -798,12 +798,12 @@ "encoded_locals": {}, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] } ], @@ -834,7 +834,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -844,7 +844,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -915,12 +915,12 @@ "encoded_locals": {}, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] } ], @@ -951,7 +951,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -961,7 +961,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -1032,12 +1032,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -1087,7 +1087,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -1097,7 +1097,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -1168,12 +1168,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -1223,7 +1223,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -1233,7 +1233,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -1304,12 +1304,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -1359,7 +1359,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -1369,7 +1369,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -1440,12 +1440,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -1514,7 +1514,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -1524,7 +1524,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -1595,12 +1595,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -1669,7 +1669,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -1679,7 +1679,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -1750,12 +1750,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -1824,7 +1824,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -1834,7 +1834,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -1905,12 +1905,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -1998,7 +1998,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -2008,7 +2008,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -2079,12 +2079,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -2172,7 +2172,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -2182,7 +2182,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -2253,12 +2253,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -2346,7 +2346,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -2356,7 +2356,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -2427,12 +2427,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -2539,7 +2539,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -2549,7 +2549,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -2620,12 +2620,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -2732,7 +2732,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -2742,7 +2742,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -2813,12 +2813,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -2925,7 +2925,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -2935,7 +2935,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -3006,12 +3006,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -3120,7 +3120,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -3130,7 +3130,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -3201,12 +3201,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -3296,7 +3296,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -3306,7 +3306,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -3377,12 +3377,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -3453,7 +3453,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -3463,7 +3463,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -3534,12 +3534,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [] }, { @@ -3591,7 +3591,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -3601,7 +3601,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -3674,12 +3674,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "__return__" ] @@ -3712,7 +3712,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -3722,7 +3722,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -3793,12 +3793,12 @@ "encoded_locals": {}, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] } ], @@ -3829,7 +3829,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -3839,7 +3839,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -3910,12 +3910,12 @@ "encoded_locals": {}, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] } ], @@ -3946,7 +3946,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -3956,7 +3956,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -4027,12 +4027,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -4082,7 +4082,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -4092,7 +4092,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -4163,12 +4163,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -4218,7 +4218,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -4228,7 +4228,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -4299,12 +4299,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -4354,7 +4354,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -4364,7 +4364,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -4435,12 +4435,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -4509,7 +4509,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -4519,7 +4519,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -4590,12 +4590,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -4664,7 +4664,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -4674,7 +4674,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -4745,12 +4745,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -4819,7 +4819,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -4829,7 +4829,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -4900,12 +4900,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -4993,7 +4993,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -5003,7 +5003,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -5074,12 +5074,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -5167,7 +5167,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -5177,7 +5177,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -5248,12 +5248,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -5341,7 +5341,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -5351,7 +5351,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -5422,12 +5422,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -5534,7 +5534,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -5544,7 +5544,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -5615,12 +5615,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -5727,7 +5727,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -5737,7 +5737,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -5808,12 +5808,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -5920,7 +5920,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -5930,7 +5930,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -6001,12 +6001,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -6132,7 +6132,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -6142,7 +6142,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -6213,12 +6213,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -6344,7 +6344,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -6354,7 +6354,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -6425,12 +6425,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -6556,7 +6556,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -6566,7 +6566,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -6637,12 +6637,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -6770,7 +6770,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -6780,7 +6780,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -6851,12 +6851,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -6965,7 +6965,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -6975,7 +6975,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -7046,12 +7046,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -7141,7 +7141,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -7151,7 +7151,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -7222,12 +7222,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -7298,7 +7298,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -7308,7 +7308,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -7379,12 +7379,12 @@ "encoded_locals": {}, "is_highlighted": false, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [] }, { @@ -7436,7 +7436,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -7446,7 +7446,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -7519,12 +7519,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 2 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [ "__return__" ] @@ -7557,7 +7557,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -7567,7 +7567,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, @@ -7663,7 +7663,7 @@ ], "3": [ "FUNCTION", - "\u03bb()", + "()", 1 ], "4": [ @@ -7673,7 +7673,7 @@ ], "5": [ "FUNCTION", - "\u03bb()", + "()", 2 ] }, diff --git a/example-code/closures/lambda-param.golden b/example-code/closures/lambda-param.golden index 1ff7a8385..aaec15a9c 100644 --- a/example-code/closures/lambda-param.golden +++ b/example-code/closures/lambda-param.golden @@ -230,7 +230,7 @@ ], "3": [ "FUNCTION", - "\u03bb(y)", + "(y)", 1 ] }, @@ -302,7 +302,7 @@ ], "3": [ "FUNCTION", - "\u03bb(y)", + "(y)", 1 ] }, @@ -357,12 +357,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "y" ] @@ -391,7 +391,7 @@ ], "3": [ "FUNCTION", - "\u03bb(y)", + "(y)", 1 ] }, @@ -446,12 +446,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "y" ] @@ -480,7 +480,7 @@ ], "3": [ "FUNCTION", - "\u03bb(y)", + "(y)", 1 ] }, @@ -536,12 +536,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "y", "__return__" @@ -571,7 +571,7 @@ ], "3": [ "FUNCTION", - "\u03bb(y)", + "(y)", 1 ] }, @@ -645,7 +645,7 @@ ], "3": [ "FUNCTION", - "\u03bb(y)", + "(y)", 1 ] }, diff --git a/example-code/map.golden b/example-code/map.golden index 0418b1935..e0181c7ec 100644 --- a/example-code/map.golden +++ b/example-code/map.golden @@ -329,7 +329,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -422,7 +422,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -515,7 +515,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -579,12 +579,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x" ] @@ -625,7 +625,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -689,12 +689,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x" ] @@ -735,7 +735,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -800,12 +800,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x", "__return__" @@ -847,7 +847,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -963,7 +963,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -1086,7 +1086,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -1209,7 +1209,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -1303,12 +1303,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f5", + "unique_hash": "_f5", "ordered_varnames": [ "x" ] @@ -1349,7 +1349,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -1443,12 +1443,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f5", + "unique_hash": "_f5", "ordered_varnames": [ "x" ] @@ -1489,7 +1489,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -1584,12 +1584,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f5", + "unique_hash": "_f5", "ordered_varnames": [ "x", "__return__" @@ -1631,7 +1631,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -1777,7 +1777,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -1929,7 +1929,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -2081,7 +2081,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -2204,12 +2204,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f7", + "unique_hash": "_f7", "ordered_varnames": [ "x" ] @@ -2250,7 +2250,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -2373,12 +2373,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f7", + "unique_hash": "_f7", "ordered_varnames": [ "x" ] @@ -2419,7 +2419,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -2543,12 +2543,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f7", + "unique_hash": "_f7", "ordered_varnames": [ "x", "__return__" @@ -2590,7 +2590,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -2765,7 +2765,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -2945,7 +2945,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -3125,7 +3125,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -3276,12 +3276,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f9", + "unique_hash": "_f9", "ordered_varnames": [ "x" ] @@ -3322,7 +3322,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -3473,12 +3473,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f9", + "unique_hash": "_f9", "ordered_varnames": [ "x" ] @@ -3519,7 +3519,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -3671,12 +3671,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f9", + "unique_hash": "_f9", "ordered_varnames": [ "x", "__return__" @@ -3718,7 +3718,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -3921,7 +3921,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -4128,7 +4128,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -4335,7 +4335,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -4513,12 +4513,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f11", + "unique_hash": "_f11", "ordered_varnames": [ "x" ] @@ -4559,7 +4559,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -4737,12 +4737,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f11", + "unique_hash": "_f11", "ordered_varnames": [ "x" ] @@ -4783,7 +4783,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -4962,12 +4962,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f11", + "unique_hash": "_f11", "ordered_varnames": [ "x", "__return__" @@ -5009,7 +5009,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -5239,7 +5239,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -5472,7 +5472,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -5705,7 +5705,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -5943,7 +5943,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -6161,7 +6161,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -6354,7 +6354,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -6521,7 +6521,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -6661,7 +6661,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "5": [ @@ -6773,7 +6773,7 @@ ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "15": [ diff --git a/example-code/sum.golden b/example-code/sum.golden index ba7fd8dab..f216f1ac6 100644 --- a/example-code/sum.golden +++ b/example-code/sum.golden @@ -245,12 +245,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -333,12 +333,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -423,12 +423,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -515,12 +515,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -607,12 +607,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -682,12 +682,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x" ] @@ -716,12 +716,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -791,12 +791,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x" ] @@ -825,12 +825,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -901,12 +901,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f3", + "unique_hash": "_f3", "ordered_varnames": [ "x", "__return__" @@ -936,12 +936,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1028,12 +1028,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1103,12 +1103,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f4", + "unique_hash": "_f4", "ordered_varnames": [ "x" ] @@ -1137,12 +1137,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1212,12 +1212,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f4", + "unique_hash": "_f4", "ordered_varnames": [ "x" ] @@ -1246,12 +1246,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1322,12 +1322,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f4", + "unique_hash": "_f4", "ordered_varnames": [ "x", "__return__" @@ -1357,12 +1357,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1449,12 +1449,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1541,12 +1541,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1616,12 +1616,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f5", + "unique_hash": "_f5", "ordered_varnames": [ "x" ] @@ -1650,12 +1650,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1725,12 +1725,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f5", + "unique_hash": "_f5", "ordered_varnames": [ "x" ] @@ -1759,12 +1759,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1835,12 +1835,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f5", + "unique_hash": "_f5", "ordered_varnames": [ "x", "__return__" @@ -1870,12 +1870,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -1962,12 +1962,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2037,12 +2037,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f6", + "unique_hash": "_f6", "ordered_varnames": [ "x" ] @@ -2071,12 +2071,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2146,12 +2146,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f6", + "unique_hash": "_f6", "ordered_varnames": [ "x" ] @@ -2180,12 +2180,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2256,12 +2256,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f6", + "unique_hash": "_f6", "ordered_varnames": [ "x", "__return__" @@ -2291,12 +2291,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2383,12 +2383,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2475,12 +2475,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2550,12 +2550,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f7", + "unique_hash": "_f7", "ordered_varnames": [ "x" ] @@ -2584,12 +2584,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2659,12 +2659,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f7", + "unique_hash": "_f7", "ordered_varnames": [ "x" ] @@ -2693,12 +2693,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2769,12 +2769,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f7", + "unique_hash": "_f7", "ordered_varnames": [ "x", "__return__" @@ -2804,12 +2804,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2896,12 +2896,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -2971,12 +2971,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [ "x" ] @@ -3005,12 +3005,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3080,12 +3080,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [ "x" ] @@ -3114,12 +3114,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3190,12 +3190,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f8", + "unique_hash": "_f8", "ordered_varnames": [ "x", "__return__" @@ -3225,12 +3225,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3317,12 +3317,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3409,12 +3409,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3484,12 +3484,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f9", + "unique_hash": "_f9", "ordered_varnames": [ "x" ] @@ -3518,12 +3518,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3593,12 +3593,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f9", + "unique_hash": "_f9", "ordered_varnames": [ "x" ] @@ -3627,12 +3627,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3703,12 +3703,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f9", + "unique_hash": "_f9", "ordered_varnames": [ "x", "__return__" @@ -3738,12 +3738,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3830,12 +3830,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -3905,12 +3905,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f10", + "unique_hash": "_f10", "ordered_varnames": [ "x" ] @@ -3939,12 +3939,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4014,12 +4014,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f10", + "unique_hash": "_f10", "ordered_varnames": [ "x" ] @@ -4048,12 +4048,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4124,12 +4124,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f10", + "unique_hash": "_f10", "ordered_varnames": [ "x", "__return__" @@ -4159,12 +4159,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4251,12 +4251,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4343,12 +4343,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4418,12 +4418,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f11", + "unique_hash": "_f11", "ordered_varnames": [ "x" ] @@ -4452,12 +4452,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4527,12 +4527,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f11", + "unique_hash": "_f11", "ordered_varnames": [ "x" ] @@ -4561,12 +4561,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4637,12 +4637,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f11", + "unique_hash": "_f11", "ordered_varnames": [ "x", "__return__" @@ -4672,12 +4672,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4764,12 +4764,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4839,12 +4839,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f12", + "unique_hash": "_f12", "ordered_varnames": [ "x" ] @@ -4873,12 +4873,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -4948,12 +4948,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f12", + "unique_hash": "_f12", "ordered_varnames": [ "x" ] @@ -4982,12 +4982,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5058,12 +5058,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f12", + "unique_hash": "_f12", "ordered_varnames": [ "x", "__return__" @@ -5093,12 +5093,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5185,12 +5185,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5277,12 +5277,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5352,12 +5352,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f13", + "unique_hash": "_f13", "ordered_varnames": [ "x" ] @@ -5386,12 +5386,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5461,12 +5461,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f13", + "unique_hash": "_f13", "ordered_varnames": [ "x" ] @@ -5495,12 +5495,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5571,12 +5571,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f13", + "unique_hash": "_f13", "ordered_varnames": [ "x", "__return__" @@ -5606,12 +5606,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5698,12 +5698,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5773,12 +5773,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f14", + "unique_hash": "_f14", "ordered_varnames": [ "x" ] @@ -5807,12 +5807,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5882,12 +5882,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f14", + "unique_hash": "_f14", "ordered_varnames": [ "x" ] @@ -5916,12 +5916,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -5992,12 +5992,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f14", + "unique_hash": "_f14", "ordered_varnames": [ "x", "__return__" @@ -6027,12 +6027,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -6119,12 +6119,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -6211,12 +6211,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -6286,12 +6286,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f15", + "unique_hash": "_f15", "ordered_varnames": [ "x" ] @@ -6320,12 +6320,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -6395,12 +6395,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f15", + "unique_hash": "_f15", "ordered_varnames": [ "x" ] @@ -6429,12 +6429,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -6505,12 +6505,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f15", + "unique_hash": "_f15", "ordered_varnames": [ "x", "__return__" @@ -6540,12 +6540,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -6632,12 +6632,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -6707,12 +6707,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f16", + "unique_hash": "_f16", "ordered_varnames": [ "x" ] @@ -6741,12 +6741,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -6816,12 +6816,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f16", + "unique_hash": "_f16", "ordered_varnames": [ "x" ] @@ -6850,12 +6850,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -6926,12 +6926,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f16", + "unique_hash": "_f16", "ordered_varnames": [ "x", "__return__" @@ -6961,12 +6961,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7053,12 +7053,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7145,12 +7145,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7220,12 +7220,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f17", + "unique_hash": "_f17", "ordered_varnames": [ "x" ] @@ -7254,12 +7254,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7329,12 +7329,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f17", + "unique_hash": "_f17", "ordered_varnames": [ "x" ] @@ -7363,12 +7363,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7439,12 +7439,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f17", + "unique_hash": "_f17", "ordered_varnames": [ "x", "__return__" @@ -7474,12 +7474,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7566,12 +7566,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7641,12 +7641,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f18", + "unique_hash": "_f18", "ordered_varnames": [ "x" ] @@ -7675,12 +7675,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7750,12 +7750,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f18", + "unique_hash": "_f18", "ordered_varnames": [ "x" ] @@ -7784,12 +7784,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7860,12 +7860,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f18", + "unique_hash": "_f18", "ordered_varnames": [ "x", "__return__" @@ -7895,12 +7895,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -7987,12 +7987,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -8079,12 +8079,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -8154,12 +8154,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f19", + "unique_hash": "_f19", "ordered_varnames": [ "x" ] @@ -8188,12 +8188,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -8263,12 +8263,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f19", + "unique_hash": "_f19", "ordered_varnames": [ "x" ] @@ -8297,12 +8297,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -8373,12 +8373,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f19", + "unique_hash": "_f19", "ordered_varnames": [ "x", "__return__" @@ -8408,12 +8408,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -8500,12 +8500,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -8575,12 +8575,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f20", + "unique_hash": "_f20", "ordered_varnames": [ "x" ] @@ -8609,12 +8609,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -8684,12 +8684,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f20", + "unique_hash": "_f20", "ordered_varnames": [ "x" ] @@ -8718,12 +8718,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -8794,12 +8794,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f20", + "unique_hash": "_f20", "ordered_varnames": [ "x", "__return__" @@ -8829,12 +8829,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -8921,12 +8921,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9013,12 +9013,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9088,12 +9088,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f21", + "unique_hash": "_f21", "ordered_varnames": [ "x" ] @@ -9122,12 +9122,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9197,12 +9197,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f21", + "unique_hash": "_f21", "ordered_varnames": [ "x" ] @@ -9231,12 +9231,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9307,12 +9307,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f21", + "unique_hash": "_f21", "ordered_varnames": [ "x", "__return__" @@ -9342,12 +9342,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9434,12 +9434,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9509,12 +9509,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f22", + "unique_hash": "_f22", "ordered_varnames": [ "x" ] @@ -9543,12 +9543,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9618,12 +9618,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f22", + "unique_hash": "_f22", "ordered_varnames": [ "x" ] @@ -9652,12 +9652,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9728,12 +9728,12 @@ }, "is_highlighted": true, "is_parent": false, - "func_name": "\u03bb", + "func_name": "", "is_zombie": false, "parent_frame_id_list": [ 1 ], - "unique_hash": "\u03bb_f22", + "unique_hash": "_f22", "ordered_varnames": [ "x", "__return__" @@ -9763,12 +9763,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9855,12 +9855,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -9947,12 +9947,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, @@ -10041,12 +10041,12 @@ ], "3": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ], "4": [ "FUNCTION", - "\u03bb(x)", + "(x)", 1 ] }, From 91d41453fd3c2cc41dadcb8c74b52524d9f8cd51 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 23 Aug 2012 00:13:58 -0700 Subject: [PATCH 163/502] more --- PyTutorGAE/logger/gae_logger.py | 4 +- .../tests/backend-tests/pie-test.golden | 91 +++++++++++++++++++ PyTutorGAE/tests/backend-tests/pie-test.txt | 3 + 3 files changed, 97 insertions(+), 1 deletion(-) create mode 100644 PyTutorGAE/tests/backend-tests/pie-test.golden create mode 100644 PyTutorGAE/tests/backend-tests/pie-test.txt diff --git a/PyTutorGAE/logger/gae_logger.py b/PyTutorGAE/logger/gae_logger.py index ef1c083f0..77b59c172 100644 --- a/PyTutorGAE/logger/gae_logger.py +++ b/PyTutorGAE/logger/gae_logger.py @@ -9,12 +9,14 @@ class VisualizerRequest(db.Model): cumulative_mode = db.BooleanProperty(requred=True) user_ip_addr = db.StringProperty(required=True) http_referer = db.StringProperty(required=True) + app_id = db.StringProperty(required=True) request_timestamp = db.DateTimeProperty(auto_now_add=True) # always set timestamp to NOW! x = VisualizerRequest(user_script=db.Text(u'print "hello world"\n', encoding='utf_8'), cumulative_mode=True user_ip_addr='18.239.4.100', - http_referer='http://www.google.com/?magic-search') + http_referer='http://www.google.com/?magic-search', + app_id='pgbovine test') x.put() diff --git a/PyTutorGAE/tests/backend-tests/pie-test.golden b/PyTutorGAE/tests/backend-tests/pie-test.golden new file mode 100644 index 000000000..c595719af --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/pie-test.golden @@ -0,0 +1,91 @@ +{ + "code": "import operator\nfrom math import pi, e\npie = operator.add(pi, e)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "operator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator", + "pi", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ], + "pi": 3.1416, + "e": 2.7183 + }, + "heap": { + "1": [ + "module", + "operator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator", + "pi", + "e", + "pie" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ], + "pi": 3.1416, + "e": 2.7183, + "pie": 5.8599 + }, + "heap": { + "1": [ + "module", + "operator" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/pie-test.txt b/PyTutorGAE/tests/backend-tests/pie-test.txt new file mode 100644 index 000000000..a73f77ec2 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/pie-test.txt @@ -0,0 +1,3 @@ +import operator +from math import pi, e +pie = operator.add(pi, e) From e028b14f4757fdc11e3d98018df41cb6be7448fb Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 23 Aug 2012 10:48:59 -0700 Subject: [PATCH 164/502] more robust lambda fix --- PyTutorGAE/js/pytutor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 966446f60..859fcbca2 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1513,7 +1513,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { assert(obj.length == 3); // pretty-print lambdas and display other weird characters: - var funcName = htmlspecialchars(obj[1].replace('', 'λ')); + var funcName = htmlspecialchars(obj[1]).replace('<lambda>', 'λ'); var parentFrameID = obj[2]; // optional if (parentFrameID) { @@ -1708,7 +1708,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // pretty-print lambdas and display other weird characters // (might contain '<' or '>' for weird names like ) - var funcName = htmlspecialchars(frame.func_name.replace('', 'λ')); + var funcName = htmlspecialchars(frame.func_name).replace('<lambda>', 'λ'); var headerLabel = funcName + '()'; From 4fb1fb801ee0e80dd9e1ef6bc405bebd633ae15e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 23 Aug 2012 11:00:38 -0700 Subject: [PATCH 165/502] made web_exec.py more robust w.r.t. cumulative_mode --- PyTutorGAE/web_exec.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/web_exec.py b/PyTutorGAE/web_exec.py index f9b6a523a..3afedc14c 100644 --- a/PyTutorGAE/web_exec.py +++ b/PyTutorGAE/web_exec.py @@ -16,12 +16,18 @@ def cgi_finalizer(input_code, output_trace): print(json_output) +cumulative_mode = False + +# If you pass in a filename as an argument, then process script from that file ... if len(sys.argv) > 1: user_script = open(sys.argv[1]).read() + +# Otherwise act like a CGI script ... else: form = cgi.FieldStorage() user_script = form['user_script'].value - # convert from string to a Python boolean ... - cumulative_mode = (form['cumulative_mode'].value == 'true') + if 'cumulative_mode' in form: + # convert from string to a Python boolean ... + cumulative_mode = (form['cumulative_mode'].value == 'true') pg_logger.exec_script_str(user_script, cumulative_mode, cgi_finalizer) From 7c268b8f0ddefb1a64ee747e1cba93d796af4222 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 23 Aug 2012 11:26:51 -0700 Subject: [PATCH 166/502] added custom query logging code using sqlite --- PyTutorGAE/create_log_db.py | 27 +++++++++++++++++++++ PyTutorGAE/web_exec.py | 47 +++++++++++++++++++++++++++++++++++-- 2 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 PyTutorGAE/create_log_db.py diff --git a/PyTutorGAE/create_log_db.py b/PyTutorGAE/create_log_db.py new file mode 100644 index 000000000..d798c2fa8 --- /dev/null +++ b/PyTutorGAE/create_log_db.py @@ -0,0 +1,27 @@ +# Setup sqlite database to support query logging from web_exec.py + +import os, sqlite + +DB_FILE = 'opt-query-log.sqlite3' + +def create_db(): + con = sqlite3.connect(DB_FILE) + cur = con.cursor() + + cur.execute('''CREATE TABLE query_log + (id INTEGER PRIMARY KEY, + timestamp TEXT, + ip_addr TEXT, + http_user_agent TEXT, + http_referer TEXT, + user_script TEXT, + cumulative_mode INTEGER''') + con.commit() + cur.close() + + +if __name__ == "__main__": + assert not os.path.exists(DB_FILE) + create_db() + print 'Created', DB_FILE + diff --git a/PyTutorGAE/web_exec.py b/PyTutorGAE/web_exec.py index 3afedc14c..ebc4249c5 100644 --- a/PyTutorGAE/web_exec.py +++ b/PyTutorGAE/web_exec.py @@ -1,6 +1,16 @@ # -# Minimal CGI script for Online Python Tutor (v3). +# Minimal CGI script for Online Python Tutor (v3), tested under Python 2 and 3 + +# If you want to run this script, then you'll need to change the +# shebang #! line at the top of this file to point to your system's Python. +# +# Also, check CGI execute permission in your script directory. +# You might need to create an .htaccess file like the following: +# +# Options +ExecCGI +# AddHandler cgi-script .py + import cgi import json @@ -8,10 +18,41 @@ import sys +# set to true if you want to log queries in DB_FILE +LOG_QUERIES = True + +if LOG_QUERIES: + import os, datetime, create_log_db + + def cgi_finalizer(input_code, output_trace): """Write JSON output for js/pytutor.js as a CGI result.""" ret = dict(code=input_code, trace=output_trace) json_output = json.dumps(ret, indent=None) # use indent=None for most compact repr + + if LOG_QUERIES: + # just to be paranoid, don't croak the whole program just + # because there's some error in logging it to the database + try: + # log queries into sqlite database. + # make sure that your web server's account has write permissions + # in the current directory, for logging to work properly + con = sqlite3.connect(create_log_db.DB_FILE) + cur = con.cursor() + + cur.execute("INSERT INTO query_log VALUES (NULL, ?, ?, ?, ?, ?, ?)", + datetime.datetime.now(), + os.environ.get("REMOTE_ADDR", "N/A"), + os.environ.get("HTTP_USER_AGENT", "N/A"), + os.environ.get("HTTP_REFERER", "N/A"), + user_script, + int(cumulative_mode)) + con.commit() + cur.close() + except: + # this is bad form, but silently fail on error ... + pass + print("Content-type: text/plain; charset=iso-8859-1\n") print(json_output) @@ -22,7 +63,9 @@ def cgi_finalizer(input_code, output_trace): if len(sys.argv) > 1: user_script = open(sys.argv[1]).read() -# Otherwise act like a CGI script ... +# Otherwise act like a CGI script with parameters: +# user_script +# cumulative_mode else: form = cgi.FieldStorage() user_script = form['user_script'].value From cb326379857ed5b568da5b367a0a79281079935f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 23 Aug 2012 11:55:56 -0700 Subject: [PATCH 167/502] typo fixes --- PyTutorGAE/create_log_db.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/create_log_db.py b/PyTutorGAE/create_log_db.py index d798c2fa8..80f9b4545 100644 --- a/PyTutorGAE/create_log_db.py +++ b/PyTutorGAE/create_log_db.py @@ -1,6 +1,6 @@ # Setup sqlite database to support query logging from web_exec.py -import os, sqlite +import os, sqlite3 DB_FILE = 'opt-query-log.sqlite3' @@ -15,7 +15,7 @@ def create_db(): http_user_agent TEXT, http_referer TEXT, user_script TEXT, - cumulative_mode INTEGER''') + cumulative_mode INTEGER)''') con.commit() cur.close() From 415e1fbf852e12ff540c171950a43e83a315135d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 23 Aug 2012 14:47:32 -0700 Subject: [PATCH 168/502] unicode!!! --- PyTutorGAE/js/pytutor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 859fcbca2..eca5c3538 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1513,7 +1513,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { assert(obj.length == 3); // pretty-print lambdas and display other weird characters: - var funcName = htmlspecialchars(obj[1]).replace('<lambda>', 'λ'); + var funcName = htmlspecialchars(obj[1]).replace('<lambda>', '\u03bb'); var parentFrameID = obj[2]; // optional if (parentFrameID) { @@ -1708,7 +1708,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // pretty-print lambdas and display other weird characters // (might contain '<' or '>' for weird names like ) - var funcName = htmlspecialchars(frame.func_name).replace('<lambda>', 'λ'); + var funcName = htmlspecialchars(frame.func_name).replace('<lambda>', '\u03bb'); var headerLabel = funcName + '()'; From df314b62e1f52f82d363ba690091b0d2e3b42dfe Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 23 Aug 2012 15:45:49 -0700 Subject: [PATCH 169/502] merge in john's changes to the logging code --- PyTutorGAE/create_log_db.py | 2 +- PyTutorGAE/web_exec.py | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/PyTutorGAE/create_log_db.py b/PyTutorGAE/create_log_db.py index 80f9b4545..52e2f13f8 100644 --- a/PyTutorGAE/create_log_db.py +++ b/PyTutorGAE/create_log_db.py @@ -23,5 +23,5 @@ def create_db(): if __name__ == "__main__": assert not os.path.exists(DB_FILE) create_db() - print 'Created', DB_FILE + print('Created ' + DB_FILE) diff --git a/PyTutorGAE/web_exec.py b/PyTutorGAE/web_exec.py index ebc4249c5..4ee89a00d 100644 --- a/PyTutorGAE/web_exec.py +++ b/PyTutorGAE/web_exec.py @@ -22,7 +22,7 @@ LOG_QUERIES = True if LOG_QUERIES: - import os, datetime, create_log_db + import os, datetime, create_log_db, sqlite3 def cgi_finalizer(input_code, output_trace): @@ -41,17 +41,17 @@ def cgi_finalizer(input_code, output_trace): cur = con.cursor() cur.execute("INSERT INTO query_log VALUES (NULL, ?, ?, ?, ?, ?, ?)", - datetime.datetime.now(), - os.environ.get("REMOTE_ADDR", "N/A"), - os.environ.get("HTTP_USER_AGENT", "N/A"), - os.environ.get("HTTP_REFERER", "N/A"), - user_script, - int(cumulative_mode)) + (datetime.datetime.now(), + os.environ.get("REMOTE_ADDR", "N/A"), + os.environ.get("HTTP_USER_AGENT", "N/A"), + os.environ.get("HTTP_REFERER", "N/A"), + user_script, + int(cumulative_mode))) con.commit() cur.close() - except: + except Exception as err: # this is bad form, but silently fail on error ... - pass + print(err) print("Content-type: text/plain; charset=iso-8859-1\n") print(json_output) From 940983f5d97e9776c15cd53dac1c51e588255b62 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 23 Aug 2012 22:53:30 -0700 Subject: [PATCH 170/502] properly render tab characters in output code display --- PyTutorGAE/js/pytutor.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index eca5c3538..249848892 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -1950,6 +1950,9 @@ function htmlspecialchars(str) { // replace spaces: str = str.replace(/ /g, " "); + + // replace tab as four spaces: + str = str.replace(/\t/g, "    "); } return str; } From 661e83420e72d06b827298e02d631c021fa779db Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 25 Aug 2012 11:24:55 -0700 Subject: [PATCH 171/502] added a scheme-like test --- .../tests/backend-tests/ling-scheme-1.golden | 4020 +++++++++++++++++ .../tests/backend-tests/ling-scheme-1.txt | 7 + 2 files changed, 4027 insertions(+) create mode 100644 PyTutorGAE/tests/backend-tests/ling-scheme-1.golden create mode 100644 PyTutorGAE/tests/backend-tests/ling-scheme-1.txt diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-1.golden b/PyTutorGAE/tests/backend-tests/ling-scheme-1.golden new file mode 100644 index 000000000..a775366a0 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/ling-scheme-1.golden @@ -0,0 +1,4020 @@ +{ + "code": "def repeat(f, n):\n if n == 0:\n return []\n else:\n return [f()] + repeat(f, n - 1)\n\nrepeat(lambda : 5, 5)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "3": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "4": [ + "LIST", + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "5": [ + "LIST", + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "6": [ + "LIST", + 5, + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "7": [ + "LIST", + 5, + 5, + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 8 + ], + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "8": [ + "LIST", + 5, + 5, + 5, + 5, + 5 + ], + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-1.txt b/PyTutorGAE/tests/backend-tests/ling-scheme-1.txt new file mode 100644 index 000000000..254102edc --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/ling-scheme-1.txt @@ -0,0 +1,7 @@ +def repeat(f, n): + if n == 0: + return [] + else: + return [f()] + repeat(f, n - 1) + +repeat(lambda : 5, 5) From 1a063e10202776e94151c465a93f02d1396fa9cb Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 25 Aug 2012 11:40:33 -0700 Subject: [PATCH 172/502] added more scheme-like tests --- .../tests/backend-tests/ling-scheme-2.golden | 3788 ++++++++ .../tests/backend-tests/ling-scheme-2.txt | 10 + .../tests/backend-tests/ling-scheme-3.golden | 8612 +++++++++++++++++ .../tests/backend-tests/ling-scheme-3.txt | 21 + 4 files changed, 12431 insertions(+) create mode 100644 PyTutorGAE/tests/backend-tests/ling-scheme-2.golden create mode 100644 PyTutorGAE/tests/backend-tests/ling-scheme-2.txt create mode 100644 PyTutorGAE/tests/backend-tests/ling-scheme-3.golden create mode 100644 PyTutorGAE/tests/backend-tests/ling-scheme-3.txt diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-2.golden b/PyTutorGAE/tests/backend-tests/ling-scheme-2.golden new file mode 100644 index 000000000..add7f461f --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/ling-scheme-2.golden @@ -0,0 +1,3788 @@ +{ + "code": "def iota(n):\n def loop(acc, k):\n if k == n:\n return list(reversed(acc))\n else:\n return loop([k] + acc, k + 1)\n return loop([], 0)\n\nresult = iota(5)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "__return__": [ + "REF", + 9 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "__return__": [ + "REF", + 9 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 9 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 9 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 9 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "__return__": [ + "REF", + 9 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "iota", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p_z", + "ordered_varnames": [ + "n", + "loop", + "__return__" + ] + } + ], + "globals": { + "result": [ + "REF", + 9 + ], + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-2.txt b/PyTutorGAE/tests/backend-tests/ling-scheme-2.txt new file mode 100644 index 000000000..b94897002 --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/ling-scheme-2.txt @@ -0,0 +1,10 @@ +def iota(n): + def loop(acc, k): + if k == n: + return list(reversed(acc)) + else: + return loop([k] + acc, k + 1) + return loop([], 0) + +result = iota(5) + diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-3.golden b/PyTutorGAE/tests/backend-tests/ling-scheme-3.golden new file mode 100644 index 000000000..be3b46e8e --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/ling-scheme-3.golden @@ -0,0 +1,8612 @@ +{ + "code": "def map(f, xs):\n if xs == []:\n return []\n else:\n return [f(xs[0])] + map(f, xs[1:])\n\ndef append(xs, ys):\n if xs == []:\n return ys\n else:\n return [xs[0]] + append(xs[1:], ys)\n\ndef pairs(xs):\n if xs == []:\n return []\n elif xs[1:] == []:\n return []\n else:\n return append(map(lambda x: [xs[0], x], xs[1:]), pairs(xs[1:]))\n\nresult = pairs([1, 2, 3])\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "map" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "7": [ + "LIST", + 1, + 2 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "9": [ + "LIST", + 1, + 3 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": [ + "REF", + 11 + ], + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ], + "11": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 12 + ], + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "9": [ + "LIST", + 1, + 3 + ], + "12": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 13 + ], + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + "x", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + "x", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "REF", + 17 + ], + "x": 3, + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + "x", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "17": [ + "LIST", + 2, + 3 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "18": [ + "LIST" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "18": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "18": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": [ + "REF", + 19 + ], + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "18": [ + "LIST" + ], + "19": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": [ + "REF", + 20 + ], + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "REF", + 22 + ], + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ], + "22": [ + "LIST" + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": [ + "REF", + 22 + ], + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": [ + "REF", + 27 + ], + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "27": [ + "LIST", + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "result": [ + "REF", + 28 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 21, + "event": "return" + } + ] +} diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-3.txt b/PyTutorGAE/tests/backend-tests/ling-scheme-3.txt new file mode 100644 index 000000000..8ae512cdb --- /dev/null +++ b/PyTutorGAE/tests/backend-tests/ling-scheme-3.txt @@ -0,0 +1,21 @@ +def map(f, xs): + if xs == []: + return [] + else: + return [f(xs[0])] + map(f, xs[1:]) + +def append(xs, ys): + if xs == []: + return ys + else: + return [xs[0]] + append(xs[1:], ys) + +def pairs(xs): + if xs == []: + return [] + elif xs[1:] == []: + return [] + else: + return append(map(lambda x: [xs[0], x], xs[1:]), pairs(xs[1:])) + +result = pairs([1, 2, 3]) From db8092ed42e1e66bc6baa61cd4dc63d275cad56b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 28 Aug 2012 14:29:11 -0700 Subject: [PATCH 173/502] prepare for CSS encapsulation work --- .../css/2012-08-29-CSS-encapsulation/README | 46 ++ .../papajohn-pytutor.css | 487 ++++++++++++++++++ 2 files changed, 533 insertions(+) create mode 100644 PyTutorGAE/css/2012-08-29-CSS-encapsulation/README create mode 100644 PyTutorGAE/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css diff --git a/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README b/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README new file mode 100644 index 000000000..870a0db74 --- /dev/null +++ b/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README @@ -0,0 +1,46 @@ +From me: + +I just thought of a possible solution for those nasty CSS clashes that +you guys are encountering: + +I could prefix all of my python tutor CSS rules with something like +div.ExecutionVisualizer. e.g., + +div.ExecutionVisualizer table td { + ... blah blah ... +} + +and then when the user creates an ExecutionVisualizer object with +JavaScript and passes it a div, I use JavaScript to set its class to +"ExecutionVisualizer". + +Thoughts? + + +--- +From John: + +That's a good idea. It would also be great to establish two different +top-level div classes: one for embedded and one for stand-alone +visualizers. Embedded visualizers typically need to be more densely +laid out, otherwise they eat up the entire page. You can see my css +changes for embedding in the master branch of my fork. + +https://github.com/papajohn/OnlinePythonTutor/blob/master/PyTutorGAE/css/pytutor.css +[downloaded as papajohn-pytutor.css] + +Ideally, I'd add the option of creating an embedded visualizer or a +stand-alone one on construction, and each would be allowed to have +different styles but mostly share the same styles. + + +--- +From Sean: + +Philip, just wondering, could you just make a new container div with the +right class, and stick it into the div passed to your code? This might +be easier than fiddling with the class on the div the user gives, and +I'm also wondering whether there could be unforeseen interactions with +other classes that might have been prespecified on that div. I don't +know what the downsides of the new approach are, though. + diff --git a/PyTutorGAE/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css b/PyTutorGAE/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css new file mode 100644 index 000000000..87a5607dc --- /dev/null +++ b/PyTutorGAE/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css @@ -0,0 +1,487 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + +/* Most recent color scheme redesign: 2012-08-19 */ + +table.visualizer { + font-family: Helvetica, sans-serif; + font-size: 10pt; +} + + +td#stack_td, +td#heap_td { + vertical-align:top; + font-size: 10pt; /* don't make fonts in the heap so big! */ +} + +#dataViz { + margin-left: 30px; +} + +table.frameDataViz { + border-spacing: 0px; + font-size: 12pt; + margin-top: 5px; + margin-left: 15px; + background-color: #dddddd; + padding: 5px; +} + +table.frameDataViz td.varname { + text-align: right; + padding: 5px; + padding-right: 8px; + border-right: 1px dashed #888888; +} + +table.frameDataViz td.val { + padding-left: 8px; + padding-right: 5px; + + padding-top: 8px; + padding-bottom: 8px; +} + +div#pyCodeOutputDiv { + max-width: 550px; + max-height: 450px; + overflow: auto; +} + +table#pyCodeOutput { + font-family: Andale mono, monospace; + font-size: 11pt; + line-height: 1.1em; + border-spacing: 0px; + border-top: 1px solid #999999; + padding-top: 3px; + border-bottom: 1px solid #999999; + margin: 6px auto; /* Center code in its pane */ +} + +/* don't wrap lines within code output ... FORCE scrollbars to appear */ +table#pyCodeOutput td { + white-space: nowrap; +} + +table#pyCodeOutput .lineNo { + background-color:#FFFFFF; + color:#AAAAAA; + margin:0; + padding:0.2em; + padding-right:0.5em; + text-align:right; + width:2.1em; +} + +table#pyCodeOutput .cod { + /*font-weight: bold;*/ + margin-left: 3px; + padding-left: 7px; + text-align: left; /* necessary or else doesn't work properly in IE */ +} + +div#editCodeLinkDiv { + text-align: center; + margin: 12px auto; +} + +#editCodeLinkOnError { + color: #142B69; + font-size: 9px; +} + +#errorOutput { + color: #d03939; + /*background-color: #F87D76;*/ + font-size: 12pt; + padding: 2px; + line-height: 1.5em; + margin-bottom: 4px; +} + +button.bigBtn { + font-size: 12pt; + padding: 5px; +} + +button.medBtn { + font-size: 12pt; + padding: 3px; +} + + +/* VCR control buttons for stepping through execution */ + +#vcrControls { + margin: 15px auto; + width: 100%; + text-align: center; +} + +#vcrControls button { + margin-left: 5px; + margin-right: 5px; +} + +#pyStdout { + border: 1px solid #999999; + font-size: 12pt; + padding: 4px; + font-family: Andale mono, monospace; +} + +.vizFrame { + margin-bottom: 20px; + padding-left: 8px; + border-left: 2px solid #cccccc; +} + + +/* Rendering of primitive types */ + +.nullObj { + font-size: 8pt; +} + +/* +.numberObj { + font-size: 10pt; +} + +.boolObj { + font-size: 10pt; +} +*/ + +.stringObj, .customObj, .funcObj { + font-family: Andale mono, monospace; + white-space: nowrap; +} + +.retval { + font-size: 9pt; +} + + +/* Rendering of basic compound types */ + +table.listTbl, table.tupleTbl, table.setTbl { + background-color: #ffffc6; +} + + +table.listTbl { + border: 0px solid black; + border-spacing: 0px; +} + +table.listTbl td.listHeader, +table.tupleTbl td.tupleHeader { + padding-left: 4px; + padding-top: 2px; + padding-bottom: 3px; + font-size: 8pt; + color: #777; + text-align: left; + border-left: 1px solid #555555; +} + +table.tupleTbl { + border-spacing: 0px; + color: black; + + border-bottom: 1px solid #555555; /* must match td.tupleHeader border */ + border-top: 1px solid #555555; /* must match td.tupleHeader border */ + border-right: 1px solid #555555; /* must match td.tupleHeader border */ +} + + +table.listTbl td.listElt { + border-bottom: 1px solid #555555; /* must match td.listHeader border */ + border-left: 1px solid #555555; /* must match td.listHeader border */ +} + +table.tupleTbl td.tupleElt { + border-left: 1px solid #555555; /* must match td.tupleHeader border */ +} + +table.customObjTbl { + background-color: white; + color: black; + border: 1px solid black; +} + +table.customObjTbl td.customObjElt { + padding: 5px; +} + +table.listTbl td.listElt, +table.tupleTbl td.tupleElt { + padding-top: 0px; + padding-bottom: 8px; + padding-left: 10px; + padding-right: 10px; + vertical-align: bottom; +} + +table.setTbl { + border: 1px solid #555555; + border-spacing: 0px; + text-align: center; +} + +table.setTbl td.setElt { + padding: 8px; +} + + +table.dictTbl, +table.instTbl, +table.classTbl { + border-spacing: 1px; +} + +table.dictTbl td.dictKey, +table.instTbl td.instKey, +table.classTbl td.classKey { + background-color: #faebbf; +} + +table.dictTbl td.dictVal, +table.instTbl td.instVal, +table.classTbl td.classVal { + background-color: #ffffc6; +} + + +table.dictTbl td.dictKey, +table.instTbl td.instKey, +table.classTbl td.classKey { + padding-top: 12px /*15px*/; + padding-bottom: 5px; + padding-left: 10px; + padding-right: 4px; + + text-align: right; +} + +table.dictTbl td.dictVal, +table.instTbl td.instVal, +table.classTbl td.classVal { + padding-top: 12px /*15px*/; + padding-bottom: 5px; + padding-right: 10px; + padding-left: 4px; +} + + +table.classTbl td, +table.instTbl td { + border-bottom: 1px #888 solid; +} + +table.classTbl td.classVal, +table.instTbl td.instVal { + border-left: 1px #888 solid; +} + +table.classTbl { + border-collapse: collapse; + border: 1px #888 solid; +} + +/* only add a border to dicts if they're embedded within another object */ +td.listElt table.dictTbl, +td.tupleElt table.dictTbl, +td.dictVal table.dictTbl, +td.instVal table.dictTbl, +td.classVal table.dictTbl { + border: 1px #888 solid; +} + + +.typeLabel { + font-size: 8pt; + color: #222222; + margin-bottom: 1px; +} + +#footer { + color: #666666; + font-size: 9pt; + border-top: 1px solid #bbbbbb; + padding-top: 5px; + margin-top: 5px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + + +/* new stuff added for Online Python Tutor "2.0" release */ + +div#stack, div#globals_area { + padding-left: 10px; + padding-right: 30px; + + /* no longer necessary ... */ + /*float: left;*/ + /* border-right: 1px dashed #bbbbbb; */ +} + +div.stackFrame, div.zombieStackFrame { + background-color: #ffffff; + margin-bottom: 15px; + padding: 2px; + padding-left: 6px; + padding-right: 6px; + padding-bottom: 4px; + font-size: 10pt; +} + +div.zombieStackFrame { + border-left: 1px dotted #aaa; + /*color: #c0c0c0;*/ + color: #b0b0b0; +} + +div.highlightedStackFrame { + background-color: #c5dfea; +} + +div.stackFrame, div.highlightedStackFrame { + border-left: 2px solid #a6b3b6; +} + + +div.stackFrameHeader { + font-family: Andale mono, monospace; + font-size: 10pt; + margin-top: 4px; + margin-bottom: 3px; + white-space: nowrap; +} + +td.stackFrameVar { + text-align: right; + padding-right: 8px; + padding-top: 3px; + padding-bottom: 3px; +} + +td.stackFrameValue { + text-align: left; + border-bottom: 1px solid #aaaaaa; + border-left: 1px solid #aaaaaa; + + padding-top: 3px; + padding-left: 3px; + padding-bottom: 3px; +} + +.stackFrameVarTable tr { + +} + +.stackFrameVarTable { + text-align: right; + padding-top: 3px; + + /* right-align the table */ + margin-left: auto; + margin-right: 0px; +} + +div#heap { + float: left; + padding-left: 30px; +} + +td.toplevelHeapObject { + /* to make room for transition animations */ + padding-left: 8px; + padding-right: 8px; + padding-top: 4px; + padding-bottom: 4px; + border: 2px dotted white; + border-color: white; /* needed for d3 to do transitions */ +} + +table.heapRow { + margin-bottom: 10px; +} + +div.heapObject { + padding-left: 2px; /* leave a TINY amount of room for connector endpoints */ +} + +div#stackHeader { + margin-bottom: 15px; + text-align: right; +} + +div#heapHeader { + /*margin-top: 2px; + margin-bottom: 13px;*/ + margin-bottom: 15px; +} + +div#stackHeader, +div#heapHeader { + color: #333333; + font-size: 10pt; +} + +#executionSlider { + width: 300px; + margin: 6px auto; +} + +#executionSliderCaption { + font-size: 8pt; + color: #666666; + margin-top: 15px; +} + +#executionSliderFooter { + margin-top: -7px; /* make it butt up against #executionSlider */ +} + + +/* necessary for CodeMirror line highlighting to work! */ +.CodeMirror .errorLine { background: #F89D99 !important; } + + +/* darken slider handle a bit */ +.ui-slider .ui-slider-handle { + border: 1px solid #999; +} From 6d636e97cfa22ecc2e64db845db0f4543eabe76e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 29 Aug 2012 18:14:56 -0700 Subject: [PATCH 174/502] refactored CSS to prevent style clashes: make each ExecutionVisualizer object contain its own div.ExecutionVisualizer, and prefix all CSS rules with div.ExecutionVisualizer --- .../css/2012-08-29-CSS-encapsulation/README | 8 + PyTutorGAE/css/opt-frontend.css | 28 +- PyTutorGAE/css/pytutor.css | 318 ++++++------------ PyTutorGAE/js/pytutor.js | 8 +- 4 files changed, 135 insertions(+), 227 deletions(-) diff --git a/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README b/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README index 870a0db74..9c8e790d0 100644 --- a/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README +++ b/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README @@ -44,3 +44,11 @@ I'm also wondering whether there could be unforeseen interactions with other classes that might have been prespecified on that div. I don't know what the downsides of the new approach are, though. +--- +My thoughts: + +- maybe just have a set of css styles for a standalone visualizer, and + then add an option or something to flip a bit to make it embedded ... + if the visualizer is embedded, then use js to set css for certain + attributes + diff --git a/PyTutorGAE/css/opt-frontend.css b/PyTutorGAE/css/opt-frontend.css index 7dcb24cbc..698fe4280 100644 --- a/PyTutorGAE/css/opt-frontend.css +++ b/PyTutorGAE/css/opt-frontend.css @@ -27,14 +27,8 @@ body { font-size: 10pt; } -a { - color: #3D58A2; -} - -a:visited { - color: #3D58A2; -} - +a, +a:visited, a:hover { color: #3D58A2; } @@ -67,3 +61,21 @@ button.smallBtn { padding: 3px; } +button.bigBtn { + font-size: 12pt; + padding: 5px; +} + +#footer { + color: #666666; + font-size: 9pt; + border-top: 1px solid #bbbbbb; + padding-top: 5px; + margin-top: 5px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index e5bfe4ccb..874653bd3 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -26,25 +26,29 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* Most recent color scheme redesign: 2012-08-19 */ +/* Most recent color scheme redesign on 2012-08-19 */ -table.visualizer { +/* To prevent CSS namespace clashes, prefix all rules with: + div.ExecutionVisualizer +*/ + + +div.ExecutionVisualizer table.visualizer { font-family: verdana, arial, helvetica, sans-serif; font-size: 10pt; } - -td#stack_td, -td#heap_td { +div.ExecutionVisualizer td#stack_td, +div.ExecutionVisualizer td#heap_td { vertical-align:top; font-size: 10pt; /* don't make fonts in the heap so big! */ } -#dataViz { +div.ExecutionVisualizer #dataViz { margin-left: 30px; } -table.frameDataViz { +div.ExecutionVisualizer table.frameDataViz { border-spacing: 0px; font-size: 12pt; margin-top: 5px; @@ -53,14 +57,14 @@ table.frameDataViz { padding: 5px; } -table.frameDataViz td.varname { +div.ExecutionVisualizer table.frameDataViz td.varname { text-align: right; padding: 5px; padding-right: 8px; border-right: 1px dashed #888888; } -table.frameDataViz td.val { +div.ExecutionVisualizer table.frameDataViz td.val { padding-left: 8px; padding-right: 5px; @@ -68,7 +72,7 @@ table.frameDataViz td.val { padding-bottom: 8px; } -div#pyCodeOutputDiv { +div.ExecutionVisualizer div#pyCodeOutputDiv { max-width: 550px; max-height: 450px; /*max-height: 620px;*/ @@ -76,7 +80,7 @@ div#pyCodeOutputDiv { /*margin-bottom: 4px;*/ } -table#pyCodeOutput { +div.ExecutionVisualizer table#pyCodeOutput { font-family: Andale mono, monospace; font-size:12pt; line-height:1.1em; @@ -88,11 +92,11 @@ table#pyCodeOutput { } /* don't wrap lines within code output ... FORCE scrollbars to appear */ -table#pyCodeOutput td { +div.ExecutionVisualizer table#pyCodeOutput td { white-space: nowrap; } -table#pyCodeOutput .lineNo { +div.ExecutionVisualizer table#pyCodeOutput .lineNo { background-color:#FFFFFF; color:#AAAAAA; margin:0; @@ -102,25 +106,20 @@ table#pyCodeOutput .lineNo { width:2.1em; } -table#pyCodeOutput .cod { +div.ExecutionVisualizer table#pyCodeOutput .cod { /*font-weight: bold;*/ margin-left: 3px; padding-left: 7px; text-align: left; /* necessary or else doesn't work properly in IE */ } -div#editCodeLinkDiv { +div.ExecutionVisualizer div#editCodeLinkDiv { text-align: center; margin-top: 12px; margin-bottom: 4px; } -#editCodeLinkOnError { - color: #142B69; -} - - -#errorOutput { +div.ExecutionVisualizer #errorOutput { color: #d03939; /*background-color: #F87D76;*/ font-size: 12pt; @@ -129,30 +128,19 @@ div#editCodeLinkDiv { margin-bottom: 4px; } -button.bigBtn { - font-size: 12pt; - padding: 5px; -} - -button.medBtn { - font-size: 12pt; - padding: 3px; -} - - /* VCR control buttons for stepping through execution */ -#vcrControls { +div.ExecutionVisualizer #vcrControls { margin-top: 15px; margin-bottom: 15px; } -#vcrControls button { +div.ExecutionVisualizer #vcrControls button { margin-left: 5px; margin-right: 5px; } -#pyStdout { +div.ExecutionVisualizer #pyStdout { border: 1px solid #999999; font-size: 12pt; padding: 4px; @@ -160,7 +148,7 @@ button.medBtn { } -.vizFrame { +div.ExecutionVisualizer .vizFrame { margin-bottom: 20px; padding-left: 8px; border-left: 2px solid #cccccc; @@ -169,43 +157,37 @@ button.medBtn { /* Rendering of primitive types */ -.nullObj { +div.ExecutionVisualizer .nullObj { font-size: 8pt; } -/* -.numberObj { - font-size: 10pt; -} - -.boolObj { - font-size: 10pt; -} -*/ - -.stringObj, .customObj, .funcObj { +div.ExecutionVisualizer .stringObj, +div.ExecutionVisualizer .customObj, +div.ExecutionVisualizer .funcObj { font-family: Andale mono, monospace; } -.retval { +div.ExecutionVisualizer .retval { font-size: 9pt; } /* Rendering of basic compound types */ -table.listTbl, table.tupleTbl, table.setTbl { +div.ExecutionVisualizer table.listTbl, +div.ExecutionVisualizer table.tupleTbl, +div.ExecutionVisualizer table.setTbl { background-color: #ffffc6; } -table.listTbl { +div.ExecutionVisualizer table.listTbl { border: 0px solid black; border-spacing: 0px; } -table.listTbl td.listHeader, -table.tupleTbl td.tupleHeader { +div.ExecutionVisualizer table.listTbl td.listHeader, +div.ExecutionVisualizer table.tupleTbl td.tupleHeader { padding-left: 4px; padding-top: 2px; padding-bottom: 3px; @@ -215,7 +197,7 @@ table.tupleTbl td.tupleHeader { border-left: 1px solid #555555; } -table.tupleTbl { +div.ExecutionVisualizer table.tupleTbl { border-spacing: 0px; color: black; @@ -225,27 +207,27 @@ table.tupleTbl { } -table.listTbl td.listElt { +div.ExecutionVisualizer table.listTbl td.listElt { border-bottom: 1px solid #555555; /* must match td.listHeader border */ border-left: 1px solid #555555; /* must match td.listHeader border */ } -table.tupleTbl td.tupleElt { +div.ExecutionVisualizer table.tupleTbl td.tupleElt { border-left: 1px solid #555555; /* must match td.tupleHeader border */ } -table.customObjTbl { +div.ExecutionVisualizer table.customObjTbl { background-color: white; color: black; border: 1px solid black; } -table.customObjTbl td.customObjElt { +div.ExecutionVisualizer table.customObjTbl td.customObjElt { padding: 5px; } -table.listTbl td.listElt, -table.tupleTbl td.tupleElt { +div.ExecutionVisualizer table.listTbl td.listElt, +div.ExecutionVisualizer table.tupleTbl td.tupleElt { padding-top: 0px; padding-bottom: 8px; padding-left: 10px; @@ -253,39 +235,39 @@ table.tupleTbl td.tupleElt { vertical-align: bottom; } -table.setTbl { +div.ExecutionVisualizer table.setTbl { border: 1px solid #555555; border-spacing: 0px; text-align: center; } -table.setTbl td.setElt { +div.ExecutionVisualizer table.setTbl td.setElt { padding: 8px; } -table.dictTbl, -table.instTbl, -table.classTbl { +div.ExecutionVisualizer table.dictTbl, +div.ExecutionVisualizer table.instTbl, +div.ExecutionVisualizer table.classTbl { border-spacing: 1px; } -table.dictTbl td.dictKey, -table.instTbl td.instKey, -table.classTbl td.classKey { +div.ExecutionVisualizer table.dictTbl td.dictKey, +div.ExecutionVisualizer table.instTbl td.instKey, +div.ExecutionVisualizer table.classTbl td.classKey { background-color: #faebbf; } -table.dictTbl td.dictVal, -table.instTbl td.instVal, -table.classTbl td.classVal { +div.ExecutionVisualizer table.dictTbl td.dictVal, +div.ExecutionVisualizer table.instTbl td.instVal, +div.ExecutionVisualizer table.classTbl td.classVal { background-color: #ffffc6; } -table.dictTbl td.dictKey, -table.instTbl td.instKey, -table.classTbl td.classKey { +div.ExecutionVisualizer table.dictTbl td.dictKey, +div.ExecutionVisualizer table.instTbl td.instKey, +div.ExecutionVisualizer table.classTbl td.classKey { padding-top: 12px /*15px*/; padding-bottom: 5px; padding-left: 10px; @@ -294,9 +276,9 @@ table.classTbl td.classKey { text-align: right; } -table.dictTbl td.dictVal, -table.instTbl td.instVal, -table.classTbl td.classVal { +div.ExecutionVisualizer table.dictTbl td.dictVal, +div.ExecutionVisualizer table.instTbl td.instVal, +div.ExecutionVisualizer table.classTbl td.classVal { padding-top: 12px /*15px*/; padding-bottom: 5px; padding-right: 10px; @@ -304,54 +286,39 @@ table.classTbl td.classVal { } -table.classTbl td, -table.instTbl td { +div.ExecutionVisualizer table.classTbl td, +div.ExecutionVisualizer table.instTbl td { border-bottom: 1px #888 solid; } -table.classTbl td.classVal, -table.instTbl td.instVal { +div.ExecutionVisualizer table.classTbl td.classVal, +div.ExecutionVisualizer table.instTbl td.instVal { border-left: 1px #888 solid; } -table.classTbl { +div.ExecutionVisualizer table.classTbl { border-collapse: collapse; border: 1px #888 solid; } /* only add a border to dicts if they're embedded within another object */ -td.listElt table.dictTbl, -td.tupleElt table.dictTbl, -td.dictVal table.dictTbl, -td.instVal table.dictTbl, -td.classVal table.dictTbl { +div.ExecutionVisualizer td.listElt table.dictTbl, +div.ExecutionVisualizer td.tupleElt table.dictTbl, +div.ExecutionVisualizer td.dictVal table.dictTbl, +div.ExecutionVisualizer td.instVal table.dictTbl, +div.ExecutionVisualizer td.classVal table.dictTbl { border: 1px #888 solid; } -.typeLabel { +div.ExecutionVisualizer .typeLabel { font-size: 8pt; color: #222222; margin-bottom: 1px; } -#footer { - color: #666666; - font-size: 9pt; - border-top: 1px solid #bbbbbb; - padding-top: 5px; - margin-top: 5px; - - max-width: 700px; - /* center align */ - margin-left: auto; - margin-right: auto; -} - - -/* new stuff added for Online Python Tutor "2.0" release */ - -div#stack, div#globals_area { +div.ExecutionVisualizer div#stack, +div.ExecutionVisualizer div#globals_area { padding-left: 10px; padding-right: 30px; @@ -360,7 +327,8 @@ div#stack, div#globals_area { /* border-right: 1px dashed #bbbbbb; */ } -div.stackFrame, div.zombieStackFrame { +div.ExecutionVisualizer div.stackFrame, +div.ExecutionVisualizer div.zombieStackFrame { background-color: #ffffff; margin-bottom: 15px; padding: 2px; @@ -370,36 +338,37 @@ div.stackFrame, div.zombieStackFrame { font-size: 10pt; } -div.zombieStackFrame { +div.ExecutionVisualizer div.zombieStackFrame { border-left: 1px dotted #aaa; /*color: #c0c0c0;*/ color: #b0b0b0; } -div.highlightedStackFrame { +div.ExecutionVisualizer div.highlightedStackFrame { background-color: #c5dfea; } -div.stackFrame, div.highlightedStackFrame { +div.ExecutionVisualizer div.stackFrame, +div.ExecutionVisualizer div.highlightedStackFrame { border-left: 2px solid #a6b3b6; } -div.stackFrameHeader { +div.ExecutionVisualizer div.stackFrameHeader { font-family: Andale mono, monospace; font-size: 10pt; margin-top: 4px; margin-bottom: 3px; } -td.stackFrameVar { +div.ExecutionVisualizer td.stackFrameVar { text-align: right; padding-right: 8px; padding-top: 3px; padding-bottom: 3px; } -td.stackFrameValue { +div.ExecutionVisualizer td.stackFrameValue { text-align: left; border-bottom: 1px solid #aaaaaa; border-left: 1px solid #aaaaaa; @@ -409,11 +378,11 @@ td.stackFrameValue { padding-bottom: 3px; } -.stackFrameVarTable tr { +div.ExecutionVisualizer .stackFrameVarTable tr { } -.stackFrameVarTable { +div.ExecutionVisualizer .stackFrameVarTable { text-align: right; padding-top: 3px; @@ -422,12 +391,12 @@ td.stackFrameValue { margin-right: 0px; } -div#heap { +div.ExecutionVisualizer div#heap { float: left; padding-left: 30px; } -td.toplevelHeapObject { +div.ExecutionVisualizer td.toplevelHeapObject { /* to make room for transition animations */ padding-left: 8px; padding-right: 8px; @@ -437,141 +406,54 @@ td.toplevelHeapObject { border-color: white; /* needed for d3 to do transitions */ } -table.heapRow { +div.ExecutionVisualizer table.heapRow { margin-bottom: 10px; } -div.heapObject { +div.ExecutionVisualizer div.heapObject { padding-left: 2px; /* leave a TINY amount of room for connector endpoints */ } -div#stackHeader { +div.ExecutionVisualizer div#stackHeader { margin-bottom: 15px; text-align: right; } -div#heapHeader { +div.ExecutionVisualizer div#heapHeader { /*margin-top: 2px; margin-bottom: 13px;*/ margin-bottom: 15px; } -div#stackHeader, -div#heapHeader { +div.ExecutionVisualizer div#stackHeader, +div.ExecutionVisualizer div#heapHeader { color: #333333; font-size: 10pt; } - -/* styles for Online Python Tutor questions site */ - -#questionsHeaderPane { - text-align: left; - margin-bottom: 15px; - width: 650px; - border-bottom: 1px solid #bbbbbb; -} - -.questionsHeaderStmt { - margin-bottom: 5px; -} - -.questionsHeaderTitle { - margin-bottom: 5px; - font-weight: bold; - font-size: 12pt; -} - -#submittedCodeRO { - font-size: 10pt; - font-family: Andale mono, monospace; - padding: 4px; - margin-top: 5px; -} - -table#gradeMatrix { - margin-top: 12px; -} - -table#gradeMatrix thead { - font-weight: bold; - border: solid; -} - -table#gradeMatrix thead td.statusCell { - padding-left: 18px; /* to line up with smiley faces */ -} - -table#gradeMatrix td.testInputCell, -table#gradeMatrix td.testOutputCell { - padding-right: 25px; - padding-bottom: 10px; - vertical-align: middle; -} - -table#gradeMatrix tbody td.statusCell, -table#gradeMatrix tbody td.expectedCell { - padding-left: 12px; - padding-bottom: 10px; - vertical-align: middle; -} - -td.testInputVarnameCell, -td.testOutputVarnameCell { - padding-right: 2px; - text-align: right; -} - -td.testInputValCell, -td.testOutputValCell { - padding-right: 5px; -} - -pre#submittedCodePRE { - font-size: 10pt; - font-family: Andale mono, monospace; - background-color: #dddddd; - padding: 5px; -} - -div#submittedSolutionDisplay { - width: 650px; /* to line up with questionsHeaderPane */ - text-align: left; - font-size: 12pt; - margin-bottom: 20px; -} - -#gradeSummary { - margin-top: 12px; -} - -#pyGradingPane { - margin-bottom: 20px; -} - - -#executionSlider { +div.ExecutionVisualizer #executionSlider { width: 500px; margin-top: 10px; margin-bottom: 5px; } -#executionSliderCaption { +div.ExecutionVisualizer #executionSliderCaption { font-size: 8pt; color: #666666; margin-top: 15px; } -#executionSliderFooter { +div.ExecutionVisualizer #executionSliderFooter { margin-top: -7px; /* make it butt up against #executionSlider */ } -/* necessary for CodeMirror line highlighting to work! */ -.CodeMirror .errorLine { background: #F89D99 !important; } - - /* darken slider handle a bit */ -.ui-slider .ui-slider-handle { +div.ExecutionVisualizer .ui-slider .ui-slider-handle { border: 1px solid #999; } + + +/* necessary for CodeMirror line highlighting to work! */ +div.ExecutionVisualizer .CodeMirror .errorLine { background: #F89D99 !important; } + diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 249848892..850653c35 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -97,9 +97,15 @@ function ExecutionVisualizer(domRootID, dat, params) { this.domRoot = $('#' + domRootID); - this.domRootD3 = d3.select('#' + domRootID); + // stick a new div.ExecutionVisualizer within domRoot and make that + // the new domRoot: + this.domRoot.html('
'); + + this.domRoot = this.domRoot.find('div.ExecutionVisualizer'); + this.domRootD3 = this.domRootD3.select('div.ExecutionVisualizer'); + this.keyStuckDown = false; From 8b6a043e8ddf3ac3dccf03a62e765ebf028131a5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 29 Aug 2012 18:39:25 -0700 Subject: [PATCH 175/502] incorporated some style tweaks from john --- PyTutorGAE/css/pytutor.css | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/PyTutorGAE/css/pytutor.css b/PyTutorGAE/css/pytutor.css index 874653bd3..f4ff9715c 100644 --- a/PyTutorGAE/css/pytutor.css +++ b/PyTutorGAE/css/pytutor.css @@ -88,7 +88,8 @@ div.ExecutionVisualizer table#pyCodeOutput { border-top: 1px solid #999999; padding-top: 3px; border-bottom: 1px solid #999999; - margin-top: 6px; + /*margin-top: 6px;*/ + margin: 6px auto; /* Center code in its pane */ } /* don't wrap lines within code output ... FORCE scrollbars to appear */ @@ -115,8 +116,11 @@ div.ExecutionVisualizer table#pyCodeOutput .cod { div.ExecutionVisualizer div#editCodeLinkDiv { text-align: center; + /* margin-top: 12px; margin-bottom: 4px; + */ + margin: 12px auto; } div.ExecutionVisualizer #errorOutput { @@ -131,8 +135,13 @@ div.ExecutionVisualizer #errorOutput { /* VCR control buttons for stepping through execution */ div.ExecutionVisualizer #vcrControls { + /* margin-top: 15px; margin-bottom: 15px; + */ + margin: 15px auto; + width: 100%; + text-align: center; } div.ExecutionVisualizer #vcrControls button { @@ -165,6 +174,7 @@ div.ExecutionVisualizer .stringObj, div.ExecutionVisualizer .customObj, div.ExecutionVisualizer .funcObj { font-family: Andale mono, monospace; + white-space: nowrap; } div.ExecutionVisualizer .retval { @@ -359,6 +369,7 @@ div.ExecutionVisualizer div.stackFrameHeader { font-size: 10pt; margin-top: 4px; margin-bottom: 3px; + white-space: nowrap; } div.ExecutionVisualizer td.stackFrameVar { From fafe494e09882d5bc88f95b7344e057e80bebb52 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 29 Aug 2012 18:46:26 -0700 Subject: [PATCH 176/502] bam --- .../css/2012-08-29-CSS-encapsulation/README | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README b/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README index 9c8e790d0..8d02a04dd 100644 --- a/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README +++ b/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README @@ -52,3 +52,18 @@ My thoughts: if the visualizer is embedded, then use js to set css for certain attributes +--- +2012-08-29 email from me to John and Sean: + +Gentlemen - + +I just pushed some changes that implemented: + +- Sean's suggestion of creating a div.ExecutionVisualizer within the root DOM node passed into a new ExecutionVisualizer object, +- prefixing of all CSS rules by div.ExecutionVisualizer +- some of John's modified CSS + +Hopefully CSS clashes are less of a problem from now on. + +However, I still didn't implement John's suggestion for an "embedded CSS mode" yet; right now the best thing to do is to either tweak the CSS manually or to write javascript to dynamically modify the CSS. + From 991ac15033ac0244b500d393e4d4e68ad30a6c5f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 30 Aug 2012 23:31:15 -0700 Subject: [PATCH 177/502] render horizontal bar below highlighted line for "return" events --- PyTutorGAE/js/pytutor.js | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/PyTutorGAE/js/pytutor.js b/PyTutorGAE/js/pytutor.js index 850653c35..80a5e5fce 100644 --- a/PyTutorGAE/js/pytutor.js +++ b/PyTutorGAE/js/pytutor.js @@ -805,13 +805,23 @@ ExecutionVisualizer.prototype.updateOutput = function() { return d.backgroundColor; }) .style('border-top', function(d) { - if ((d.lineNumber == curEntry.line) && !hasError && !isTerminated) { + if ((d.lineNumber == curEntry.line) && + (curEntry.event != 'return') && + !hasError && !isTerminated) { return '1px solid ' + highlightedLineTopBorderColor; } else { // put a default white top border to keep space usage consistent return '1px solid #ffffff'; } + }) + .style('border-bottom', function(d) { + // special case to render horizontal bar *BELOW* the highlighted line + if ((d.lineNumber == curEntry.line) && + (curEntry.event == 'return') && + !hasError && !isTerminated) { + return '1px solid ' + highlightedLineTopBorderColor; + } }); From dc974e61e49d8723f4d6a26bed85f86ec3209af5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 31 Aug 2012 13:09:17 -0700 Subject: [PATCH 178/502] added decorator test --- PyTutorGAE/js/opt-frontend.js | 6 + PyTutorGAE/tutor.html | 3 +- example-code/decorators.golden | 1892 ++++++++++++++++++++++++++++++++ example-code/decorators.txt | 12 + 4 files changed, 1912 insertions(+), 1 deletion(-) create mode 100644 example-code/decorators.golden create mode 100644 example-code/decorators.txt diff --git a/PyTutorGAE/js/opt-frontend.js b/PyTutorGAE/js/opt-frontend.js index 21075179d..f755c8fed 100644 --- a/PyTutorGAE/js/opt-frontend.js +++ b/PyTutorGAE/js/opt-frontend.js @@ -302,6 +302,12 @@ $(document).ready(function() { return false; }); + $("#decoratorsLink").click(function() { + $.get("example-code/decorators.txt", setCodeMirrorVal); + return false; + }); + + $('#closure1Link').click(function() { $.get("example-code/closures/closure1.txt", setCodeMirrorVal); diff --git a/PyTutorGAE/tutor.html b/PyTutorGAE/tutor.html index 920741ad4..bc58f4853 100644 --- a/PyTutorGAE/tutor.html +++ b/PyTutorGAE/tutor.html @@ -89,7 +89,8 @@ sumList | towers of hanoi | exceptions | -sum cubes +sum cubes | +decorators

diff --git a/example-code/decorators.golden b/example-code/decorators.golden new file mode 100644 index 000000000..8b88ef0b2 --- /dev/null +++ b/example-code/decorators.golden @@ -0,0 +1,1892 @@ +{ + "code": "def make_bold(fn):\n return lambda : \"\" + fn() + \"\"\n\ndef make_italic(fn):\n return lambda : \"\" + fn() + \"\"\n\n@make_bold\n@make_italic\ndef hello():\n return \"hello world\"\n \nhelloHTML = hello()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello", + "helloHTML" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ], + "helloHTML": "hello world" + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/example-code/decorators.txt b/example-code/decorators.txt new file mode 100644 index 000000000..b73b335f8 --- /dev/null +++ b/example-code/decorators.txt @@ -0,0 +1,12 @@ +def make_bold(fn): + return lambda : "" + fn() + "" + +def make_italic(fn): + return lambda : "" + fn() + "" + +@make_bold +@make_italic +def hello(): + return "hello world" + +helloHTML = hello() From 174b783a555ff630aa0a82b5c55e024f44c7501e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 1 Sep 2012 10:38:08 -0700 Subject: [PATCH 179/502] renamed PyTutorGAE/ to v3/ --- {PyTutorGAE => v3}/README | 0 {PyTutorGAE => v3}/app.yaml | 0 {PyTutorGAE => v3}/convert_2to3.py | 0 {PyTutorGAE => v3}/create_log_db.py | 0 .../css/2012-08-29-CSS-encapsulation/README | 0 .../papajohn-pytutor.css | 0 {PyTutorGAE => v3}/css/codemirror.css | 0 {PyTutorGAE => v3}/css/opt-frontend.css | 0 {PyTutorGAE => v3}/css/pytutor.css | 0 .../css/smoothness/jquery-ui-1.8.21.custom.css | 0 .../ui-bg_diagonals-thick_18_b81900_40x40.png | Bin .../ui-bg_diagonals-thick_20_666666_40x40.png | Bin .../images/ui-bg_flat_10_000000_40x100.png | Bin .../images/ui-bg_glass_100_f6f6f6_1x400.png | Bin .../images/ui-bg_glass_100_fdf5ce_1x400.png | Bin .../images/ui-bg_glass_65_ffffff_1x400.png | Bin .../images/ui-bg_gloss-wave_35_f6a828_500x100.png | Bin .../ui-bg_highlight-soft_100_eeeeee_1x100.png | Bin .../images/ui-bg_highlight-soft_75_ffe45c_1x100.png | Bin .../ui-lightness/images/ui-icons_222222_256x240.png | Bin .../ui-lightness/images/ui-icons_228ef1_256x240.png | Bin .../ui-lightness/images/ui-icons_ef8c08_256x240.png | Bin .../ui-lightness/images/ui-icons_ffd27a_256x240.png | Bin .../ui-lightness/images/ui-icons_ffffff_256x240.png | Bin .../css/ui-lightness/jquery-ui-1.8.21.custom.css | 0 {PyTutorGAE => v3}/embedding-examples.js | 0 {PyTutorGAE => v3}/embedding-test.html | 0 {PyTutorGAE => v3}/example-code | 0 {PyTutorGAE => v3}/generate_json_trace.py | 0 {PyTutorGAE => v3}/js/codemirror/codemirror.js | 0 {PyTutorGAE => v3}/js/codemirror/python.js | 0 {PyTutorGAE => v3}/js/d3.v2.min.js | 0 {PyTutorGAE => v3}/js/jquery-1.6.min.js | 0 .../js/jquery-ui-1.8.21.custom.min.js | 0 {PyTutorGAE => v3}/js/jquery.ba-bbq.min.js | 0 .../js/jquery.jsPlumb-1.3.10-all-min.js | 0 {PyTutorGAE => v3}/js/opt-frontend.js | 0 {PyTutorGAE => v3}/js/pytutor.js | 0 {PyTutorGAE => v3}/logger/gae_logger.py | 0 {PyTutorGAE => v3}/pg_encoder.py | 0 {PyTutorGAE => v3}/pg_logger.py | 0 {PyTutorGAE => v3}/pythontutor.py | 0 .../tests/backend-tests/caught_exception_1.golden | 0 .../tests/backend-tests/caught_exception_1.txt | 0 .../tests/backend-tests/caught_exception_2.golden | 0 .../tests/backend-tests/caught_exception_2.txt | 0 .../tests/backend-tests/circ_ref.golden | 0 {PyTutorGAE => v3}/tests/backend-tests/circ_ref.txt | 0 .../tests/backend-tests/circ_ref_2.golden | 0 .../tests/backend-tests/circ_ref_2.txt | 0 .../tests/backend-tests/circ_ref_fake.golden | 0 .../tests/backend-tests/circ_ref_fake.txt | 0 .../tests/backend-tests/class_test.golden | 0 .../tests/backend-tests/class_test.txt | 0 .../tests/backend-tests/class_test_2.golden | 0 .../tests/backend-tests/class_test_2.txt | 0 .../tests/backend-tests/class_test_3.golden | 0 .../tests/backend-tests/class_test_3.txt | 0 .../tests/backend-tests/data_test.golden | 0 .../tests/backend-tests/data_test.txt | 0 .../tests/backend-tests/dict_error.golden | 0 .../tests/backend-tests/dict_error.txt | 0 .../tests/backend-tests/dict_test.golden | 0 .../tests/backend-tests/dict_test.txt | 0 .../tests/backend-tests/exec_test.golden | 0 .../tests/backend-tests/exec_test.txt | 0 .../tests/backend-tests/func_exception.golden | 0 .../tests/backend-tests/func_exception.txt | 0 .../tests/backend-tests/generator_test.golden | 0 .../tests/backend-tests/generator_test.txt | 0 .../tests/backend-tests/import_error.golden | 0 .../tests/backend-tests/import_error.txt | 0 .../tests/backend-tests/infinite_loop.golden | 0 .../tests/backend-tests/infinite_loop.txt | 0 .../backend-tests/infinite_loop_one_liner.golden | 0 .../tests/backend-tests/infinite_loop_one_liner.txt | 0 .../tests/backend-tests/john-compose.golden | 0 .../tests/backend-tests/john-compose.txt | 0 .../tests/backend-tests/john-import-test.golden | 0 .../tests/backend-tests/john-import-test.txt | 0 .../tests/backend-tests/lambda_1.golden | 0 {PyTutorGAE => v3}/tests/backend-tests/lambda_1.txt | 0 .../tests/backend-tests/ling-scheme-1.golden | 0 .../tests/backend-tests/ling-scheme-1.txt | 0 .../tests/backend-tests/ling-scheme-2.golden | 0 .../tests/backend-tests/ling-scheme-2.txt | 0 .../tests/backend-tests/ling-scheme-3.golden | 0 .../tests/backend-tests/ling-scheme-3.txt | 0 .../tests/backend-tests/list_dict_test.golden | 0 .../tests/backend-tests/list_dict_test.txt | 0 .../tests/backend-tests/list_test.golden | 0 .../tests/backend-tests/list_test.txt | 0 .../tests/backend-tests/newstyle_class.golden | 0 .../tests/backend-tests/newstyle_class.txt | 0 .../tests/backend-tests/one_func.golden | 0 {PyTutorGAE => v3}/tests/backend-tests/one_func.txt | 0 .../tests/backend-tests/open_error.golden | 0 .../tests/backend-tests/open_error.txt | 0 .../tests/backend-tests/parse_error.golden | 0 .../tests/backend-tests/parse_error.txt | 0 .../tests/backend-tests/parse_error_2.golden | 0 .../tests/backend-tests/parse_error_2.txt | 0 .../tests/backend-tests/parse_error_3.golden | 0 .../tests/backend-tests/parse_error_3.txt | 0 .../tests/backend-tests/pie-test.golden | 0 {PyTutorGAE => v3}/tests/backend-tests/pie-test.txt | 0 .../tests/backend-tests/print_builtins_error.golden | 0 .../tests/backend-tests/print_builtins_error.txt | 0 .../tests/backend-tests/runtime_error.golden | 0 .../tests/backend-tests/runtime_error.txt | 0 .../tests/backend-tests/set_test.golden | 0 {PyTutorGAE => v3}/tests/backend-tests/set_test.txt | 0 .../tests/backend-tests/simple.golden | 0 {PyTutorGAE => v3}/tests/backend-tests/simple.txt | 0 .../tests/backend-tests/three_lists.golden | 0 .../tests/backend-tests/three_lists.txt | 0 .../tests/backend-tests/tuple_test.golden | 0 .../tests/backend-tests/tuple_test.txt | 0 .../tests/backend-tests/two_funcs.golden | 0 .../tests/backend-tests/two_funcs.txt | 0 {PyTutorGAE => v3}/tests/example-code | 0 {PyTutorGAE => v3}/tests/golden_test.py | 0 {PyTutorGAE => v3}/tutor.html | 0 {PyTutorGAE => v3}/web_exec.py | 0 124 files changed, 0 insertions(+), 0 deletions(-) rename {PyTutorGAE => v3}/README (100%) rename {PyTutorGAE => v3}/app.yaml (100%) rename {PyTutorGAE => v3}/convert_2to3.py (100%) rename {PyTutorGAE => v3}/create_log_db.py (100%) rename {PyTutorGAE => v3}/css/2012-08-29-CSS-encapsulation/README (100%) rename {PyTutorGAE => v3}/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css (100%) rename {PyTutorGAE => v3}/css/codemirror.css (100%) rename {PyTutorGAE => v3}/css/opt-frontend.css (100%) rename {PyTutorGAE => v3}/css/pytutor.css (100%) rename {PyTutorGAE => v3}/css/smoothness/jquery-ui-1.8.21.custom.css (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-icons_222222_256x240.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-icons_228ef1_256x240.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-icons_ef8c08_256x240.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-icons_ffd27a_256x240.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/images/ui-icons_ffffff_256x240.png (100%) rename {PyTutorGAE => v3}/css/ui-lightness/jquery-ui-1.8.21.custom.css (100%) rename {PyTutorGAE => v3}/embedding-examples.js (100%) rename {PyTutorGAE => v3}/embedding-test.html (100%) rename {PyTutorGAE => v3}/example-code (100%) rename {PyTutorGAE => v3}/generate_json_trace.py (100%) rename {PyTutorGAE => v3}/js/codemirror/codemirror.js (100%) rename {PyTutorGAE => v3}/js/codemirror/python.js (100%) rename {PyTutorGAE => v3}/js/d3.v2.min.js (100%) rename {PyTutorGAE => v3}/js/jquery-1.6.min.js (100%) rename {PyTutorGAE => v3}/js/jquery-ui-1.8.21.custom.min.js (100%) rename {PyTutorGAE => v3}/js/jquery.ba-bbq.min.js (100%) rename {PyTutorGAE => v3}/js/jquery.jsPlumb-1.3.10-all-min.js (100%) rename {PyTutorGAE => v3}/js/opt-frontend.js (100%) rename {PyTutorGAE => v3}/js/pytutor.js (100%) rename {PyTutorGAE => v3}/logger/gae_logger.py (100%) rename {PyTutorGAE => v3}/pg_encoder.py (100%) rename {PyTutorGAE => v3}/pg_logger.py (100%) rename {PyTutorGAE => v3}/pythontutor.py (100%) rename {PyTutorGAE => v3}/tests/backend-tests/caught_exception_1.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/caught_exception_1.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/caught_exception_2.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/caught_exception_2.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/circ_ref.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/circ_ref.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/circ_ref_2.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/circ_ref_2.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/circ_ref_fake.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/circ_ref_fake.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/class_test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/class_test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/class_test_2.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/class_test_2.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/class_test_3.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/class_test_3.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/data_test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/data_test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/dict_error.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/dict_error.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/dict_test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/dict_test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/exec_test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/exec_test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/func_exception.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/func_exception.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/generator_test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/generator_test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/import_error.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/import_error.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/infinite_loop.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/infinite_loop.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/infinite_loop_one_liner.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/infinite_loop_one_liner.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/john-compose.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/john-compose.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/john-import-test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/john-import-test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/lambda_1.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/lambda_1.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/ling-scheme-1.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/ling-scheme-1.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/ling-scheme-2.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/ling-scheme-2.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/ling-scheme-3.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/ling-scheme-3.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/list_dict_test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/list_dict_test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/list_test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/list_test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/newstyle_class.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/newstyle_class.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/one_func.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/one_func.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/open_error.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/open_error.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/parse_error.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/parse_error.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/parse_error_2.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/parse_error_2.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/parse_error_3.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/parse_error_3.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/pie-test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/pie-test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/print_builtins_error.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/print_builtins_error.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/runtime_error.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/runtime_error.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/set_test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/set_test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/simple.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/simple.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/three_lists.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/three_lists.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/tuple_test.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/tuple_test.txt (100%) rename {PyTutorGAE => v3}/tests/backend-tests/two_funcs.golden (100%) rename {PyTutorGAE => v3}/tests/backend-tests/two_funcs.txt (100%) rename {PyTutorGAE => v3}/tests/example-code (100%) rename {PyTutorGAE => v3}/tests/golden_test.py (100%) rename {PyTutorGAE => v3}/tutor.html (100%) rename {PyTutorGAE => v3}/web_exec.py (100%) diff --git a/PyTutorGAE/README b/v3/README similarity index 100% rename from PyTutorGAE/README rename to v3/README diff --git a/PyTutorGAE/app.yaml b/v3/app.yaml similarity index 100% rename from PyTutorGAE/app.yaml rename to v3/app.yaml diff --git a/PyTutorGAE/convert_2to3.py b/v3/convert_2to3.py similarity index 100% rename from PyTutorGAE/convert_2to3.py rename to v3/convert_2to3.py diff --git a/PyTutorGAE/create_log_db.py b/v3/create_log_db.py similarity index 100% rename from PyTutorGAE/create_log_db.py rename to v3/create_log_db.py diff --git a/PyTutorGAE/css/2012-08-29-CSS-encapsulation/README b/v3/css/2012-08-29-CSS-encapsulation/README similarity index 100% rename from PyTutorGAE/css/2012-08-29-CSS-encapsulation/README rename to v3/css/2012-08-29-CSS-encapsulation/README diff --git a/PyTutorGAE/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css b/v3/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css similarity index 100% rename from PyTutorGAE/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css rename to v3/css/2012-08-29-CSS-encapsulation/papajohn-pytutor.css diff --git a/PyTutorGAE/css/codemirror.css b/v3/css/codemirror.css similarity index 100% rename from PyTutorGAE/css/codemirror.css rename to v3/css/codemirror.css diff --git a/PyTutorGAE/css/opt-frontend.css b/v3/css/opt-frontend.css similarity index 100% rename from PyTutorGAE/css/opt-frontend.css rename to v3/css/opt-frontend.css diff --git a/PyTutorGAE/css/pytutor.css b/v3/css/pytutor.css similarity index 100% rename from PyTutorGAE/css/pytutor.css rename to v3/css/pytutor.css diff --git a/PyTutorGAE/css/smoothness/jquery-ui-1.8.21.custom.css b/v3/css/smoothness/jquery-ui-1.8.21.custom.css similarity index 100% rename from PyTutorGAE/css/smoothness/jquery-ui-1.8.21.custom.css rename to v3/css/smoothness/jquery-ui-1.8.21.custom.css diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png b/v3/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png rename to v3/css/ui-lightness/images/ui-bg_diagonals-thick_18_b81900_40x40.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png b/v3/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png rename to v3/css/ui-lightness/images/ui-bg_diagonals-thick_20_666666_40x40.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png b/v3/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png rename to v3/css/ui-lightness/images/ui-bg_flat_10_000000_40x100.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png b/v3/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png rename to v3/css/ui-lightness/images/ui-bg_glass_100_f6f6f6_1x400.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png b/v3/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png rename to v3/css/ui-lightness/images/ui-bg_glass_100_fdf5ce_1x400.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png b/v3/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png rename to v3/css/ui-lightness/images/ui-bg_glass_65_ffffff_1x400.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png b/v3/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png rename to v3/css/ui-lightness/images/ui-bg_gloss-wave_35_f6a828_500x100.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png b/v3/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png rename to v3/css/ui-lightness/images/ui-bg_highlight-soft_100_eeeeee_1x100.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png b/v3/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png rename to v3/css/ui-lightness/images/ui-bg_highlight-soft_75_ffe45c_1x100.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-icons_222222_256x240.png b/v3/css/ui-lightness/images/ui-icons_222222_256x240.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-icons_222222_256x240.png rename to v3/css/ui-lightness/images/ui-icons_222222_256x240.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-icons_228ef1_256x240.png b/v3/css/ui-lightness/images/ui-icons_228ef1_256x240.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-icons_228ef1_256x240.png rename to v3/css/ui-lightness/images/ui-icons_228ef1_256x240.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-icons_ef8c08_256x240.png b/v3/css/ui-lightness/images/ui-icons_ef8c08_256x240.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-icons_ef8c08_256x240.png rename to v3/css/ui-lightness/images/ui-icons_ef8c08_256x240.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-icons_ffd27a_256x240.png b/v3/css/ui-lightness/images/ui-icons_ffd27a_256x240.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-icons_ffd27a_256x240.png rename to v3/css/ui-lightness/images/ui-icons_ffd27a_256x240.png diff --git a/PyTutorGAE/css/ui-lightness/images/ui-icons_ffffff_256x240.png b/v3/css/ui-lightness/images/ui-icons_ffffff_256x240.png similarity index 100% rename from PyTutorGAE/css/ui-lightness/images/ui-icons_ffffff_256x240.png rename to v3/css/ui-lightness/images/ui-icons_ffffff_256x240.png diff --git a/PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css b/v3/css/ui-lightness/jquery-ui-1.8.21.custom.css similarity index 100% rename from PyTutorGAE/css/ui-lightness/jquery-ui-1.8.21.custom.css rename to v3/css/ui-lightness/jquery-ui-1.8.21.custom.css diff --git a/PyTutorGAE/embedding-examples.js b/v3/embedding-examples.js similarity index 100% rename from PyTutorGAE/embedding-examples.js rename to v3/embedding-examples.js diff --git a/PyTutorGAE/embedding-test.html b/v3/embedding-test.html similarity index 100% rename from PyTutorGAE/embedding-test.html rename to v3/embedding-test.html diff --git a/PyTutorGAE/example-code b/v3/example-code similarity index 100% rename from PyTutorGAE/example-code rename to v3/example-code diff --git a/PyTutorGAE/generate_json_trace.py b/v3/generate_json_trace.py similarity index 100% rename from PyTutorGAE/generate_json_trace.py rename to v3/generate_json_trace.py diff --git a/PyTutorGAE/js/codemirror/codemirror.js b/v3/js/codemirror/codemirror.js similarity index 100% rename from PyTutorGAE/js/codemirror/codemirror.js rename to v3/js/codemirror/codemirror.js diff --git a/PyTutorGAE/js/codemirror/python.js b/v3/js/codemirror/python.js similarity index 100% rename from PyTutorGAE/js/codemirror/python.js rename to v3/js/codemirror/python.js diff --git a/PyTutorGAE/js/d3.v2.min.js b/v3/js/d3.v2.min.js similarity index 100% rename from PyTutorGAE/js/d3.v2.min.js rename to v3/js/d3.v2.min.js diff --git a/PyTutorGAE/js/jquery-1.6.min.js b/v3/js/jquery-1.6.min.js similarity index 100% rename from PyTutorGAE/js/jquery-1.6.min.js rename to v3/js/jquery-1.6.min.js diff --git a/PyTutorGAE/js/jquery-ui-1.8.21.custom.min.js b/v3/js/jquery-ui-1.8.21.custom.min.js similarity index 100% rename from PyTutorGAE/js/jquery-ui-1.8.21.custom.min.js rename to v3/js/jquery-ui-1.8.21.custom.min.js diff --git a/PyTutorGAE/js/jquery.ba-bbq.min.js b/v3/js/jquery.ba-bbq.min.js similarity index 100% rename from PyTutorGAE/js/jquery.ba-bbq.min.js rename to v3/js/jquery.ba-bbq.min.js diff --git a/PyTutorGAE/js/jquery.jsPlumb-1.3.10-all-min.js b/v3/js/jquery.jsPlumb-1.3.10-all-min.js similarity index 100% rename from PyTutorGAE/js/jquery.jsPlumb-1.3.10-all-min.js rename to v3/js/jquery.jsPlumb-1.3.10-all-min.js diff --git a/PyTutorGAE/js/opt-frontend.js b/v3/js/opt-frontend.js similarity index 100% rename from PyTutorGAE/js/opt-frontend.js rename to v3/js/opt-frontend.js diff --git a/PyTutorGAE/js/pytutor.js b/v3/js/pytutor.js similarity index 100% rename from PyTutorGAE/js/pytutor.js rename to v3/js/pytutor.js diff --git a/PyTutorGAE/logger/gae_logger.py b/v3/logger/gae_logger.py similarity index 100% rename from PyTutorGAE/logger/gae_logger.py rename to v3/logger/gae_logger.py diff --git a/PyTutorGAE/pg_encoder.py b/v3/pg_encoder.py similarity index 100% rename from PyTutorGAE/pg_encoder.py rename to v3/pg_encoder.py diff --git a/PyTutorGAE/pg_logger.py b/v3/pg_logger.py similarity index 100% rename from PyTutorGAE/pg_logger.py rename to v3/pg_logger.py diff --git a/PyTutorGAE/pythontutor.py b/v3/pythontutor.py similarity index 100% rename from PyTutorGAE/pythontutor.py rename to v3/pythontutor.py diff --git a/PyTutorGAE/tests/backend-tests/caught_exception_1.golden b/v3/tests/backend-tests/caught_exception_1.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/caught_exception_1.golden rename to v3/tests/backend-tests/caught_exception_1.golden diff --git a/PyTutorGAE/tests/backend-tests/caught_exception_1.txt b/v3/tests/backend-tests/caught_exception_1.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/caught_exception_1.txt rename to v3/tests/backend-tests/caught_exception_1.txt diff --git a/PyTutorGAE/tests/backend-tests/caught_exception_2.golden b/v3/tests/backend-tests/caught_exception_2.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/caught_exception_2.golden rename to v3/tests/backend-tests/caught_exception_2.golden diff --git a/PyTutorGAE/tests/backend-tests/caught_exception_2.txt b/v3/tests/backend-tests/caught_exception_2.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/caught_exception_2.txt rename to v3/tests/backend-tests/caught_exception_2.txt diff --git a/PyTutorGAE/tests/backend-tests/circ_ref.golden b/v3/tests/backend-tests/circ_ref.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/circ_ref.golden rename to v3/tests/backend-tests/circ_ref.golden diff --git a/PyTutorGAE/tests/backend-tests/circ_ref.txt b/v3/tests/backend-tests/circ_ref.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/circ_ref.txt rename to v3/tests/backend-tests/circ_ref.txt diff --git a/PyTutorGAE/tests/backend-tests/circ_ref_2.golden b/v3/tests/backend-tests/circ_ref_2.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/circ_ref_2.golden rename to v3/tests/backend-tests/circ_ref_2.golden diff --git a/PyTutorGAE/tests/backend-tests/circ_ref_2.txt b/v3/tests/backend-tests/circ_ref_2.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/circ_ref_2.txt rename to v3/tests/backend-tests/circ_ref_2.txt diff --git a/PyTutorGAE/tests/backend-tests/circ_ref_fake.golden b/v3/tests/backend-tests/circ_ref_fake.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/circ_ref_fake.golden rename to v3/tests/backend-tests/circ_ref_fake.golden diff --git a/PyTutorGAE/tests/backend-tests/circ_ref_fake.txt b/v3/tests/backend-tests/circ_ref_fake.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/circ_ref_fake.txt rename to v3/tests/backend-tests/circ_ref_fake.txt diff --git a/PyTutorGAE/tests/backend-tests/class_test.golden b/v3/tests/backend-tests/class_test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/class_test.golden rename to v3/tests/backend-tests/class_test.golden diff --git a/PyTutorGAE/tests/backend-tests/class_test.txt b/v3/tests/backend-tests/class_test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/class_test.txt rename to v3/tests/backend-tests/class_test.txt diff --git a/PyTutorGAE/tests/backend-tests/class_test_2.golden b/v3/tests/backend-tests/class_test_2.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/class_test_2.golden rename to v3/tests/backend-tests/class_test_2.golden diff --git a/PyTutorGAE/tests/backend-tests/class_test_2.txt b/v3/tests/backend-tests/class_test_2.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/class_test_2.txt rename to v3/tests/backend-tests/class_test_2.txt diff --git a/PyTutorGAE/tests/backend-tests/class_test_3.golden b/v3/tests/backend-tests/class_test_3.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/class_test_3.golden rename to v3/tests/backend-tests/class_test_3.golden diff --git a/PyTutorGAE/tests/backend-tests/class_test_3.txt b/v3/tests/backend-tests/class_test_3.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/class_test_3.txt rename to v3/tests/backend-tests/class_test_3.txt diff --git a/PyTutorGAE/tests/backend-tests/data_test.golden b/v3/tests/backend-tests/data_test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/data_test.golden rename to v3/tests/backend-tests/data_test.golden diff --git a/PyTutorGAE/tests/backend-tests/data_test.txt b/v3/tests/backend-tests/data_test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/data_test.txt rename to v3/tests/backend-tests/data_test.txt diff --git a/PyTutorGAE/tests/backend-tests/dict_error.golden b/v3/tests/backend-tests/dict_error.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/dict_error.golden rename to v3/tests/backend-tests/dict_error.golden diff --git a/PyTutorGAE/tests/backend-tests/dict_error.txt b/v3/tests/backend-tests/dict_error.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/dict_error.txt rename to v3/tests/backend-tests/dict_error.txt diff --git a/PyTutorGAE/tests/backend-tests/dict_test.golden b/v3/tests/backend-tests/dict_test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/dict_test.golden rename to v3/tests/backend-tests/dict_test.golden diff --git a/PyTutorGAE/tests/backend-tests/dict_test.txt b/v3/tests/backend-tests/dict_test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/dict_test.txt rename to v3/tests/backend-tests/dict_test.txt diff --git a/PyTutorGAE/tests/backend-tests/exec_test.golden b/v3/tests/backend-tests/exec_test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/exec_test.golden rename to v3/tests/backend-tests/exec_test.golden diff --git a/PyTutorGAE/tests/backend-tests/exec_test.txt b/v3/tests/backend-tests/exec_test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/exec_test.txt rename to v3/tests/backend-tests/exec_test.txt diff --git a/PyTutorGAE/tests/backend-tests/func_exception.golden b/v3/tests/backend-tests/func_exception.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/func_exception.golden rename to v3/tests/backend-tests/func_exception.golden diff --git a/PyTutorGAE/tests/backend-tests/func_exception.txt b/v3/tests/backend-tests/func_exception.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/func_exception.txt rename to v3/tests/backend-tests/func_exception.txt diff --git a/PyTutorGAE/tests/backend-tests/generator_test.golden b/v3/tests/backend-tests/generator_test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/generator_test.golden rename to v3/tests/backend-tests/generator_test.golden diff --git a/PyTutorGAE/tests/backend-tests/generator_test.txt b/v3/tests/backend-tests/generator_test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/generator_test.txt rename to v3/tests/backend-tests/generator_test.txt diff --git a/PyTutorGAE/tests/backend-tests/import_error.golden b/v3/tests/backend-tests/import_error.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/import_error.golden rename to v3/tests/backend-tests/import_error.golden diff --git a/PyTutorGAE/tests/backend-tests/import_error.txt b/v3/tests/backend-tests/import_error.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/import_error.txt rename to v3/tests/backend-tests/import_error.txt diff --git a/PyTutorGAE/tests/backend-tests/infinite_loop.golden b/v3/tests/backend-tests/infinite_loop.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/infinite_loop.golden rename to v3/tests/backend-tests/infinite_loop.golden diff --git a/PyTutorGAE/tests/backend-tests/infinite_loop.txt b/v3/tests/backend-tests/infinite_loop.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/infinite_loop.txt rename to v3/tests/backend-tests/infinite_loop.txt diff --git a/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden b/v3/tests/backend-tests/infinite_loop_one_liner.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.golden rename to v3/tests/backend-tests/infinite_loop_one_liner.golden diff --git a/PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.txt b/v3/tests/backend-tests/infinite_loop_one_liner.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/infinite_loop_one_liner.txt rename to v3/tests/backend-tests/infinite_loop_one_liner.txt diff --git a/PyTutorGAE/tests/backend-tests/john-compose.golden b/v3/tests/backend-tests/john-compose.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/john-compose.golden rename to v3/tests/backend-tests/john-compose.golden diff --git a/PyTutorGAE/tests/backend-tests/john-compose.txt b/v3/tests/backend-tests/john-compose.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/john-compose.txt rename to v3/tests/backend-tests/john-compose.txt diff --git a/PyTutorGAE/tests/backend-tests/john-import-test.golden b/v3/tests/backend-tests/john-import-test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/john-import-test.golden rename to v3/tests/backend-tests/john-import-test.golden diff --git a/PyTutorGAE/tests/backend-tests/john-import-test.txt b/v3/tests/backend-tests/john-import-test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/john-import-test.txt rename to v3/tests/backend-tests/john-import-test.txt diff --git a/PyTutorGAE/tests/backend-tests/lambda_1.golden b/v3/tests/backend-tests/lambda_1.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/lambda_1.golden rename to v3/tests/backend-tests/lambda_1.golden diff --git a/PyTutorGAE/tests/backend-tests/lambda_1.txt b/v3/tests/backend-tests/lambda_1.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/lambda_1.txt rename to v3/tests/backend-tests/lambda_1.txt diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-1.golden b/v3/tests/backend-tests/ling-scheme-1.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/ling-scheme-1.golden rename to v3/tests/backend-tests/ling-scheme-1.golden diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-1.txt b/v3/tests/backend-tests/ling-scheme-1.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/ling-scheme-1.txt rename to v3/tests/backend-tests/ling-scheme-1.txt diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-2.golden b/v3/tests/backend-tests/ling-scheme-2.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/ling-scheme-2.golden rename to v3/tests/backend-tests/ling-scheme-2.golden diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-2.txt b/v3/tests/backend-tests/ling-scheme-2.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/ling-scheme-2.txt rename to v3/tests/backend-tests/ling-scheme-2.txt diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-3.golden b/v3/tests/backend-tests/ling-scheme-3.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/ling-scheme-3.golden rename to v3/tests/backend-tests/ling-scheme-3.golden diff --git a/PyTutorGAE/tests/backend-tests/ling-scheme-3.txt b/v3/tests/backend-tests/ling-scheme-3.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/ling-scheme-3.txt rename to v3/tests/backend-tests/ling-scheme-3.txt diff --git a/PyTutorGAE/tests/backend-tests/list_dict_test.golden b/v3/tests/backend-tests/list_dict_test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/list_dict_test.golden rename to v3/tests/backend-tests/list_dict_test.golden diff --git a/PyTutorGAE/tests/backend-tests/list_dict_test.txt b/v3/tests/backend-tests/list_dict_test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/list_dict_test.txt rename to v3/tests/backend-tests/list_dict_test.txt diff --git a/PyTutorGAE/tests/backend-tests/list_test.golden b/v3/tests/backend-tests/list_test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/list_test.golden rename to v3/tests/backend-tests/list_test.golden diff --git a/PyTutorGAE/tests/backend-tests/list_test.txt b/v3/tests/backend-tests/list_test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/list_test.txt rename to v3/tests/backend-tests/list_test.txt diff --git a/PyTutorGAE/tests/backend-tests/newstyle_class.golden b/v3/tests/backend-tests/newstyle_class.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/newstyle_class.golden rename to v3/tests/backend-tests/newstyle_class.golden diff --git a/PyTutorGAE/tests/backend-tests/newstyle_class.txt b/v3/tests/backend-tests/newstyle_class.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/newstyle_class.txt rename to v3/tests/backend-tests/newstyle_class.txt diff --git a/PyTutorGAE/tests/backend-tests/one_func.golden b/v3/tests/backend-tests/one_func.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/one_func.golden rename to v3/tests/backend-tests/one_func.golden diff --git a/PyTutorGAE/tests/backend-tests/one_func.txt b/v3/tests/backend-tests/one_func.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/one_func.txt rename to v3/tests/backend-tests/one_func.txt diff --git a/PyTutorGAE/tests/backend-tests/open_error.golden b/v3/tests/backend-tests/open_error.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/open_error.golden rename to v3/tests/backend-tests/open_error.golden diff --git a/PyTutorGAE/tests/backend-tests/open_error.txt b/v3/tests/backend-tests/open_error.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/open_error.txt rename to v3/tests/backend-tests/open_error.txt diff --git a/PyTutorGAE/tests/backend-tests/parse_error.golden b/v3/tests/backend-tests/parse_error.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/parse_error.golden rename to v3/tests/backend-tests/parse_error.golden diff --git a/PyTutorGAE/tests/backend-tests/parse_error.txt b/v3/tests/backend-tests/parse_error.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/parse_error.txt rename to v3/tests/backend-tests/parse_error.txt diff --git a/PyTutorGAE/tests/backend-tests/parse_error_2.golden b/v3/tests/backend-tests/parse_error_2.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/parse_error_2.golden rename to v3/tests/backend-tests/parse_error_2.golden diff --git a/PyTutorGAE/tests/backend-tests/parse_error_2.txt b/v3/tests/backend-tests/parse_error_2.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/parse_error_2.txt rename to v3/tests/backend-tests/parse_error_2.txt diff --git a/PyTutorGAE/tests/backend-tests/parse_error_3.golden b/v3/tests/backend-tests/parse_error_3.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/parse_error_3.golden rename to v3/tests/backend-tests/parse_error_3.golden diff --git a/PyTutorGAE/tests/backend-tests/parse_error_3.txt b/v3/tests/backend-tests/parse_error_3.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/parse_error_3.txt rename to v3/tests/backend-tests/parse_error_3.txt diff --git a/PyTutorGAE/tests/backend-tests/pie-test.golden b/v3/tests/backend-tests/pie-test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/pie-test.golden rename to v3/tests/backend-tests/pie-test.golden diff --git a/PyTutorGAE/tests/backend-tests/pie-test.txt b/v3/tests/backend-tests/pie-test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/pie-test.txt rename to v3/tests/backend-tests/pie-test.txt diff --git a/PyTutorGAE/tests/backend-tests/print_builtins_error.golden b/v3/tests/backend-tests/print_builtins_error.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/print_builtins_error.golden rename to v3/tests/backend-tests/print_builtins_error.golden diff --git a/PyTutorGAE/tests/backend-tests/print_builtins_error.txt b/v3/tests/backend-tests/print_builtins_error.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/print_builtins_error.txt rename to v3/tests/backend-tests/print_builtins_error.txt diff --git a/PyTutorGAE/tests/backend-tests/runtime_error.golden b/v3/tests/backend-tests/runtime_error.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/runtime_error.golden rename to v3/tests/backend-tests/runtime_error.golden diff --git a/PyTutorGAE/tests/backend-tests/runtime_error.txt b/v3/tests/backend-tests/runtime_error.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/runtime_error.txt rename to v3/tests/backend-tests/runtime_error.txt diff --git a/PyTutorGAE/tests/backend-tests/set_test.golden b/v3/tests/backend-tests/set_test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/set_test.golden rename to v3/tests/backend-tests/set_test.golden diff --git a/PyTutorGAE/tests/backend-tests/set_test.txt b/v3/tests/backend-tests/set_test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/set_test.txt rename to v3/tests/backend-tests/set_test.txt diff --git a/PyTutorGAE/tests/backend-tests/simple.golden b/v3/tests/backend-tests/simple.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/simple.golden rename to v3/tests/backend-tests/simple.golden diff --git a/PyTutorGAE/tests/backend-tests/simple.txt b/v3/tests/backend-tests/simple.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/simple.txt rename to v3/tests/backend-tests/simple.txt diff --git a/PyTutorGAE/tests/backend-tests/three_lists.golden b/v3/tests/backend-tests/three_lists.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/three_lists.golden rename to v3/tests/backend-tests/three_lists.golden diff --git a/PyTutorGAE/tests/backend-tests/three_lists.txt b/v3/tests/backend-tests/three_lists.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/three_lists.txt rename to v3/tests/backend-tests/three_lists.txt diff --git a/PyTutorGAE/tests/backend-tests/tuple_test.golden b/v3/tests/backend-tests/tuple_test.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/tuple_test.golden rename to v3/tests/backend-tests/tuple_test.golden diff --git a/PyTutorGAE/tests/backend-tests/tuple_test.txt b/v3/tests/backend-tests/tuple_test.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/tuple_test.txt rename to v3/tests/backend-tests/tuple_test.txt diff --git a/PyTutorGAE/tests/backend-tests/two_funcs.golden b/v3/tests/backend-tests/two_funcs.golden similarity index 100% rename from PyTutorGAE/tests/backend-tests/two_funcs.golden rename to v3/tests/backend-tests/two_funcs.golden diff --git a/PyTutorGAE/tests/backend-tests/two_funcs.txt b/v3/tests/backend-tests/two_funcs.txt similarity index 100% rename from PyTutorGAE/tests/backend-tests/two_funcs.txt rename to v3/tests/backend-tests/two_funcs.txt diff --git a/PyTutorGAE/tests/example-code b/v3/tests/example-code similarity index 100% rename from PyTutorGAE/tests/example-code rename to v3/tests/example-code diff --git a/PyTutorGAE/tests/golden_test.py b/v3/tests/golden_test.py similarity index 100% rename from PyTutorGAE/tests/golden_test.py rename to v3/tests/golden_test.py diff --git a/PyTutorGAE/tutor.html b/v3/tutor.html similarity index 100% rename from PyTutorGAE/tutor.html rename to v3/tutor.html diff --git a/PyTutorGAE/web_exec.py b/v3/web_exec.py similarity index 100% rename from PyTutorGAE/web_exec.py rename to v3/web_exec.py From 774f08750def052284a48254f0c7f5d34df29c77 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 1 Sep 2012 10:41:14 -0700 Subject: [PATCH 180/502] remove example-code symlink --- v3/example-code | 1 - 1 file changed, 1 deletion(-) delete mode 120000 v3/example-code diff --git a/v3/example-code b/v3/example-code deleted file mode 120000 index 153b6e23a..000000000 --- a/v3/example-code +++ /dev/null @@ -1 +0,0 @@ -../example-code \ No newline at end of file From 86896c80cac18f8b35af201ef2b8050c3e57e37a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 1 Sep 2012 10:41:35 -0700 Subject: [PATCH 181/502] move example-code/ directory into v3/ --- {example-code => v3/example-code}/aliasing.golden | 0 {example-code => v3/example-code}/aliasing.txt | 0 {example-code => v3/example-code}/aliasing/aliasing1.golden | 0 {example-code => v3/example-code}/aliasing/aliasing1.txt | 0 {example-code => v3/example-code}/aliasing/aliasing2.golden | 0 {example-code => v3/example-code}/aliasing/aliasing2.txt | 0 {example-code => v3/example-code}/aliasing/aliasing3.golden | 0 {example-code => v3/example-code}/aliasing/aliasing3.txt | 0 {example-code => v3/example-code}/aliasing/aliasing4.golden | 0 {example-code => v3/example-code}/aliasing/aliasing4.txt | 0 {example-code => v3/example-code}/aliasing/aliasing5.golden | 0 {example-code => v3/example-code}/aliasing/aliasing5.txt | 0 {example-code => v3/example-code}/aliasing/aliasing6.golden | 0 {example-code => v3/example-code}/aliasing/aliasing6.txt | 0 {example-code => v3/example-code}/aliasing/aliasing7.golden | 0 {example-code => v3/example-code}/aliasing/aliasing7.txt | 0 {example-code => v3/example-code}/aliasing/aliasing8.golden | 0 {example-code => v3/example-code}/aliasing/aliasing8.txt | 0 {example-code => v3/example-code}/closures/closure1.golden | 0 {example-code => v3/example-code}/closures/closure1.txt | 0 {example-code => v3/example-code}/closures/closure2.golden | 0 {example-code => v3/example-code}/closures/closure2.txt | 0 {example-code => v3/example-code}/closures/closure3.golden | 0 {example-code => v3/example-code}/closures/closure3.txt | 0 {example-code => v3/example-code}/closures/closure4.golden | 0 {example-code => v3/example-code}/closures/closure4.txt | 0 {example-code => v3/example-code}/closures/closure5.golden | 0 {example-code => v3/example-code}/closures/closure5.txt | 0 {example-code => v3/example-code}/closures/lambda-param.golden | 0 {example-code => v3/example-code}/closures/lambda-param.txt | 0 {example-code => v3/example-code}/decorators.golden | 0 {example-code => v3/example-code}/decorators.txt | 0 {example-code => v3/example-code}/fact.golden | 0 {example-code => v3/example-code}/fact.txt | 0 {example-code => v3/example-code}/fib.golden | 0 {example-code => v3/example-code}/fib.txt | 0 {example-code => v3/example-code}/filter.golden | 0 {example-code => v3/example-code}/filter.txt | 0 {example-code => v3/example-code}/ins_sort.golden | 0 {example-code => v3/example-code}/ins_sort.txt | 0 {example-code => v3/example-code}/linked-lists/ll1.golden | 0 {example-code => v3/example-code}/linked-lists/ll1.txt | 0 {example-code => v3/example-code}/linked-lists/ll2.golden | 0 {example-code => v3/example-code}/linked-lists/ll2.txt | 0 {example-code => v3/example-code}/map.golden | 0 {example-code => v3/example-code}/map.txt | 0 {example-code => v3/example-code}/memo_fib.golden | 0 {example-code => v3/example-code}/memo_fib.txt | 0 {example-code => v3/example-code}/oop_1.golden | 0 {example-code => v3/example-code}/oop_1.txt | 0 {example-code => v3/example-code}/oop_2.golden | 0 {example-code => v3/example-code}/oop_2.txt | 0 {example-code => v3/example-code}/oop_inherit.golden | 0 {example-code => v3/example-code}/oop_inherit.txt | 0 {example-code => v3/example-code}/oop_small.golden | 0 {example-code => v3/example-code}/oop_small.txt | 0 {example-code => v3/example-code}/py_tutorial.golden | 0 {example-code => v3/example-code}/py_tutorial.txt | 0 {example-code => v3/example-code}/sqrt.golden | 0 {example-code => v3/example-code}/sqrt.txt | 0 {example-code => v3/example-code}/strtok.golden | 0 {example-code => v3/example-code}/strtok.txt | 0 {example-code => v3/example-code}/sum-cubes.golden | 0 {example-code => v3/example-code}/sum-cubes.txt | 0 {example-code => v3/example-code}/sum.golden | 0 {example-code => v3/example-code}/sum.txt | 0 {example-code => v3/example-code}/towers_of_hanoi.golden | 0 {example-code => v3/example-code}/towers_of_hanoi.txt | 0 {example-code => v3/example-code}/wentworth_gcd.golden | 0 {example-code => v3/example-code}/wentworth_gcd.txt | 0 {example-code => v3/example-code}/wentworth_sumList.golden | 0 {example-code => v3/example-code}/wentworth_sumList.txt | 0 {example-code => v3/example-code}/wentworth_try_finally.golden | 0 {example-code => v3/example-code}/wentworth_try_finally.txt | 0 74 files changed, 0 insertions(+), 0 deletions(-) rename {example-code => v3/example-code}/aliasing.golden (100%) rename {example-code => v3/example-code}/aliasing.txt (100%) rename {example-code => v3/example-code}/aliasing/aliasing1.golden (100%) rename {example-code => v3/example-code}/aliasing/aliasing1.txt (100%) rename {example-code => v3/example-code}/aliasing/aliasing2.golden (100%) rename {example-code => v3/example-code}/aliasing/aliasing2.txt (100%) rename {example-code => v3/example-code}/aliasing/aliasing3.golden (100%) rename {example-code => v3/example-code}/aliasing/aliasing3.txt (100%) rename {example-code => v3/example-code}/aliasing/aliasing4.golden (100%) rename {example-code => v3/example-code}/aliasing/aliasing4.txt (100%) rename {example-code => v3/example-code}/aliasing/aliasing5.golden (100%) rename {example-code => v3/example-code}/aliasing/aliasing5.txt (100%) rename {example-code => v3/example-code}/aliasing/aliasing6.golden (100%) rename {example-code => v3/example-code}/aliasing/aliasing6.txt (100%) rename {example-code => v3/example-code}/aliasing/aliasing7.golden (100%) rename {example-code => v3/example-code}/aliasing/aliasing7.txt (100%) rename {example-code => v3/example-code}/aliasing/aliasing8.golden (100%) rename {example-code => v3/example-code}/aliasing/aliasing8.txt (100%) rename {example-code => v3/example-code}/closures/closure1.golden (100%) rename {example-code => v3/example-code}/closures/closure1.txt (100%) rename {example-code => v3/example-code}/closures/closure2.golden (100%) rename {example-code => v3/example-code}/closures/closure2.txt (100%) rename {example-code => v3/example-code}/closures/closure3.golden (100%) rename {example-code => v3/example-code}/closures/closure3.txt (100%) rename {example-code => v3/example-code}/closures/closure4.golden (100%) rename {example-code => v3/example-code}/closures/closure4.txt (100%) rename {example-code => v3/example-code}/closures/closure5.golden (100%) rename {example-code => v3/example-code}/closures/closure5.txt (100%) rename {example-code => v3/example-code}/closures/lambda-param.golden (100%) rename {example-code => v3/example-code}/closures/lambda-param.txt (100%) rename {example-code => v3/example-code}/decorators.golden (100%) rename {example-code => v3/example-code}/decorators.txt (100%) rename {example-code => v3/example-code}/fact.golden (100%) rename {example-code => v3/example-code}/fact.txt (100%) rename {example-code => v3/example-code}/fib.golden (100%) rename {example-code => v3/example-code}/fib.txt (100%) rename {example-code => v3/example-code}/filter.golden (100%) rename {example-code => v3/example-code}/filter.txt (100%) rename {example-code => v3/example-code}/ins_sort.golden (100%) rename {example-code => v3/example-code}/ins_sort.txt (100%) rename {example-code => v3/example-code}/linked-lists/ll1.golden (100%) rename {example-code => v3/example-code}/linked-lists/ll1.txt (100%) rename {example-code => v3/example-code}/linked-lists/ll2.golden (100%) rename {example-code => v3/example-code}/linked-lists/ll2.txt (100%) rename {example-code => v3/example-code}/map.golden (100%) rename {example-code => v3/example-code}/map.txt (100%) rename {example-code => v3/example-code}/memo_fib.golden (100%) rename {example-code => v3/example-code}/memo_fib.txt (100%) rename {example-code => v3/example-code}/oop_1.golden (100%) rename {example-code => v3/example-code}/oop_1.txt (100%) rename {example-code => v3/example-code}/oop_2.golden (100%) rename {example-code => v3/example-code}/oop_2.txt (100%) rename {example-code => v3/example-code}/oop_inherit.golden (100%) rename {example-code => v3/example-code}/oop_inherit.txt (100%) rename {example-code => v3/example-code}/oop_small.golden (100%) rename {example-code => v3/example-code}/oop_small.txt (100%) rename {example-code => v3/example-code}/py_tutorial.golden (100%) rename {example-code => v3/example-code}/py_tutorial.txt (100%) rename {example-code => v3/example-code}/sqrt.golden (100%) rename {example-code => v3/example-code}/sqrt.txt (100%) rename {example-code => v3/example-code}/strtok.golden (100%) rename {example-code => v3/example-code}/strtok.txt (100%) rename {example-code => v3/example-code}/sum-cubes.golden (100%) rename {example-code => v3/example-code}/sum-cubes.txt (100%) rename {example-code => v3/example-code}/sum.golden (100%) rename {example-code => v3/example-code}/sum.txt (100%) rename {example-code => v3/example-code}/towers_of_hanoi.golden (100%) rename {example-code => v3/example-code}/towers_of_hanoi.txt (100%) rename {example-code => v3/example-code}/wentworth_gcd.golden (100%) rename {example-code => v3/example-code}/wentworth_gcd.txt (100%) rename {example-code => v3/example-code}/wentworth_sumList.golden (100%) rename {example-code => v3/example-code}/wentworth_sumList.txt (100%) rename {example-code => v3/example-code}/wentworth_try_finally.golden (100%) rename {example-code => v3/example-code}/wentworth_try_finally.txt (100%) diff --git a/example-code/aliasing.golden b/v3/example-code/aliasing.golden similarity index 100% rename from example-code/aliasing.golden rename to v3/example-code/aliasing.golden diff --git a/example-code/aliasing.txt b/v3/example-code/aliasing.txt similarity index 100% rename from example-code/aliasing.txt rename to v3/example-code/aliasing.txt diff --git a/example-code/aliasing/aliasing1.golden b/v3/example-code/aliasing/aliasing1.golden similarity index 100% rename from example-code/aliasing/aliasing1.golden rename to v3/example-code/aliasing/aliasing1.golden diff --git a/example-code/aliasing/aliasing1.txt b/v3/example-code/aliasing/aliasing1.txt similarity index 100% rename from example-code/aliasing/aliasing1.txt rename to v3/example-code/aliasing/aliasing1.txt diff --git a/example-code/aliasing/aliasing2.golden b/v3/example-code/aliasing/aliasing2.golden similarity index 100% rename from example-code/aliasing/aliasing2.golden rename to v3/example-code/aliasing/aliasing2.golden diff --git a/example-code/aliasing/aliasing2.txt b/v3/example-code/aliasing/aliasing2.txt similarity index 100% rename from example-code/aliasing/aliasing2.txt rename to v3/example-code/aliasing/aliasing2.txt diff --git a/example-code/aliasing/aliasing3.golden b/v3/example-code/aliasing/aliasing3.golden similarity index 100% rename from example-code/aliasing/aliasing3.golden rename to v3/example-code/aliasing/aliasing3.golden diff --git a/example-code/aliasing/aliasing3.txt b/v3/example-code/aliasing/aliasing3.txt similarity index 100% rename from example-code/aliasing/aliasing3.txt rename to v3/example-code/aliasing/aliasing3.txt diff --git a/example-code/aliasing/aliasing4.golden b/v3/example-code/aliasing/aliasing4.golden similarity index 100% rename from example-code/aliasing/aliasing4.golden rename to v3/example-code/aliasing/aliasing4.golden diff --git a/example-code/aliasing/aliasing4.txt b/v3/example-code/aliasing/aliasing4.txt similarity index 100% rename from example-code/aliasing/aliasing4.txt rename to v3/example-code/aliasing/aliasing4.txt diff --git a/example-code/aliasing/aliasing5.golden b/v3/example-code/aliasing/aliasing5.golden similarity index 100% rename from example-code/aliasing/aliasing5.golden rename to v3/example-code/aliasing/aliasing5.golden diff --git a/example-code/aliasing/aliasing5.txt b/v3/example-code/aliasing/aliasing5.txt similarity index 100% rename from example-code/aliasing/aliasing5.txt rename to v3/example-code/aliasing/aliasing5.txt diff --git a/example-code/aliasing/aliasing6.golden b/v3/example-code/aliasing/aliasing6.golden similarity index 100% rename from example-code/aliasing/aliasing6.golden rename to v3/example-code/aliasing/aliasing6.golden diff --git a/example-code/aliasing/aliasing6.txt b/v3/example-code/aliasing/aliasing6.txt similarity index 100% rename from example-code/aliasing/aliasing6.txt rename to v3/example-code/aliasing/aliasing6.txt diff --git a/example-code/aliasing/aliasing7.golden b/v3/example-code/aliasing/aliasing7.golden similarity index 100% rename from example-code/aliasing/aliasing7.golden rename to v3/example-code/aliasing/aliasing7.golden diff --git a/example-code/aliasing/aliasing7.txt b/v3/example-code/aliasing/aliasing7.txt similarity index 100% rename from example-code/aliasing/aliasing7.txt rename to v3/example-code/aliasing/aliasing7.txt diff --git a/example-code/aliasing/aliasing8.golden b/v3/example-code/aliasing/aliasing8.golden similarity index 100% rename from example-code/aliasing/aliasing8.golden rename to v3/example-code/aliasing/aliasing8.golden diff --git a/example-code/aliasing/aliasing8.txt b/v3/example-code/aliasing/aliasing8.txt similarity index 100% rename from example-code/aliasing/aliasing8.txt rename to v3/example-code/aliasing/aliasing8.txt diff --git a/example-code/closures/closure1.golden b/v3/example-code/closures/closure1.golden similarity index 100% rename from example-code/closures/closure1.golden rename to v3/example-code/closures/closure1.golden diff --git a/example-code/closures/closure1.txt b/v3/example-code/closures/closure1.txt similarity index 100% rename from example-code/closures/closure1.txt rename to v3/example-code/closures/closure1.txt diff --git a/example-code/closures/closure2.golden b/v3/example-code/closures/closure2.golden similarity index 100% rename from example-code/closures/closure2.golden rename to v3/example-code/closures/closure2.golden diff --git a/example-code/closures/closure2.txt b/v3/example-code/closures/closure2.txt similarity index 100% rename from example-code/closures/closure2.txt rename to v3/example-code/closures/closure2.txt diff --git a/example-code/closures/closure3.golden b/v3/example-code/closures/closure3.golden similarity index 100% rename from example-code/closures/closure3.golden rename to v3/example-code/closures/closure3.golden diff --git a/example-code/closures/closure3.txt b/v3/example-code/closures/closure3.txt similarity index 100% rename from example-code/closures/closure3.txt rename to v3/example-code/closures/closure3.txt diff --git a/example-code/closures/closure4.golden b/v3/example-code/closures/closure4.golden similarity index 100% rename from example-code/closures/closure4.golden rename to v3/example-code/closures/closure4.golden diff --git a/example-code/closures/closure4.txt b/v3/example-code/closures/closure4.txt similarity index 100% rename from example-code/closures/closure4.txt rename to v3/example-code/closures/closure4.txt diff --git a/example-code/closures/closure5.golden b/v3/example-code/closures/closure5.golden similarity index 100% rename from example-code/closures/closure5.golden rename to v3/example-code/closures/closure5.golden diff --git a/example-code/closures/closure5.txt b/v3/example-code/closures/closure5.txt similarity index 100% rename from example-code/closures/closure5.txt rename to v3/example-code/closures/closure5.txt diff --git a/example-code/closures/lambda-param.golden b/v3/example-code/closures/lambda-param.golden similarity index 100% rename from example-code/closures/lambda-param.golden rename to v3/example-code/closures/lambda-param.golden diff --git a/example-code/closures/lambda-param.txt b/v3/example-code/closures/lambda-param.txt similarity index 100% rename from example-code/closures/lambda-param.txt rename to v3/example-code/closures/lambda-param.txt diff --git a/example-code/decorators.golden b/v3/example-code/decorators.golden similarity index 100% rename from example-code/decorators.golden rename to v3/example-code/decorators.golden diff --git a/example-code/decorators.txt b/v3/example-code/decorators.txt similarity index 100% rename from example-code/decorators.txt rename to v3/example-code/decorators.txt diff --git a/example-code/fact.golden b/v3/example-code/fact.golden similarity index 100% rename from example-code/fact.golden rename to v3/example-code/fact.golden diff --git a/example-code/fact.txt b/v3/example-code/fact.txt similarity index 100% rename from example-code/fact.txt rename to v3/example-code/fact.txt diff --git a/example-code/fib.golden b/v3/example-code/fib.golden similarity index 100% rename from example-code/fib.golden rename to v3/example-code/fib.golden diff --git a/example-code/fib.txt b/v3/example-code/fib.txt similarity index 100% rename from example-code/fib.txt rename to v3/example-code/fib.txt diff --git a/example-code/filter.golden b/v3/example-code/filter.golden similarity index 100% rename from example-code/filter.golden rename to v3/example-code/filter.golden diff --git a/example-code/filter.txt b/v3/example-code/filter.txt similarity index 100% rename from example-code/filter.txt rename to v3/example-code/filter.txt diff --git a/example-code/ins_sort.golden b/v3/example-code/ins_sort.golden similarity index 100% rename from example-code/ins_sort.golden rename to v3/example-code/ins_sort.golden diff --git a/example-code/ins_sort.txt b/v3/example-code/ins_sort.txt similarity index 100% rename from example-code/ins_sort.txt rename to v3/example-code/ins_sort.txt diff --git a/example-code/linked-lists/ll1.golden b/v3/example-code/linked-lists/ll1.golden similarity index 100% rename from example-code/linked-lists/ll1.golden rename to v3/example-code/linked-lists/ll1.golden diff --git a/example-code/linked-lists/ll1.txt b/v3/example-code/linked-lists/ll1.txt similarity index 100% rename from example-code/linked-lists/ll1.txt rename to v3/example-code/linked-lists/ll1.txt diff --git a/example-code/linked-lists/ll2.golden b/v3/example-code/linked-lists/ll2.golden similarity index 100% rename from example-code/linked-lists/ll2.golden rename to v3/example-code/linked-lists/ll2.golden diff --git a/example-code/linked-lists/ll2.txt b/v3/example-code/linked-lists/ll2.txt similarity index 100% rename from example-code/linked-lists/ll2.txt rename to v3/example-code/linked-lists/ll2.txt diff --git a/example-code/map.golden b/v3/example-code/map.golden similarity index 100% rename from example-code/map.golden rename to v3/example-code/map.golden diff --git a/example-code/map.txt b/v3/example-code/map.txt similarity index 100% rename from example-code/map.txt rename to v3/example-code/map.txt diff --git a/example-code/memo_fib.golden b/v3/example-code/memo_fib.golden similarity index 100% rename from example-code/memo_fib.golden rename to v3/example-code/memo_fib.golden diff --git a/example-code/memo_fib.txt b/v3/example-code/memo_fib.txt similarity index 100% rename from example-code/memo_fib.txt rename to v3/example-code/memo_fib.txt diff --git a/example-code/oop_1.golden b/v3/example-code/oop_1.golden similarity index 100% rename from example-code/oop_1.golden rename to v3/example-code/oop_1.golden diff --git a/example-code/oop_1.txt b/v3/example-code/oop_1.txt similarity index 100% rename from example-code/oop_1.txt rename to v3/example-code/oop_1.txt diff --git a/example-code/oop_2.golden b/v3/example-code/oop_2.golden similarity index 100% rename from example-code/oop_2.golden rename to v3/example-code/oop_2.golden diff --git a/example-code/oop_2.txt b/v3/example-code/oop_2.txt similarity index 100% rename from example-code/oop_2.txt rename to v3/example-code/oop_2.txt diff --git a/example-code/oop_inherit.golden b/v3/example-code/oop_inherit.golden similarity index 100% rename from example-code/oop_inherit.golden rename to v3/example-code/oop_inherit.golden diff --git a/example-code/oop_inherit.txt b/v3/example-code/oop_inherit.txt similarity index 100% rename from example-code/oop_inherit.txt rename to v3/example-code/oop_inherit.txt diff --git a/example-code/oop_small.golden b/v3/example-code/oop_small.golden similarity index 100% rename from example-code/oop_small.golden rename to v3/example-code/oop_small.golden diff --git a/example-code/oop_small.txt b/v3/example-code/oop_small.txt similarity index 100% rename from example-code/oop_small.txt rename to v3/example-code/oop_small.txt diff --git a/example-code/py_tutorial.golden b/v3/example-code/py_tutorial.golden similarity index 100% rename from example-code/py_tutorial.golden rename to v3/example-code/py_tutorial.golden diff --git a/example-code/py_tutorial.txt b/v3/example-code/py_tutorial.txt similarity index 100% rename from example-code/py_tutorial.txt rename to v3/example-code/py_tutorial.txt diff --git a/example-code/sqrt.golden b/v3/example-code/sqrt.golden similarity index 100% rename from example-code/sqrt.golden rename to v3/example-code/sqrt.golden diff --git a/example-code/sqrt.txt b/v3/example-code/sqrt.txt similarity index 100% rename from example-code/sqrt.txt rename to v3/example-code/sqrt.txt diff --git a/example-code/strtok.golden b/v3/example-code/strtok.golden similarity index 100% rename from example-code/strtok.golden rename to v3/example-code/strtok.golden diff --git a/example-code/strtok.txt b/v3/example-code/strtok.txt similarity index 100% rename from example-code/strtok.txt rename to v3/example-code/strtok.txt diff --git a/example-code/sum-cubes.golden b/v3/example-code/sum-cubes.golden similarity index 100% rename from example-code/sum-cubes.golden rename to v3/example-code/sum-cubes.golden diff --git a/example-code/sum-cubes.txt b/v3/example-code/sum-cubes.txt similarity index 100% rename from example-code/sum-cubes.txt rename to v3/example-code/sum-cubes.txt diff --git a/example-code/sum.golden b/v3/example-code/sum.golden similarity index 100% rename from example-code/sum.golden rename to v3/example-code/sum.golden diff --git a/example-code/sum.txt b/v3/example-code/sum.txt similarity index 100% rename from example-code/sum.txt rename to v3/example-code/sum.txt diff --git a/example-code/towers_of_hanoi.golden b/v3/example-code/towers_of_hanoi.golden similarity index 100% rename from example-code/towers_of_hanoi.golden rename to v3/example-code/towers_of_hanoi.golden diff --git a/example-code/towers_of_hanoi.txt b/v3/example-code/towers_of_hanoi.txt similarity index 100% rename from example-code/towers_of_hanoi.txt rename to v3/example-code/towers_of_hanoi.txt diff --git a/example-code/wentworth_gcd.golden b/v3/example-code/wentworth_gcd.golden similarity index 100% rename from example-code/wentworth_gcd.golden rename to v3/example-code/wentworth_gcd.golden diff --git a/example-code/wentworth_gcd.txt b/v3/example-code/wentworth_gcd.txt similarity index 100% rename from example-code/wentworth_gcd.txt rename to v3/example-code/wentworth_gcd.txt diff --git a/example-code/wentworth_sumList.golden b/v3/example-code/wentworth_sumList.golden similarity index 100% rename from example-code/wentworth_sumList.golden rename to v3/example-code/wentworth_sumList.golden diff --git a/example-code/wentworth_sumList.txt b/v3/example-code/wentworth_sumList.txt similarity index 100% rename from example-code/wentworth_sumList.txt rename to v3/example-code/wentworth_sumList.txt diff --git a/example-code/wentworth_try_finally.golden b/v3/example-code/wentworth_try_finally.golden similarity index 100% rename from example-code/wentworth_try_finally.golden rename to v3/example-code/wentworth_try_finally.golden diff --git a/example-code/wentworth_try_finally.txt b/v3/example-code/wentworth_try_finally.txt similarity index 100% rename from example-code/wentworth_try_finally.txt rename to v3/example-code/wentworth_try_finally.txt From d88132c67a302024bef07eccba29c6e6d428f97b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 1 Sep 2012 10:44:06 -0700 Subject: [PATCH 182/502] re-added symlink --- v3/tests/example-code | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/tests/example-code b/v3/tests/example-code index 5a6481d0b..153b6e23a 120000 --- a/v3/tests/example-code +++ b/v3/tests/example-code @@ -1 +1 @@ -../../example-code \ No newline at end of file +../example-code \ No newline at end of file From 5da2371acb9ddf316e37e4a64ba9a73b50f842a3 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 1 Sep 2012 10:47:51 -0700 Subject: [PATCH 183/502] moved existing top-level code into v2/ --- Python3-porting.txt => v2/Python3-porting.txt | 0 README => v2/README | 0 TODO => v2/TODO | 0 alias-screenshot.png => v2/alias-screenshot.png | Bin {cgi-bin => v2/cgi-bin}/.htaccess | 0 {cgi-bin => v2/cgi-bin}/create_db.py | 0 {cgi-bin => v2/cgi-bin}/db_common.py | 0 {cgi-bin => v2/cgi-bin}/index.html | 0 {cgi-bin => v2/cgi-bin}/load_question.py | 0 {cgi-bin => v2/cgi-bin}/p4_encoder.py | 0 {cgi-bin => v2/cgi-bin}/parse_questions.py | 0 {cgi-bin => v2/cgi-bin}/pg_encoder.py | 0 {cgi-bin => v2/cgi-bin}/pg_logger.py | 0 {cgi-bin => v2/cgi-bin}/run_tests.py | 0 {cgi-bin => v2/cgi-bin}/web_exec.py | 0 {cgi-bin => v2/cgi-bin}/web_run_test.py | 0 .../edu-python-questions.js | 0 edu-python-title.css => v2/edu-python-title.css | 0 edu-python-tutor.js => v2/edu-python-tutor.js | 0 edu-python.css => v2/edu-python.css | 0 edu-python.js => v2/edu-python.js | 0 v2/example-code | 1 + grading-375.png => v2/grading-375.png | Bin hunt-mcilroy.js => v2/hunt-mcilroy.js | 0 index.html => v2/index.html | 0 jquery-1.3.2.min.js => v2/jquery-1.3.2.min.js | 0 jquery.autogrow.js => v2/jquery.autogrow.js | 0 jquery.ba-bbq.min.js => v2/jquery.ba-bbq.min.js | 0 jquery.corner.js => v2/jquery.corner.js | 0 .../jquery.jsPlumb-1.3.3-all-min.js | 0 jquery.min.js => v2/jquery.min.js | 0 jsplumb-test.js => v2/jsplumb-test.js | 0 mock-data.js => v2/mock-data.js | 0 question.html => v2/question.html | 0 {questions => v2/questions}/debug-bsearch.txt | 0 {questions => v2/questions}/debug-ireverse.txt | 0 {questions => v2/questions}/debug-mergesort.txt | 0 {questions => v2/questions}/optimize-find-dups.txt | 0 {questions => v2/questions}/optimize-search.txt | 0 {questions => v2/questions}/optimize-sum.txt | 0 {questions => v2/questions}/remove-dups.txt | 0 {questions => v2/questions}/reverse.txt | 0 {questions => v2/questions}/two-sum.txt | 0 red-sad-face.jpg => v2/red-sad-face.jpg | Bin .../test-programs}/caught_exception_1.golden | 0 .../test-programs}/caught_exception_1.py | 0 .../test-programs}/caught_exception_2.golden | 0 .../test-programs}/caught_exception_2.py | 0 {test-programs => v2/test-programs}/circ_ref.golden | 0 {test-programs => v2/test-programs}/circ_ref.py | 0 .../test-programs}/circ_ref_2.golden | 0 {test-programs => v2/test-programs}/circ_ref_2.py | 0 .../test-programs}/circ_ref_fake.golden | 0 .../test-programs}/circ_ref_fake.py | 0 .../test-programs}/class_test.golden | 0 {test-programs => v2/test-programs}/class_test.py | 0 .../test-programs}/class_test_2.golden | 0 {test-programs => v2/test-programs}/class_test_2.py | 0 .../test-programs}/class_test_3.golden | 0 {test-programs => v2/test-programs}/class_test_3.py | 0 .../test-programs}/data_test.golden | 0 {test-programs => v2/test-programs}/data_test.py | 0 .../test-programs}/dict_error.golden | 0 {test-programs => v2/test-programs}/dict_error.py | 0 .../test-programs}/dict_test.golden | 0 {test-programs => v2/test-programs}/dict_test.py | 0 .../test-programs}/exec_test.golden | 0 {test-programs => v2/test-programs}/exec_test.py | 0 .../test-programs}/func_exception.golden | 0 .../test-programs}/func_exception.py | 0 .../test-programs}/generator_test.golden | 0 .../test-programs}/generator_test.py | 0 .../test-programs}/import_error.golden | 0 {test-programs => v2/test-programs}/import_error.py | 0 .../test-programs}/infinite_loop.golden | 0 .../test-programs}/infinite_loop.py | 0 .../test-programs}/infinite_loop_one_liner.golden | 0 .../test-programs}/infinite_loop_one_liner.py | 0 {test-programs => v2/test-programs}/lambda_1.golden | 0 {test-programs => v2/test-programs}/lambda_1.py | 0 .../test-programs}/list_dict_test.golden | 0 .../test-programs}/list_dict_test.py | 0 .../test-programs}/list_test.golden | 0 {test-programs => v2/test-programs}/list_test.py | 0 .../test-programs}/newstyle_class.golden | 0 .../test-programs}/newstyle_class.py | 0 {test-programs => v2/test-programs}/one_func.golden | 0 {test-programs => v2/test-programs}/one_func.py | 0 .../test-programs}/open_error.golden | 0 {test-programs => v2/test-programs}/open_error.py | 0 .../test-programs}/parse_error.golden | 0 {test-programs => v2/test-programs}/parse_error.py | 0 .../test-programs}/parse_error_2.golden | 0 .../test-programs}/parse_error_2.py | 0 .../test-programs}/parse_error_3.golden | 0 .../test-programs}/parse_error_3.py | 0 .../test-programs}/print_builtins_error.golden | 0 .../test-programs}/print_builtins_error.py | 0 .../test-programs}/runtime_error.golden | 0 .../test-programs}/runtime_error.py | 0 {test-programs => v2/test-programs}/set_test.golden | 0 {test-programs => v2/test-programs}/set_test.py | 0 {test-programs => v2/test-programs}/simple.golden | 0 {test-programs => v2/test-programs}/simple.py | 0 .../test-programs}/three_lists.golden | 0 {test-programs => v2/test-programs}/three_lists.py | 0 .../test-programs}/tuple_test.golden | 0 {test-programs => v2/test-programs}/tuple_test.py | 0 .../test-programs}/two_funcs.golden | 0 {test-programs => v2/test-programs}/two_funcs.py | 0 tutor.html => v2/tutor.html | 0 {tutorials => v2/tutorials}/MIT-6.01/README | 0 {tutorials => v2/tutorials}/MIT-6.01/map.py | 0 {tutorials => v2/tutorials}/MIT-6.01/oop_1.py | 0 {tutorials => v2/tutorials}/MIT-6.01/oop_2.py | 0 {tutorials => v2/tutorials}/MIT-6.01/oop_3.py | 0 {tutorials => v2/tutorials}/MIT-6.01/summation.py | 0 {tutorials => v2/tutorials}/README | 0 {tutorials => v2/tutorials}/advanced/map.py | 0 {tutorials => v2/tutorials}/math/newton.py | 0 {tutorials => v2/tutorials}/oop/oop_demo.py | 0 .../personal-finance/compound_interest.py | 0 yellow-happy-face.png => v2/yellow-happy-face.png | Bin 123 files changed, 1 insertion(+) rename Python3-porting.txt => v2/Python3-porting.txt (100%) rename README => v2/README (100%) rename TODO => v2/TODO (100%) rename alias-screenshot.png => v2/alias-screenshot.png (100%) rename {cgi-bin => v2/cgi-bin}/.htaccess (100%) rename {cgi-bin => v2/cgi-bin}/create_db.py (100%) rename {cgi-bin => v2/cgi-bin}/db_common.py (100%) rename {cgi-bin => v2/cgi-bin}/index.html (100%) rename {cgi-bin => v2/cgi-bin}/load_question.py (100%) rename {cgi-bin => v2/cgi-bin}/p4_encoder.py (100%) rename {cgi-bin => v2/cgi-bin}/parse_questions.py (100%) rename {cgi-bin => v2/cgi-bin}/pg_encoder.py (100%) rename {cgi-bin => v2/cgi-bin}/pg_logger.py (100%) rename {cgi-bin => v2/cgi-bin}/run_tests.py (100%) rename {cgi-bin => v2/cgi-bin}/web_exec.py (100%) rename {cgi-bin => v2/cgi-bin}/web_run_test.py (100%) rename edu-python-questions.js => v2/edu-python-questions.js (100%) rename edu-python-title.css => v2/edu-python-title.css (100%) rename edu-python-tutor.js => v2/edu-python-tutor.js (100%) rename edu-python.css => v2/edu-python.css (100%) rename edu-python.js => v2/edu-python.js (100%) create mode 120000 v2/example-code rename grading-375.png => v2/grading-375.png (100%) rename hunt-mcilroy.js => v2/hunt-mcilroy.js (100%) rename index.html => v2/index.html (100%) rename jquery-1.3.2.min.js => v2/jquery-1.3.2.min.js (100%) rename jquery.autogrow.js => v2/jquery.autogrow.js (100%) rename jquery.ba-bbq.min.js => v2/jquery.ba-bbq.min.js (100%) rename jquery.corner.js => v2/jquery.corner.js (100%) rename jquery.jsPlumb-1.3.3-all-min.js => v2/jquery.jsPlumb-1.3.3-all-min.js (100%) rename jquery.min.js => v2/jquery.min.js (100%) rename jsplumb-test.js => v2/jsplumb-test.js (100%) rename mock-data.js => v2/mock-data.js (100%) rename question.html => v2/question.html (100%) rename {questions => v2/questions}/debug-bsearch.txt (100%) rename {questions => v2/questions}/debug-ireverse.txt (100%) rename {questions => v2/questions}/debug-mergesort.txt (100%) rename {questions => v2/questions}/optimize-find-dups.txt (100%) rename {questions => v2/questions}/optimize-search.txt (100%) rename {questions => v2/questions}/optimize-sum.txt (100%) rename {questions => v2/questions}/remove-dups.txt (100%) rename {questions => v2/questions}/reverse.txt (100%) rename {questions => v2/questions}/two-sum.txt (100%) rename red-sad-face.jpg => v2/red-sad-face.jpg (100%) rename {test-programs => v2/test-programs}/caught_exception_1.golden (100%) rename {test-programs => v2/test-programs}/caught_exception_1.py (100%) rename {test-programs => v2/test-programs}/caught_exception_2.golden (100%) rename {test-programs => v2/test-programs}/caught_exception_2.py (100%) rename {test-programs => v2/test-programs}/circ_ref.golden (100%) rename {test-programs => v2/test-programs}/circ_ref.py (100%) rename {test-programs => v2/test-programs}/circ_ref_2.golden (100%) rename {test-programs => v2/test-programs}/circ_ref_2.py (100%) rename {test-programs => v2/test-programs}/circ_ref_fake.golden (100%) rename {test-programs => v2/test-programs}/circ_ref_fake.py (100%) rename {test-programs => v2/test-programs}/class_test.golden (100%) rename {test-programs => v2/test-programs}/class_test.py (100%) rename {test-programs => v2/test-programs}/class_test_2.golden (100%) rename {test-programs => v2/test-programs}/class_test_2.py (100%) rename {test-programs => v2/test-programs}/class_test_3.golden (100%) rename {test-programs => v2/test-programs}/class_test_3.py (100%) rename {test-programs => v2/test-programs}/data_test.golden (100%) rename {test-programs => v2/test-programs}/data_test.py (100%) rename {test-programs => v2/test-programs}/dict_error.golden (100%) rename {test-programs => v2/test-programs}/dict_error.py (100%) rename {test-programs => v2/test-programs}/dict_test.golden (100%) rename {test-programs => v2/test-programs}/dict_test.py (100%) rename {test-programs => v2/test-programs}/exec_test.golden (100%) rename {test-programs => v2/test-programs}/exec_test.py (100%) rename {test-programs => v2/test-programs}/func_exception.golden (100%) rename {test-programs => v2/test-programs}/func_exception.py (100%) rename {test-programs => v2/test-programs}/generator_test.golden (100%) rename {test-programs => v2/test-programs}/generator_test.py (100%) rename {test-programs => v2/test-programs}/import_error.golden (100%) rename {test-programs => v2/test-programs}/import_error.py (100%) rename {test-programs => v2/test-programs}/infinite_loop.golden (100%) rename {test-programs => v2/test-programs}/infinite_loop.py (100%) rename {test-programs => v2/test-programs}/infinite_loop_one_liner.golden (100%) rename {test-programs => v2/test-programs}/infinite_loop_one_liner.py (100%) rename {test-programs => v2/test-programs}/lambda_1.golden (100%) rename {test-programs => v2/test-programs}/lambda_1.py (100%) rename {test-programs => v2/test-programs}/list_dict_test.golden (100%) rename {test-programs => v2/test-programs}/list_dict_test.py (100%) rename {test-programs => v2/test-programs}/list_test.golden (100%) rename {test-programs => v2/test-programs}/list_test.py (100%) rename {test-programs => v2/test-programs}/newstyle_class.golden (100%) rename {test-programs => v2/test-programs}/newstyle_class.py (100%) rename {test-programs => v2/test-programs}/one_func.golden (100%) rename {test-programs => v2/test-programs}/one_func.py (100%) rename {test-programs => v2/test-programs}/open_error.golden (100%) rename {test-programs => v2/test-programs}/open_error.py (100%) rename {test-programs => v2/test-programs}/parse_error.golden (100%) rename {test-programs => v2/test-programs}/parse_error.py (100%) rename {test-programs => v2/test-programs}/parse_error_2.golden (100%) rename {test-programs => v2/test-programs}/parse_error_2.py (100%) rename {test-programs => v2/test-programs}/parse_error_3.golden (100%) rename {test-programs => v2/test-programs}/parse_error_3.py (100%) rename {test-programs => v2/test-programs}/print_builtins_error.golden (100%) rename {test-programs => v2/test-programs}/print_builtins_error.py (100%) rename {test-programs => v2/test-programs}/runtime_error.golden (100%) rename {test-programs => v2/test-programs}/runtime_error.py (100%) rename {test-programs => v2/test-programs}/set_test.golden (100%) rename {test-programs => v2/test-programs}/set_test.py (100%) rename {test-programs => v2/test-programs}/simple.golden (100%) rename {test-programs => v2/test-programs}/simple.py (100%) rename {test-programs => v2/test-programs}/three_lists.golden (100%) rename {test-programs => v2/test-programs}/three_lists.py (100%) rename {test-programs => v2/test-programs}/tuple_test.golden (100%) rename {test-programs => v2/test-programs}/tuple_test.py (100%) rename {test-programs => v2/test-programs}/two_funcs.golden (100%) rename {test-programs => v2/test-programs}/two_funcs.py (100%) rename tutor.html => v2/tutor.html (100%) rename {tutorials => v2/tutorials}/MIT-6.01/README (100%) rename {tutorials => v2/tutorials}/MIT-6.01/map.py (100%) rename {tutorials => v2/tutorials}/MIT-6.01/oop_1.py (100%) rename {tutorials => v2/tutorials}/MIT-6.01/oop_2.py (100%) rename {tutorials => v2/tutorials}/MIT-6.01/oop_3.py (100%) rename {tutorials => v2/tutorials}/MIT-6.01/summation.py (100%) rename {tutorials => v2/tutorials}/README (100%) rename {tutorials => v2/tutorials}/advanced/map.py (100%) rename {tutorials => v2/tutorials}/math/newton.py (100%) rename {tutorials => v2/tutorials}/oop/oop_demo.py (100%) rename {tutorials => v2/tutorials}/personal-finance/compound_interest.py (100%) rename yellow-happy-face.png => v2/yellow-happy-face.png (100%) diff --git a/Python3-porting.txt b/v2/Python3-porting.txt similarity index 100% rename from Python3-porting.txt rename to v2/Python3-porting.txt diff --git a/README b/v2/README similarity index 100% rename from README rename to v2/README diff --git a/TODO b/v2/TODO similarity index 100% rename from TODO rename to v2/TODO diff --git a/alias-screenshot.png b/v2/alias-screenshot.png similarity index 100% rename from alias-screenshot.png rename to v2/alias-screenshot.png diff --git a/cgi-bin/.htaccess b/v2/cgi-bin/.htaccess similarity index 100% rename from cgi-bin/.htaccess rename to v2/cgi-bin/.htaccess diff --git a/cgi-bin/create_db.py b/v2/cgi-bin/create_db.py similarity index 100% rename from cgi-bin/create_db.py rename to v2/cgi-bin/create_db.py diff --git a/cgi-bin/db_common.py b/v2/cgi-bin/db_common.py similarity index 100% rename from cgi-bin/db_common.py rename to v2/cgi-bin/db_common.py diff --git a/cgi-bin/index.html b/v2/cgi-bin/index.html similarity index 100% rename from cgi-bin/index.html rename to v2/cgi-bin/index.html diff --git a/cgi-bin/load_question.py b/v2/cgi-bin/load_question.py similarity index 100% rename from cgi-bin/load_question.py rename to v2/cgi-bin/load_question.py diff --git a/cgi-bin/p4_encoder.py b/v2/cgi-bin/p4_encoder.py similarity index 100% rename from cgi-bin/p4_encoder.py rename to v2/cgi-bin/p4_encoder.py diff --git a/cgi-bin/parse_questions.py b/v2/cgi-bin/parse_questions.py similarity index 100% rename from cgi-bin/parse_questions.py rename to v2/cgi-bin/parse_questions.py diff --git a/cgi-bin/pg_encoder.py b/v2/cgi-bin/pg_encoder.py similarity index 100% rename from cgi-bin/pg_encoder.py rename to v2/cgi-bin/pg_encoder.py diff --git a/cgi-bin/pg_logger.py b/v2/cgi-bin/pg_logger.py similarity index 100% rename from cgi-bin/pg_logger.py rename to v2/cgi-bin/pg_logger.py diff --git a/cgi-bin/run_tests.py b/v2/cgi-bin/run_tests.py similarity index 100% rename from cgi-bin/run_tests.py rename to v2/cgi-bin/run_tests.py diff --git a/cgi-bin/web_exec.py b/v2/cgi-bin/web_exec.py similarity index 100% rename from cgi-bin/web_exec.py rename to v2/cgi-bin/web_exec.py diff --git a/cgi-bin/web_run_test.py b/v2/cgi-bin/web_run_test.py similarity index 100% rename from cgi-bin/web_run_test.py rename to v2/cgi-bin/web_run_test.py diff --git a/edu-python-questions.js b/v2/edu-python-questions.js similarity index 100% rename from edu-python-questions.js rename to v2/edu-python-questions.js diff --git a/edu-python-title.css b/v2/edu-python-title.css similarity index 100% rename from edu-python-title.css rename to v2/edu-python-title.css diff --git a/edu-python-tutor.js b/v2/edu-python-tutor.js similarity index 100% rename from edu-python-tutor.js rename to v2/edu-python-tutor.js diff --git a/edu-python.css b/v2/edu-python.css similarity index 100% rename from edu-python.css rename to v2/edu-python.css diff --git a/edu-python.js b/v2/edu-python.js similarity index 100% rename from edu-python.js rename to v2/edu-python.js diff --git a/v2/example-code b/v2/example-code new file mode 120000 index 000000000..c24e6a160 --- /dev/null +++ b/v2/example-code @@ -0,0 +1 @@ +../v3/example-code \ No newline at end of file diff --git a/grading-375.png b/v2/grading-375.png similarity index 100% rename from grading-375.png rename to v2/grading-375.png diff --git a/hunt-mcilroy.js b/v2/hunt-mcilroy.js similarity index 100% rename from hunt-mcilroy.js rename to v2/hunt-mcilroy.js diff --git a/index.html b/v2/index.html similarity index 100% rename from index.html rename to v2/index.html diff --git a/jquery-1.3.2.min.js b/v2/jquery-1.3.2.min.js similarity index 100% rename from jquery-1.3.2.min.js rename to v2/jquery-1.3.2.min.js diff --git a/jquery.autogrow.js b/v2/jquery.autogrow.js similarity index 100% rename from jquery.autogrow.js rename to v2/jquery.autogrow.js diff --git a/jquery.ba-bbq.min.js b/v2/jquery.ba-bbq.min.js similarity index 100% rename from jquery.ba-bbq.min.js rename to v2/jquery.ba-bbq.min.js diff --git a/jquery.corner.js b/v2/jquery.corner.js similarity index 100% rename from jquery.corner.js rename to v2/jquery.corner.js diff --git a/jquery.jsPlumb-1.3.3-all-min.js b/v2/jquery.jsPlumb-1.3.3-all-min.js similarity index 100% rename from jquery.jsPlumb-1.3.3-all-min.js rename to v2/jquery.jsPlumb-1.3.3-all-min.js diff --git a/jquery.min.js b/v2/jquery.min.js similarity index 100% rename from jquery.min.js rename to v2/jquery.min.js diff --git a/jsplumb-test.js b/v2/jsplumb-test.js similarity index 100% rename from jsplumb-test.js rename to v2/jsplumb-test.js diff --git a/mock-data.js b/v2/mock-data.js similarity index 100% rename from mock-data.js rename to v2/mock-data.js diff --git a/question.html b/v2/question.html similarity index 100% rename from question.html rename to v2/question.html diff --git a/questions/debug-bsearch.txt b/v2/questions/debug-bsearch.txt similarity index 100% rename from questions/debug-bsearch.txt rename to v2/questions/debug-bsearch.txt diff --git a/questions/debug-ireverse.txt b/v2/questions/debug-ireverse.txt similarity index 100% rename from questions/debug-ireverse.txt rename to v2/questions/debug-ireverse.txt diff --git a/questions/debug-mergesort.txt b/v2/questions/debug-mergesort.txt similarity index 100% rename from questions/debug-mergesort.txt rename to v2/questions/debug-mergesort.txt diff --git a/questions/optimize-find-dups.txt b/v2/questions/optimize-find-dups.txt similarity index 100% rename from questions/optimize-find-dups.txt rename to v2/questions/optimize-find-dups.txt diff --git a/questions/optimize-search.txt b/v2/questions/optimize-search.txt similarity index 100% rename from questions/optimize-search.txt rename to v2/questions/optimize-search.txt diff --git a/questions/optimize-sum.txt b/v2/questions/optimize-sum.txt similarity index 100% rename from questions/optimize-sum.txt rename to v2/questions/optimize-sum.txt diff --git a/questions/remove-dups.txt b/v2/questions/remove-dups.txt similarity index 100% rename from questions/remove-dups.txt rename to v2/questions/remove-dups.txt diff --git a/questions/reverse.txt b/v2/questions/reverse.txt similarity index 100% rename from questions/reverse.txt rename to v2/questions/reverse.txt diff --git a/questions/two-sum.txt b/v2/questions/two-sum.txt similarity index 100% rename from questions/two-sum.txt rename to v2/questions/two-sum.txt diff --git a/red-sad-face.jpg b/v2/red-sad-face.jpg similarity index 100% rename from red-sad-face.jpg rename to v2/red-sad-face.jpg diff --git a/test-programs/caught_exception_1.golden b/v2/test-programs/caught_exception_1.golden similarity index 100% rename from test-programs/caught_exception_1.golden rename to v2/test-programs/caught_exception_1.golden diff --git a/test-programs/caught_exception_1.py b/v2/test-programs/caught_exception_1.py similarity index 100% rename from test-programs/caught_exception_1.py rename to v2/test-programs/caught_exception_1.py diff --git a/test-programs/caught_exception_2.golden b/v2/test-programs/caught_exception_2.golden similarity index 100% rename from test-programs/caught_exception_2.golden rename to v2/test-programs/caught_exception_2.golden diff --git a/test-programs/caught_exception_2.py b/v2/test-programs/caught_exception_2.py similarity index 100% rename from test-programs/caught_exception_2.py rename to v2/test-programs/caught_exception_2.py diff --git a/test-programs/circ_ref.golden b/v2/test-programs/circ_ref.golden similarity index 100% rename from test-programs/circ_ref.golden rename to v2/test-programs/circ_ref.golden diff --git a/test-programs/circ_ref.py b/v2/test-programs/circ_ref.py similarity index 100% rename from test-programs/circ_ref.py rename to v2/test-programs/circ_ref.py diff --git a/test-programs/circ_ref_2.golden b/v2/test-programs/circ_ref_2.golden similarity index 100% rename from test-programs/circ_ref_2.golden rename to v2/test-programs/circ_ref_2.golden diff --git a/test-programs/circ_ref_2.py b/v2/test-programs/circ_ref_2.py similarity index 100% rename from test-programs/circ_ref_2.py rename to v2/test-programs/circ_ref_2.py diff --git a/test-programs/circ_ref_fake.golden b/v2/test-programs/circ_ref_fake.golden similarity index 100% rename from test-programs/circ_ref_fake.golden rename to v2/test-programs/circ_ref_fake.golden diff --git a/test-programs/circ_ref_fake.py b/v2/test-programs/circ_ref_fake.py similarity index 100% rename from test-programs/circ_ref_fake.py rename to v2/test-programs/circ_ref_fake.py diff --git a/test-programs/class_test.golden b/v2/test-programs/class_test.golden similarity index 100% rename from test-programs/class_test.golden rename to v2/test-programs/class_test.golden diff --git a/test-programs/class_test.py b/v2/test-programs/class_test.py similarity index 100% rename from test-programs/class_test.py rename to v2/test-programs/class_test.py diff --git a/test-programs/class_test_2.golden b/v2/test-programs/class_test_2.golden similarity index 100% rename from test-programs/class_test_2.golden rename to v2/test-programs/class_test_2.golden diff --git a/test-programs/class_test_2.py b/v2/test-programs/class_test_2.py similarity index 100% rename from test-programs/class_test_2.py rename to v2/test-programs/class_test_2.py diff --git a/test-programs/class_test_3.golden b/v2/test-programs/class_test_3.golden similarity index 100% rename from test-programs/class_test_3.golden rename to v2/test-programs/class_test_3.golden diff --git a/test-programs/class_test_3.py b/v2/test-programs/class_test_3.py similarity index 100% rename from test-programs/class_test_3.py rename to v2/test-programs/class_test_3.py diff --git a/test-programs/data_test.golden b/v2/test-programs/data_test.golden similarity index 100% rename from test-programs/data_test.golden rename to v2/test-programs/data_test.golden diff --git a/test-programs/data_test.py b/v2/test-programs/data_test.py similarity index 100% rename from test-programs/data_test.py rename to v2/test-programs/data_test.py diff --git a/test-programs/dict_error.golden b/v2/test-programs/dict_error.golden similarity index 100% rename from test-programs/dict_error.golden rename to v2/test-programs/dict_error.golden diff --git a/test-programs/dict_error.py b/v2/test-programs/dict_error.py similarity index 100% rename from test-programs/dict_error.py rename to v2/test-programs/dict_error.py diff --git a/test-programs/dict_test.golden b/v2/test-programs/dict_test.golden similarity index 100% rename from test-programs/dict_test.golden rename to v2/test-programs/dict_test.golden diff --git a/test-programs/dict_test.py b/v2/test-programs/dict_test.py similarity index 100% rename from test-programs/dict_test.py rename to v2/test-programs/dict_test.py diff --git a/test-programs/exec_test.golden b/v2/test-programs/exec_test.golden similarity index 100% rename from test-programs/exec_test.golden rename to v2/test-programs/exec_test.golden diff --git a/test-programs/exec_test.py b/v2/test-programs/exec_test.py similarity index 100% rename from test-programs/exec_test.py rename to v2/test-programs/exec_test.py diff --git a/test-programs/func_exception.golden b/v2/test-programs/func_exception.golden similarity index 100% rename from test-programs/func_exception.golden rename to v2/test-programs/func_exception.golden diff --git a/test-programs/func_exception.py b/v2/test-programs/func_exception.py similarity index 100% rename from test-programs/func_exception.py rename to v2/test-programs/func_exception.py diff --git a/test-programs/generator_test.golden b/v2/test-programs/generator_test.golden similarity index 100% rename from test-programs/generator_test.golden rename to v2/test-programs/generator_test.golden diff --git a/test-programs/generator_test.py b/v2/test-programs/generator_test.py similarity index 100% rename from test-programs/generator_test.py rename to v2/test-programs/generator_test.py diff --git a/test-programs/import_error.golden b/v2/test-programs/import_error.golden similarity index 100% rename from test-programs/import_error.golden rename to v2/test-programs/import_error.golden diff --git a/test-programs/import_error.py b/v2/test-programs/import_error.py similarity index 100% rename from test-programs/import_error.py rename to v2/test-programs/import_error.py diff --git a/test-programs/infinite_loop.golden b/v2/test-programs/infinite_loop.golden similarity index 100% rename from test-programs/infinite_loop.golden rename to v2/test-programs/infinite_loop.golden diff --git a/test-programs/infinite_loop.py b/v2/test-programs/infinite_loop.py similarity index 100% rename from test-programs/infinite_loop.py rename to v2/test-programs/infinite_loop.py diff --git a/test-programs/infinite_loop_one_liner.golden b/v2/test-programs/infinite_loop_one_liner.golden similarity index 100% rename from test-programs/infinite_loop_one_liner.golden rename to v2/test-programs/infinite_loop_one_liner.golden diff --git a/test-programs/infinite_loop_one_liner.py b/v2/test-programs/infinite_loop_one_liner.py similarity index 100% rename from test-programs/infinite_loop_one_liner.py rename to v2/test-programs/infinite_loop_one_liner.py diff --git a/test-programs/lambda_1.golden b/v2/test-programs/lambda_1.golden similarity index 100% rename from test-programs/lambda_1.golden rename to v2/test-programs/lambda_1.golden diff --git a/test-programs/lambda_1.py b/v2/test-programs/lambda_1.py similarity index 100% rename from test-programs/lambda_1.py rename to v2/test-programs/lambda_1.py diff --git a/test-programs/list_dict_test.golden b/v2/test-programs/list_dict_test.golden similarity index 100% rename from test-programs/list_dict_test.golden rename to v2/test-programs/list_dict_test.golden diff --git a/test-programs/list_dict_test.py b/v2/test-programs/list_dict_test.py similarity index 100% rename from test-programs/list_dict_test.py rename to v2/test-programs/list_dict_test.py diff --git a/test-programs/list_test.golden b/v2/test-programs/list_test.golden similarity index 100% rename from test-programs/list_test.golden rename to v2/test-programs/list_test.golden diff --git a/test-programs/list_test.py b/v2/test-programs/list_test.py similarity index 100% rename from test-programs/list_test.py rename to v2/test-programs/list_test.py diff --git a/test-programs/newstyle_class.golden b/v2/test-programs/newstyle_class.golden similarity index 100% rename from test-programs/newstyle_class.golden rename to v2/test-programs/newstyle_class.golden diff --git a/test-programs/newstyle_class.py b/v2/test-programs/newstyle_class.py similarity index 100% rename from test-programs/newstyle_class.py rename to v2/test-programs/newstyle_class.py diff --git a/test-programs/one_func.golden b/v2/test-programs/one_func.golden similarity index 100% rename from test-programs/one_func.golden rename to v2/test-programs/one_func.golden diff --git a/test-programs/one_func.py b/v2/test-programs/one_func.py similarity index 100% rename from test-programs/one_func.py rename to v2/test-programs/one_func.py diff --git a/test-programs/open_error.golden b/v2/test-programs/open_error.golden similarity index 100% rename from test-programs/open_error.golden rename to v2/test-programs/open_error.golden diff --git a/test-programs/open_error.py b/v2/test-programs/open_error.py similarity index 100% rename from test-programs/open_error.py rename to v2/test-programs/open_error.py diff --git a/test-programs/parse_error.golden b/v2/test-programs/parse_error.golden similarity index 100% rename from test-programs/parse_error.golden rename to v2/test-programs/parse_error.golden diff --git a/test-programs/parse_error.py b/v2/test-programs/parse_error.py similarity index 100% rename from test-programs/parse_error.py rename to v2/test-programs/parse_error.py diff --git a/test-programs/parse_error_2.golden b/v2/test-programs/parse_error_2.golden similarity index 100% rename from test-programs/parse_error_2.golden rename to v2/test-programs/parse_error_2.golden diff --git a/test-programs/parse_error_2.py b/v2/test-programs/parse_error_2.py similarity index 100% rename from test-programs/parse_error_2.py rename to v2/test-programs/parse_error_2.py diff --git a/test-programs/parse_error_3.golden b/v2/test-programs/parse_error_3.golden similarity index 100% rename from test-programs/parse_error_3.golden rename to v2/test-programs/parse_error_3.golden diff --git a/test-programs/parse_error_3.py b/v2/test-programs/parse_error_3.py similarity index 100% rename from test-programs/parse_error_3.py rename to v2/test-programs/parse_error_3.py diff --git a/test-programs/print_builtins_error.golden b/v2/test-programs/print_builtins_error.golden similarity index 100% rename from test-programs/print_builtins_error.golden rename to v2/test-programs/print_builtins_error.golden diff --git a/test-programs/print_builtins_error.py b/v2/test-programs/print_builtins_error.py similarity index 100% rename from test-programs/print_builtins_error.py rename to v2/test-programs/print_builtins_error.py diff --git a/test-programs/runtime_error.golden b/v2/test-programs/runtime_error.golden similarity index 100% rename from test-programs/runtime_error.golden rename to v2/test-programs/runtime_error.golden diff --git a/test-programs/runtime_error.py b/v2/test-programs/runtime_error.py similarity index 100% rename from test-programs/runtime_error.py rename to v2/test-programs/runtime_error.py diff --git a/test-programs/set_test.golden b/v2/test-programs/set_test.golden similarity index 100% rename from test-programs/set_test.golden rename to v2/test-programs/set_test.golden diff --git a/test-programs/set_test.py b/v2/test-programs/set_test.py similarity index 100% rename from test-programs/set_test.py rename to v2/test-programs/set_test.py diff --git a/test-programs/simple.golden b/v2/test-programs/simple.golden similarity index 100% rename from test-programs/simple.golden rename to v2/test-programs/simple.golden diff --git a/test-programs/simple.py b/v2/test-programs/simple.py similarity index 100% rename from test-programs/simple.py rename to v2/test-programs/simple.py diff --git a/test-programs/three_lists.golden b/v2/test-programs/three_lists.golden similarity index 100% rename from test-programs/three_lists.golden rename to v2/test-programs/three_lists.golden diff --git a/test-programs/three_lists.py b/v2/test-programs/three_lists.py similarity index 100% rename from test-programs/three_lists.py rename to v2/test-programs/three_lists.py diff --git a/test-programs/tuple_test.golden b/v2/test-programs/tuple_test.golden similarity index 100% rename from test-programs/tuple_test.golden rename to v2/test-programs/tuple_test.golden diff --git a/test-programs/tuple_test.py b/v2/test-programs/tuple_test.py similarity index 100% rename from test-programs/tuple_test.py rename to v2/test-programs/tuple_test.py diff --git a/test-programs/two_funcs.golden b/v2/test-programs/two_funcs.golden similarity index 100% rename from test-programs/two_funcs.golden rename to v2/test-programs/two_funcs.golden diff --git a/test-programs/two_funcs.py b/v2/test-programs/two_funcs.py similarity index 100% rename from test-programs/two_funcs.py rename to v2/test-programs/two_funcs.py diff --git a/tutor.html b/v2/tutor.html similarity index 100% rename from tutor.html rename to v2/tutor.html diff --git a/tutorials/MIT-6.01/README b/v2/tutorials/MIT-6.01/README similarity index 100% rename from tutorials/MIT-6.01/README rename to v2/tutorials/MIT-6.01/README diff --git a/tutorials/MIT-6.01/map.py b/v2/tutorials/MIT-6.01/map.py similarity index 100% rename from tutorials/MIT-6.01/map.py rename to v2/tutorials/MIT-6.01/map.py diff --git a/tutorials/MIT-6.01/oop_1.py b/v2/tutorials/MIT-6.01/oop_1.py similarity index 100% rename from tutorials/MIT-6.01/oop_1.py rename to v2/tutorials/MIT-6.01/oop_1.py diff --git a/tutorials/MIT-6.01/oop_2.py b/v2/tutorials/MIT-6.01/oop_2.py similarity index 100% rename from tutorials/MIT-6.01/oop_2.py rename to v2/tutorials/MIT-6.01/oop_2.py diff --git a/tutorials/MIT-6.01/oop_3.py b/v2/tutorials/MIT-6.01/oop_3.py similarity index 100% rename from tutorials/MIT-6.01/oop_3.py rename to v2/tutorials/MIT-6.01/oop_3.py diff --git a/tutorials/MIT-6.01/summation.py b/v2/tutorials/MIT-6.01/summation.py similarity index 100% rename from tutorials/MIT-6.01/summation.py rename to v2/tutorials/MIT-6.01/summation.py diff --git a/tutorials/README b/v2/tutorials/README similarity index 100% rename from tutorials/README rename to v2/tutorials/README diff --git a/tutorials/advanced/map.py b/v2/tutorials/advanced/map.py similarity index 100% rename from tutorials/advanced/map.py rename to v2/tutorials/advanced/map.py diff --git a/tutorials/math/newton.py b/v2/tutorials/math/newton.py similarity index 100% rename from tutorials/math/newton.py rename to v2/tutorials/math/newton.py diff --git a/tutorials/oop/oop_demo.py b/v2/tutorials/oop/oop_demo.py similarity index 100% rename from tutorials/oop/oop_demo.py rename to v2/tutorials/oop/oop_demo.py diff --git a/tutorials/personal-finance/compound_interest.py b/v2/tutorials/personal-finance/compound_interest.py similarity index 100% rename from tutorials/personal-finance/compound_interest.py rename to v2/tutorials/personal-finance/compound_interest.py diff --git a/yellow-happy-face.png b/v2/yellow-happy-face.png similarity index 100% rename from yellow-happy-face.png rename to v2/yellow-happy-face.png From fd5e47972aae63a14bd015ab0cd3e37ac0c01715 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 1 Sep 2012 10:54:58 -0700 Subject: [PATCH 184/502] moved .htaccess --- .htaccess => v2/.htaccess | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .htaccess => v2/.htaccess (100%) diff --git a/.htaccess b/v2/.htaccess similarity index 100% rename from .htaccess rename to v2/.htaccess From 8266973f28e0e956c1b6a85a5bea3e085d79ce7b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 1 Sep 2012 11:07:27 -0700 Subject: [PATCH 185/502] another big renaming of v2/ -> v1-v2/ --- README | 33 ++++++++++++++++++ {v2 => v1-v2}/.htaccess | 0 {v2 => v1-v2}/Python3-porting.txt | 0 {v2 => v1-v2}/README | 5 +++ {v2 => v1-v2}/TODO | 0 {v2 => v1-v2}/alias-screenshot.png | Bin {v2 => v1-v2}/cgi-bin/.htaccess | 0 {v2 => v1-v2}/cgi-bin/create_db.py | 0 {v2 => v1-v2}/cgi-bin/db_common.py | 0 {v2 => v1-v2}/cgi-bin/index.html | 0 {v2 => v1-v2}/cgi-bin/load_question.py | 0 {v2 => v1-v2}/cgi-bin/p4_encoder.py | 0 {v2 => v1-v2}/cgi-bin/parse_questions.py | 0 {v2 => v1-v2}/cgi-bin/pg_encoder.py | 0 {v2 => v1-v2}/cgi-bin/pg_logger.py | 0 {v2 => v1-v2}/cgi-bin/run_tests.py | 0 {v2 => v1-v2}/cgi-bin/web_exec.py | 0 {v2 => v1-v2}/cgi-bin/web_run_test.py | 0 {v2 => v1-v2}/edu-python-questions.js | 0 {v2 => v1-v2}/edu-python-title.css | 0 {v2 => v1-v2}/edu-python-tutor.js | 0 {v2 => v1-v2}/edu-python.css | 0 {v2 => v1-v2}/edu-python.js | 0 {v2 => v1-v2}/example-code | 0 {v2 => v1-v2}/grading-375.png | Bin {v2 => v1-v2}/hunt-mcilroy.js | 0 {v2 => v1-v2}/index.html | 0 {v2 => v1-v2}/jquery-1.3.2.min.js | 0 {v2 => v1-v2}/jquery.autogrow.js | 0 {v2 => v1-v2}/jquery.ba-bbq.min.js | 0 {v2 => v1-v2}/jquery.corner.js | 0 {v2 => v1-v2}/jquery.jsPlumb-1.3.3-all-min.js | 0 {v2 => v1-v2}/jquery.min.js | 0 {v2 => v1-v2}/jsplumb-test.js | 0 {v2 => v1-v2}/mock-data.js | 0 {v2 => v1-v2}/question.html | 0 {v2 => v1-v2}/questions/debug-bsearch.txt | 0 {v2 => v1-v2}/questions/debug-ireverse.txt | 0 {v2 => v1-v2}/questions/debug-mergesort.txt | 0 .../questions/optimize-find-dups.txt | 0 {v2 => v1-v2}/questions/optimize-search.txt | 0 {v2 => v1-v2}/questions/optimize-sum.txt | 0 {v2 => v1-v2}/questions/remove-dups.txt | 0 {v2 => v1-v2}/questions/reverse.txt | 0 {v2 => v1-v2}/questions/two-sum.txt | 0 {v2 => v1-v2}/red-sad-face.jpg | Bin .../test-programs/caught_exception_1.golden | 0 .../test-programs/caught_exception_1.py | 0 .../test-programs/caught_exception_2.golden | 0 .../test-programs/caught_exception_2.py | 0 {v2 => v1-v2}/test-programs/circ_ref.golden | 0 {v2 => v1-v2}/test-programs/circ_ref.py | 0 {v2 => v1-v2}/test-programs/circ_ref_2.golden | 0 {v2 => v1-v2}/test-programs/circ_ref_2.py | 0 .../test-programs/circ_ref_fake.golden | 0 {v2 => v1-v2}/test-programs/circ_ref_fake.py | 0 {v2 => v1-v2}/test-programs/class_test.golden | 0 {v2 => v1-v2}/test-programs/class_test.py | 0 .../test-programs/class_test_2.golden | 0 {v2 => v1-v2}/test-programs/class_test_2.py | 0 .../test-programs/class_test_3.golden | 0 {v2 => v1-v2}/test-programs/class_test_3.py | 0 {v2 => v1-v2}/test-programs/data_test.golden | 0 {v2 => v1-v2}/test-programs/data_test.py | 0 {v2 => v1-v2}/test-programs/dict_error.golden | 0 {v2 => v1-v2}/test-programs/dict_error.py | 0 {v2 => v1-v2}/test-programs/dict_test.golden | 0 {v2 => v1-v2}/test-programs/dict_test.py | 0 {v2 => v1-v2}/test-programs/exec_test.golden | 0 {v2 => v1-v2}/test-programs/exec_test.py | 0 .../test-programs/func_exception.golden | 0 {v2 => v1-v2}/test-programs/func_exception.py | 0 .../test-programs/generator_test.golden | 0 {v2 => v1-v2}/test-programs/generator_test.py | 0 .../test-programs/import_error.golden | 0 {v2 => v1-v2}/test-programs/import_error.py | 0 .../test-programs/infinite_loop.golden | 0 {v2 => v1-v2}/test-programs/infinite_loop.py | 0 .../infinite_loop_one_liner.golden | 0 .../test-programs/infinite_loop_one_liner.py | 0 {v2 => v1-v2}/test-programs/lambda_1.golden | 0 {v2 => v1-v2}/test-programs/lambda_1.py | 0 .../test-programs/list_dict_test.golden | 0 {v2 => v1-v2}/test-programs/list_dict_test.py | 0 {v2 => v1-v2}/test-programs/list_test.golden | 0 {v2 => v1-v2}/test-programs/list_test.py | 0 .../test-programs/newstyle_class.golden | 0 {v2 => v1-v2}/test-programs/newstyle_class.py | 0 {v2 => v1-v2}/test-programs/one_func.golden | 0 {v2 => v1-v2}/test-programs/one_func.py | 0 {v2 => v1-v2}/test-programs/open_error.golden | 0 {v2 => v1-v2}/test-programs/open_error.py | 0 .../test-programs/parse_error.golden | 0 {v2 => v1-v2}/test-programs/parse_error.py | 0 .../test-programs/parse_error_2.golden | 0 {v2 => v1-v2}/test-programs/parse_error_2.py | 0 .../test-programs/parse_error_3.golden | 0 {v2 => v1-v2}/test-programs/parse_error_3.py | 0 .../test-programs/print_builtins_error.golden | 0 .../test-programs/print_builtins_error.py | 0 .../test-programs/runtime_error.golden | 0 {v2 => v1-v2}/test-programs/runtime_error.py | 0 {v2 => v1-v2}/test-programs/set_test.golden | 0 {v2 => v1-v2}/test-programs/set_test.py | 0 {v2 => v1-v2}/test-programs/simple.golden | 0 {v2 => v1-v2}/test-programs/simple.py | 0 .../test-programs/three_lists.golden | 0 {v2 => v1-v2}/test-programs/three_lists.py | 0 {v2 => v1-v2}/test-programs/tuple_test.golden | 0 {v2 => v1-v2}/test-programs/tuple_test.py | 0 {v2 => v1-v2}/test-programs/two_funcs.golden | 0 {v2 => v1-v2}/test-programs/two_funcs.py | 0 {v2 => v1-v2}/tutor.html | 0 {v2 => v1-v2}/tutorials/MIT-6.01/README | 0 {v2 => v1-v2}/tutorials/MIT-6.01/map.py | 0 {v2 => v1-v2}/tutorials/MIT-6.01/oop_1.py | 0 {v2 => v1-v2}/tutorials/MIT-6.01/oop_2.py | 0 {v2 => v1-v2}/tutorials/MIT-6.01/oop_3.py | 0 {v2 => v1-v2}/tutorials/MIT-6.01/summation.py | 0 {v2 => v1-v2}/tutorials/README | 0 {v2 => v1-v2}/tutorials/advanced/map.py | 0 {v2 => v1-v2}/tutorials/math/newton.py | 0 {v2 => v1-v2}/tutorials/oop/oop_demo.py | 0 .../personal-finance/compound_interest.py | 0 {v2 => v1-v2}/yellow-happy-face.png | Bin 125 files changed, 38 insertions(+) create mode 100644 README rename {v2 => v1-v2}/.htaccess (100%) rename {v2 => v1-v2}/Python3-porting.txt (100%) rename {v2 => v1-v2}/README (97%) rename {v2 => v1-v2}/TODO (100%) rename {v2 => v1-v2}/alias-screenshot.png (100%) rename {v2 => v1-v2}/cgi-bin/.htaccess (100%) rename {v2 => v1-v2}/cgi-bin/create_db.py (100%) rename {v2 => v1-v2}/cgi-bin/db_common.py (100%) rename {v2 => v1-v2}/cgi-bin/index.html (100%) rename {v2 => v1-v2}/cgi-bin/load_question.py (100%) rename {v2 => v1-v2}/cgi-bin/p4_encoder.py (100%) rename {v2 => v1-v2}/cgi-bin/parse_questions.py (100%) rename {v2 => v1-v2}/cgi-bin/pg_encoder.py (100%) rename {v2 => v1-v2}/cgi-bin/pg_logger.py (100%) rename {v2 => v1-v2}/cgi-bin/run_tests.py (100%) rename {v2 => v1-v2}/cgi-bin/web_exec.py (100%) rename {v2 => v1-v2}/cgi-bin/web_run_test.py (100%) rename {v2 => v1-v2}/edu-python-questions.js (100%) rename {v2 => v1-v2}/edu-python-title.css (100%) rename {v2 => v1-v2}/edu-python-tutor.js (100%) rename {v2 => v1-v2}/edu-python.css (100%) rename {v2 => v1-v2}/edu-python.js (100%) rename {v2 => v1-v2}/example-code (100%) rename {v2 => v1-v2}/grading-375.png (100%) rename {v2 => v1-v2}/hunt-mcilroy.js (100%) rename {v2 => v1-v2}/index.html (100%) rename {v2 => v1-v2}/jquery-1.3.2.min.js (100%) rename {v2 => v1-v2}/jquery.autogrow.js (100%) rename {v2 => v1-v2}/jquery.ba-bbq.min.js (100%) rename {v2 => v1-v2}/jquery.corner.js (100%) rename {v2 => v1-v2}/jquery.jsPlumb-1.3.3-all-min.js (100%) rename {v2 => v1-v2}/jquery.min.js (100%) rename {v2 => v1-v2}/jsplumb-test.js (100%) rename {v2 => v1-v2}/mock-data.js (100%) rename {v2 => v1-v2}/question.html (100%) rename {v2 => v1-v2}/questions/debug-bsearch.txt (100%) rename {v2 => v1-v2}/questions/debug-ireverse.txt (100%) rename {v2 => v1-v2}/questions/debug-mergesort.txt (100%) rename {v2 => v1-v2}/questions/optimize-find-dups.txt (100%) rename {v2 => v1-v2}/questions/optimize-search.txt (100%) rename {v2 => v1-v2}/questions/optimize-sum.txt (100%) rename {v2 => v1-v2}/questions/remove-dups.txt (100%) rename {v2 => v1-v2}/questions/reverse.txt (100%) rename {v2 => v1-v2}/questions/two-sum.txt (100%) rename {v2 => v1-v2}/red-sad-face.jpg (100%) rename {v2 => v1-v2}/test-programs/caught_exception_1.golden (100%) rename {v2 => v1-v2}/test-programs/caught_exception_1.py (100%) rename {v2 => v1-v2}/test-programs/caught_exception_2.golden (100%) rename {v2 => v1-v2}/test-programs/caught_exception_2.py (100%) rename {v2 => v1-v2}/test-programs/circ_ref.golden (100%) rename {v2 => v1-v2}/test-programs/circ_ref.py (100%) rename {v2 => v1-v2}/test-programs/circ_ref_2.golden (100%) rename {v2 => v1-v2}/test-programs/circ_ref_2.py (100%) rename {v2 => v1-v2}/test-programs/circ_ref_fake.golden (100%) rename {v2 => v1-v2}/test-programs/circ_ref_fake.py (100%) rename {v2 => v1-v2}/test-programs/class_test.golden (100%) rename {v2 => v1-v2}/test-programs/class_test.py (100%) rename {v2 => v1-v2}/test-programs/class_test_2.golden (100%) rename {v2 => v1-v2}/test-programs/class_test_2.py (100%) rename {v2 => v1-v2}/test-programs/class_test_3.golden (100%) rename {v2 => v1-v2}/test-programs/class_test_3.py (100%) rename {v2 => v1-v2}/test-programs/data_test.golden (100%) rename {v2 => v1-v2}/test-programs/data_test.py (100%) rename {v2 => v1-v2}/test-programs/dict_error.golden (100%) rename {v2 => v1-v2}/test-programs/dict_error.py (100%) rename {v2 => v1-v2}/test-programs/dict_test.golden (100%) rename {v2 => v1-v2}/test-programs/dict_test.py (100%) rename {v2 => v1-v2}/test-programs/exec_test.golden (100%) rename {v2 => v1-v2}/test-programs/exec_test.py (100%) rename {v2 => v1-v2}/test-programs/func_exception.golden (100%) rename {v2 => v1-v2}/test-programs/func_exception.py (100%) rename {v2 => v1-v2}/test-programs/generator_test.golden (100%) rename {v2 => v1-v2}/test-programs/generator_test.py (100%) rename {v2 => v1-v2}/test-programs/import_error.golden (100%) rename {v2 => v1-v2}/test-programs/import_error.py (100%) rename {v2 => v1-v2}/test-programs/infinite_loop.golden (100%) rename {v2 => v1-v2}/test-programs/infinite_loop.py (100%) rename {v2 => v1-v2}/test-programs/infinite_loop_one_liner.golden (100%) rename {v2 => v1-v2}/test-programs/infinite_loop_one_liner.py (100%) rename {v2 => v1-v2}/test-programs/lambda_1.golden (100%) rename {v2 => v1-v2}/test-programs/lambda_1.py (100%) rename {v2 => v1-v2}/test-programs/list_dict_test.golden (100%) rename {v2 => v1-v2}/test-programs/list_dict_test.py (100%) rename {v2 => v1-v2}/test-programs/list_test.golden (100%) rename {v2 => v1-v2}/test-programs/list_test.py (100%) rename {v2 => v1-v2}/test-programs/newstyle_class.golden (100%) rename {v2 => v1-v2}/test-programs/newstyle_class.py (100%) rename {v2 => v1-v2}/test-programs/one_func.golden (100%) rename {v2 => v1-v2}/test-programs/one_func.py (100%) rename {v2 => v1-v2}/test-programs/open_error.golden (100%) rename {v2 => v1-v2}/test-programs/open_error.py (100%) rename {v2 => v1-v2}/test-programs/parse_error.golden (100%) rename {v2 => v1-v2}/test-programs/parse_error.py (100%) rename {v2 => v1-v2}/test-programs/parse_error_2.golden (100%) rename {v2 => v1-v2}/test-programs/parse_error_2.py (100%) rename {v2 => v1-v2}/test-programs/parse_error_3.golden (100%) rename {v2 => v1-v2}/test-programs/parse_error_3.py (100%) rename {v2 => v1-v2}/test-programs/print_builtins_error.golden (100%) rename {v2 => v1-v2}/test-programs/print_builtins_error.py (100%) rename {v2 => v1-v2}/test-programs/runtime_error.golden (100%) rename {v2 => v1-v2}/test-programs/runtime_error.py (100%) rename {v2 => v1-v2}/test-programs/set_test.golden (100%) rename {v2 => v1-v2}/test-programs/set_test.py (100%) rename {v2 => v1-v2}/test-programs/simple.golden (100%) rename {v2 => v1-v2}/test-programs/simple.py (100%) rename {v2 => v1-v2}/test-programs/three_lists.golden (100%) rename {v2 => v1-v2}/test-programs/three_lists.py (100%) rename {v2 => v1-v2}/test-programs/tuple_test.golden (100%) rename {v2 => v1-v2}/test-programs/tuple_test.py (100%) rename {v2 => v1-v2}/test-programs/two_funcs.golden (100%) rename {v2 => v1-v2}/test-programs/two_funcs.py (100%) rename {v2 => v1-v2}/tutor.html (100%) rename {v2 => v1-v2}/tutorials/MIT-6.01/README (100%) rename {v2 => v1-v2}/tutorials/MIT-6.01/map.py (100%) rename {v2 => v1-v2}/tutorials/MIT-6.01/oop_1.py (100%) rename {v2 => v1-v2}/tutorials/MIT-6.01/oop_2.py (100%) rename {v2 => v1-v2}/tutorials/MIT-6.01/oop_3.py (100%) rename {v2 => v1-v2}/tutorials/MIT-6.01/summation.py (100%) rename {v2 => v1-v2}/tutorials/README (100%) rename {v2 => v1-v2}/tutorials/advanced/map.py (100%) rename {v2 => v1-v2}/tutorials/math/newton.py (100%) rename {v2 => v1-v2}/tutorials/oop/oop_demo.py (100%) rename {v2 => v1-v2}/tutorials/personal-finance/compound_interest.py (100%) rename {v2 => v1-v2}/yellow-happy-face.png (100%) diff --git a/README b/README new file mode 100644 index 000000000..fec3998f6 --- /dev/null +++ b/README @@ -0,0 +1,33 @@ +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +====== + +v1-v2/ + Version 1 - Released on January 19, 2010 + Version 2 - Released on October 4, 2011 + +v3/ + Version 3 - Released in September 2012 + diff --git a/v2/.htaccess b/v1-v2/.htaccess similarity index 100% rename from v2/.htaccess rename to v1-v2/.htaccess diff --git a/v2/Python3-porting.txt b/v1-v2/Python3-porting.txt similarity index 100% rename from v2/Python3-porting.txt rename to v1-v2/Python3-porting.txt diff --git a/v2/README b/v1-v2/README similarity index 97% rename from v2/README rename to v1-v2/README index f24d68b2e..8726a706f 100644 --- a/v2/README +++ b/v1-v2/README @@ -22,6 +22,11 @@ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +====== +This directory contains the contents of Versions 1 and 2: + +Version 1 - Released on January 19, 2010 +Version 2 - Released on October 4, 2011 ====== Introduction: diff --git a/v2/TODO b/v1-v2/TODO similarity index 100% rename from v2/TODO rename to v1-v2/TODO diff --git a/v2/alias-screenshot.png b/v1-v2/alias-screenshot.png similarity index 100% rename from v2/alias-screenshot.png rename to v1-v2/alias-screenshot.png diff --git a/v2/cgi-bin/.htaccess b/v1-v2/cgi-bin/.htaccess similarity index 100% rename from v2/cgi-bin/.htaccess rename to v1-v2/cgi-bin/.htaccess diff --git a/v2/cgi-bin/create_db.py b/v1-v2/cgi-bin/create_db.py similarity index 100% rename from v2/cgi-bin/create_db.py rename to v1-v2/cgi-bin/create_db.py diff --git a/v2/cgi-bin/db_common.py b/v1-v2/cgi-bin/db_common.py similarity index 100% rename from v2/cgi-bin/db_common.py rename to v1-v2/cgi-bin/db_common.py diff --git a/v2/cgi-bin/index.html b/v1-v2/cgi-bin/index.html similarity index 100% rename from v2/cgi-bin/index.html rename to v1-v2/cgi-bin/index.html diff --git a/v2/cgi-bin/load_question.py b/v1-v2/cgi-bin/load_question.py similarity index 100% rename from v2/cgi-bin/load_question.py rename to v1-v2/cgi-bin/load_question.py diff --git a/v2/cgi-bin/p4_encoder.py b/v1-v2/cgi-bin/p4_encoder.py similarity index 100% rename from v2/cgi-bin/p4_encoder.py rename to v1-v2/cgi-bin/p4_encoder.py diff --git a/v2/cgi-bin/parse_questions.py b/v1-v2/cgi-bin/parse_questions.py similarity index 100% rename from v2/cgi-bin/parse_questions.py rename to v1-v2/cgi-bin/parse_questions.py diff --git a/v2/cgi-bin/pg_encoder.py b/v1-v2/cgi-bin/pg_encoder.py similarity index 100% rename from v2/cgi-bin/pg_encoder.py rename to v1-v2/cgi-bin/pg_encoder.py diff --git a/v2/cgi-bin/pg_logger.py b/v1-v2/cgi-bin/pg_logger.py similarity index 100% rename from v2/cgi-bin/pg_logger.py rename to v1-v2/cgi-bin/pg_logger.py diff --git a/v2/cgi-bin/run_tests.py b/v1-v2/cgi-bin/run_tests.py similarity index 100% rename from v2/cgi-bin/run_tests.py rename to v1-v2/cgi-bin/run_tests.py diff --git a/v2/cgi-bin/web_exec.py b/v1-v2/cgi-bin/web_exec.py similarity index 100% rename from v2/cgi-bin/web_exec.py rename to v1-v2/cgi-bin/web_exec.py diff --git a/v2/cgi-bin/web_run_test.py b/v1-v2/cgi-bin/web_run_test.py similarity index 100% rename from v2/cgi-bin/web_run_test.py rename to v1-v2/cgi-bin/web_run_test.py diff --git a/v2/edu-python-questions.js b/v1-v2/edu-python-questions.js similarity index 100% rename from v2/edu-python-questions.js rename to v1-v2/edu-python-questions.js diff --git a/v2/edu-python-title.css b/v1-v2/edu-python-title.css similarity index 100% rename from v2/edu-python-title.css rename to v1-v2/edu-python-title.css diff --git a/v2/edu-python-tutor.js b/v1-v2/edu-python-tutor.js similarity index 100% rename from v2/edu-python-tutor.js rename to v1-v2/edu-python-tutor.js diff --git a/v2/edu-python.css b/v1-v2/edu-python.css similarity index 100% rename from v2/edu-python.css rename to v1-v2/edu-python.css diff --git a/v2/edu-python.js b/v1-v2/edu-python.js similarity index 100% rename from v2/edu-python.js rename to v1-v2/edu-python.js diff --git a/v2/example-code b/v1-v2/example-code similarity index 100% rename from v2/example-code rename to v1-v2/example-code diff --git a/v2/grading-375.png b/v1-v2/grading-375.png similarity index 100% rename from v2/grading-375.png rename to v1-v2/grading-375.png diff --git a/v2/hunt-mcilroy.js b/v1-v2/hunt-mcilroy.js similarity index 100% rename from v2/hunt-mcilroy.js rename to v1-v2/hunt-mcilroy.js diff --git a/v2/index.html b/v1-v2/index.html similarity index 100% rename from v2/index.html rename to v1-v2/index.html diff --git a/v2/jquery-1.3.2.min.js b/v1-v2/jquery-1.3.2.min.js similarity index 100% rename from v2/jquery-1.3.2.min.js rename to v1-v2/jquery-1.3.2.min.js diff --git a/v2/jquery.autogrow.js b/v1-v2/jquery.autogrow.js similarity index 100% rename from v2/jquery.autogrow.js rename to v1-v2/jquery.autogrow.js diff --git a/v2/jquery.ba-bbq.min.js b/v1-v2/jquery.ba-bbq.min.js similarity index 100% rename from v2/jquery.ba-bbq.min.js rename to v1-v2/jquery.ba-bbq.min.js diff --git a/v2/jquery.corner.js b/v1-v2/jquery.corner.js similarity index 100% rename from v2/jquery.corner.js rename to v1-v2/jquery.corner.js diff --git a/v2/jquery.jsPlumb-1.3.3-all-min.js b/v1-v2/jquery.jsPlumb-1.3.3-all-min.js similarity index 100% rename from v2/jquery.jsPlumb-1.3.3-all-min.js rename to v1-v2/jquery.jsPlumb-1.3.3-all-min.js diff --git a/v2/jquery.min.js b/v1-v2/jquery.min.js similarity index 100% rename from v2/jquery.min.js rename to v1-v2/jquery.min.js diff --git a/v2/jsplumb-test.js b/v1-v2/jsplumb-test.js similarity index 100% rename from v2/jsplumb-test.js rename to v1-v2/jsplumb-test.js diff --git a/v2/mock-data.js b/v1-v2/mock-data.js similarity index 100% rename from v2/mock-data.js rename to v1-v2/mock-data.js diff --git a/v2/question.html b/v1-v2/question.html similarity index 100% rename from v2/question.html rename to v1-v2/question.html diff --git a/v2/questions/debug-bsearch.txt b/v1-v2/questions/debug-bsearch.txt similarity index 100% rename from v2/questions/debug-bsearch.txt rename to v1-v2/questions/debug-bsearch.txt diff --git a/v2/questions/debug-ireverse.txt b/v1-v2/questions/debug-ireverse.txt similarity index 100% rename from v2/questions/debug-ireverse.txt rename to v1-v2/questions/debug-ireverse.txt diff --git a/v2/questions/debug-mergesort.txt b/v1-v2/questions/debug-mergesort.txt similarity index 100% rename from v2/questions/debug-mergesort.txt rename to v1-v2/questions/debug-mergesort.txt diff --git a/v2/questions/optimize-find-dups.txt b/v1-v2/questions/optimize-find-dups.txt similarity index 100% rename from v2/questions/optimize-find-dups.txt rename to v1-v2/questions/optimize-find-dups.txt diff --git a/v2/questions/optimize-search.txt b/v1-v2/questions/optimize-search.txt similarity index 100% rename from v2/questions/optimize-search.txt rename to v1-v2/questions/optimize-search.txt diff --git a/v2/questions/optimize-sum.txt b/v1-v2/questions/optimize-sum.txt similarity index 100% rename from v2/questions/optimize-sum.txt rename to v1-v2/questions/optimize-sum.txt diff --git a/v2/questions/remove-dups.txt b/v1-v2/questions/remove-dups.txt similarity index 100% rename from v2/questions/remove-dups.txt rename to v1-v2/questions/remove-dups.txt diff --git a/v2/questions/reverse.txt b/v1-v2/questions/reverse.txt similarity index 100% rename from v2/questions/reverse.txt rename to v1-v2/questions/reverse.txt diff --git a/v2/questions/two-sum.txt b/v1-v2/questions/two-sum.txt similarity index 100% rename from v2/questions/two-sum.txt rename to v1-v2/questions/two-sum.txt diff --git a/v2/red-sad-face.jpg b/v1-v2/red-sad-face.jpg similarity index 100% rename from v2/red-sad-face.jpg rename to v1-v2/red-sad-face.jpg diff --git a/v2/test-programs/caught_exception_1.golden b/v1-v2/test-programs/caught_exception_1.golden similarity index 100% rename from v2/test-programs/caught_exception_1.golden rename to v1-v2/test-programs/caught_exception_1.golden diff --git a/v2/test-programs/caught_exception_1.py b/v1-v2/test-programs/caught_exception_1.py similarity index 100% rename from v2/test-programs/caught_exception_1.py rename to v1-v2/test-programs/caught_exception_1.py diff --git a/v2/test-programs/caught_exception_2.golden b/v1-v2/test-programs/caught_exception_2.golden similarity index 100% rename from v2/test-programs/caught_exception_2.golden rename to v1-v2/test-programs/caught_exception_2.golden diff --git a/v2/test-programs/caught_exception_2.py b/v1-v2/test-programs/caught_exception_2.py similarity index 100% rename from v2/test-programs/caught_exception_2.py rename to v1-v2/test-programs/caught_exception_2.py diff --git a/v2/test-programs/circ_ref.golden b/v1-v2/test-programs/circ_ref.golden similarity index 100% rename from v2/test-programs/circ_ref.golden rename to v1-v2/test-programs/circ_ref.golden diff --git a/v2/test-programs/circ_ref.py b/v1-v2/test-programs/circ_ref.py similarity index 100% rename from v2/test-programs/circ_ref.py rename to v1-v2/test-programs/circ_ref.py diff --git a/v2/test-programs/circ_ref_2.golden b/v1-v2/test-programs/circ_ref_2.golden similarity index 100% rename from v2/test-programs/circ_ref_2.golden rename to v1-v2/test-programs/circ_ref_2.golden diff --git a/v2/test-programs/circ_ref_2.py b/v1-v2/test-programs/circ_ref_2.py similarity index 100% rename from v2/test-programs/circ_ref_2.py rename to v1-v2/test-programs/circ_ref_2.py diff --git a/v2/test-programs/circ_ref_fake.golden b/v1-v2/test-programs/circ_ref_fake.golden similarity index 100% rename from v2/test-programs/circ_ref_fake.golden rename to v1-v2/test-programs/circ_ref_fake.golden diff --git a/v2/test-programs/circ_ref_fake.py b/v1-v2/test-programs/circ_ref_fake.py similarity index 100% rename from v2/test-programs/circ_ref_fake.py rename to v1-v2/test-programs/circ_ref_fake.py diff --git a/v2/test-programs/class_test.golden b/v1-v2/test-programs/class_test.golden similarity index 100% rename from v2/test-programs/class_test.golden rename to v1-v2/test-programs/class_test.golden diff --git a/v2/test-programs/class_test.py b/v1-v2/test-programs/class_test.py similarity index 100% rename from v2/test-programs/class_test.py rename to v1-v2/test-programs/class_test.py diff --git a/v2/test-programs/class_test_2.golden b/v1-v2/test-programs/class_test_2.golden similarity index 100% rename from v2/test-programs/class_test_2.golden rename to v1-v2/test-programs/class_test_2.golden diff --git a/v2/test-programs/class_test_2.py b/v1-v2/test-programs/class_test_2.py similarity index 100% rename from v2/test-programs/class_test_2.py rename to v1-v2/test-programs/class_test_2.py diff --git a/v2/test-programs/class_test_3.golden b/v1-v2/test-programs/class_test_3.golden similarity index 100% rename from v2/test-programs/class_test_3.golden rename to v1-v2/test-programs/class_test_3.golden diff --git a/v2/test-programs/class_test_3.py b/v1-v2/test-programs/class_test_3.py similarity index 100% rename from v2/test-programs/class_test_3.py rename to v1-v2/test-programs/class_test_3.py diff --git a/v2/test-programs/data_test.golden b/v1-v2/test-programs/data_test.golden similarity index 100% rename from v2/test-programs/data_test.golden rename to v1-v2/test-programs/data_test.golden diff --git a/v2/test-programs/data_test.py b/v1-v2/test-programs/data_test.py similarity index 100% rename from v2/test-programs/data_test.py rename to v1-v2/test-programs/data_test.py diff --git a/v2/test-programs/dict_error.golden b/v1-v2/test-programs/dict_error.golden similarity index 100% rename from v2/test-programs/dict_error.golden rename to v1-v2/test-programs/dict_error.golden diff --git a/v2/test-programs/dict_error.py b/v1-v2/test-programs/dict_error.py similarity index 100% rename from v2/test-programs/dict_error.py rename to v1-v2/test-programs/dict_error.py diff --git a/v2/test-programs/dict_test.golden b/v1-v2/test-programs/dict_test.golden similarity index 100% rename from v2/test-programs/dict_test.golden rename to v1-v2/test-programs/dict_test.golden diff --git a/v2/test-programs/dict_test.py b/v1-v2/test-programs/dict_test.py similarity index 100% rename from v2/test-programs/dict_test.py rename to v1-v2/test-programs/dict_test.py diff --git a/v2/test-programs/exec_test.golden b/v1-v2/test-programs/exec_test.golden similarity index 100% rename from v2/test-programs/exec_test.golden rename to v1-v2/test-programs/exec_test.golden diff --git a/v2/test-programs/exec_test.py b/v1-v2/test-programs/exec_test.py similarity index 100% rename from v2/test-programs/exec_test.py rename to v1-v2/test-programs/exec_test.py diff --git a/v2/test-programs/func_exception.golden b/v1-v2/test-programs/func_exception.golden similarity index 100% rename from v2/test-programs/func_exception.golden rename to v1-v2/test-programs/func_exception.golden diff --git a/v2/test-programs/func_exception.py b/v1-v2/test-programs/func_exception.py similarity index 100% rename from v2/test-programs/func_exception.py rename to v1-v2/test-programs/func_exception.py diff --git a/v2/test-programs/generator_test.golden b/v1-v2/test-programs/generator_test.golden similarity index 100% rename from v2/test-programs/generator_test.golden rename to v1-v2/test-programs/generator_test.golden diff --git a/v2/test-programs/generator_test.py b/v1-v2/test-programs/generator_test.py similarity index 100% rename from v2/test-programs/generator_test.py rename to v1-v2/test-programs/generator_test.py diff --git a/v2/test-programs/import_error.golden b/v1-v2/test-programs/import_error.golden similarity index 100% rename from v2/test-programs/import_error.golden rename to v1-v2/test-programs/import_error.golden diff --git a/v2/test-programs/import_error.py b/v1-v2/test-programs/import_error.py similarity index 100% rename from v2/test-programs/import_error.py rename to v1-v2/test-programs/import_error.py diff --git a/v2/test-programs/infinite_loop.golden b/v1-v2/test-programs/infinite_loop.golden similarity index 100% rename from v2/test-programs/infinite_loop.golden rename to v1-v2/test-programs/infinite_loop.golden diff --git a/v2/test-programs/infinite_loop.py b/v1-v2/test-programs/infinite_loop.py similarity index 100% rename from v2/test-programs/infinite_loop.py rename to v1-v2/test-programs/infinite_loop.py diff --git a/v2/test-programs/infinite_loop_one_liner.golden b/v1-v2/test-programs/infinite_loop_one_liner.golden similarity index 100% rename from v2/test-programs/infinite_loop_one_liner.golden rename to v1-v2/test-programs/infinite_loop_one_liner.golden diff --git a/v2/test-programs/infinite_loop_one_liner.py b/v1-v2/test-programs/infinite_loop_one_liner.py similarity index 100% rename from v2/test-programs/infinite_loop_one_liner.py rename to v1-v2/test-programs/infinite_loop_one_liner.py diff --git a/v2/test-programs/lambda_1.golden b/v1-v2/test-programs/lambda_1.golden similarity index 100% rename from v2/test-programs/lambda_1.golden rename to v1-v2/test-programs/lambda_1.golden diff --git a/v2/test-programs/lambda_1.py b/v1-v2/test-programs/lambda_1.py similarity index 100% rename from v2/test-programs/lambda_1.py rename to v1-v2/test-programs/lambda_1.py diff --git a/v2/test-programs/list_dict_test.golden b/v1-v2/test-programs/list_dict_test.golden similarity index 100% rename from v2/test-programs/list_dict_test.golden rename to v1-v2/test-programs/list_dict_test.golden diff --git a/v2/test-programs/list_dict_test.py b/v1-v2/test-programs/list_dict_test.py similarity index 100% rename from v2/test-programs/list_dict_test.py rename to v1-v2/test-programs/list_dict_test.py diff --git a/v2/test-programs/list_test.golden b/v1-v2/test-programs/list_test.golden similarity index 100% rename from v2/test-programs/list_test.golden rename to v1-v2/test-programs/list_test.golden diff --git a/v2/test-programs/list_test.py b/v1-v2/test-programs/list_test.py similarity index 100% rename from v2/test-programs/list_test.py rename to v1-v2/test-programs/list_test.py diff --git a/v2/test-programs/newstyle_class.golden b/v1-v2/test-programs/newstyle_class.golden similarity index 100% rename from v2/test-programs/newstyle_class.golden rename to v1-v2/test-programs/newstyle_class.golden diff --git a/v2/test-programs/newstyle_class.py b/v1-v2/test-programs/newstyle_class.py similarity index 100% rename from v2/test-programs/newstyle_class.py rename to v1-v2/test-programs/newstyle_class.py diff --git a/v2/test-programs/one_func.golden b/v1-v2/test-programs/one_func.golden similarity index 100% rename from v2/test-programs/one_func.golden rename to v1-v2/test-programs/one_func.golden diff --git a/v2/test-programs/one_func.py b/v1-v2/test-programs/one_func.py similarity index 100% rename from v2/test-programs/one_func.py rename to v1-v2/test-programs/one_func.py diff --git a/v2/test-programs/open_error.golden b/v1-v2/test-programs/open_error.golden similarity index 100% rename from v2/test-programs/open_error.golden rename to v1-v2/test-programs/open_error.golden diff --git a/v2/test-programs/open_error.py b/v1-v2/test-programs/open_error.py similarity index 100% rename from v2/test-programs/open_error.py rename to v1-v2/test-programs/open_error.py diff --git a/v2/test-programs/parse_error.golden b/v1-v2/test-programs/parse_error.golden similarity index 100% rename from v2/test-programs/parse_error.golden rename to v1-v2/test-programs/parse_error.golden diff --git a/v2/test-programs/parse_error.py b/v1-v2/test-programs/parse_error.py similarity index 100% rename from v2/test-programs/parse_error.py rename to v1-v2/test-programs/parse_error.py diff --git a/v2/test-programs/parse_error_2.golden b/v1-v2/test-programs/parse_error_2.golden similarity index 100% rename from v2/test-programs/parse_error_2.golden rename to v1-v2/test-programs/parse_error_2.golden diff --git a/v2/test-programs/parse_error_2.py b/v1-v2/test-programs/parse_error_2.py similarity index 100% rename from v2/test-programs/parse_error_2.py rename to v1-v2/test-programs/parse_error_2.py diff --git a/v2/test-programs/parse_error_3.golden b/v1-v2/test-programs/parse_error_3.golden similarity index 100% rename from v2/test-programs/parse_error_3.golden rename to v1-v2/test-programs/parse_error_3.golden diff --git a/v2/test-programs/parse_error_3.py b/v1-v2/test-programs/parse_error_3.py similarity index 100% rename from v2/test-programs/parse_error_3.py rename to v1-v2/test-programs/parse_error_3.py diff --git a/v2/test-programs/print_builtins_error.golden b/v1-v2/test-programs/print_builtins_error.golden similarity index 100% rename from v2/test-programs/print_builtins_error.golden rename to v1-v2/test-programs/print_builtins_error.golden diff --git a/v2/test-programs/print_builtins_error.py b/v1-v2/test-programs/print_builtins_error.py similarity index 100% rename from v2/test-programs/print_builtins_error.py rename to v1-v2/test-programs/print_builtins_error.py diff --git a/v2/test-programs/runtime_error.golden b/v1-v2/test-programs/runtime_error.golden similarity index 100% rename from v2/test-programs/runtime_error.golden rename to v1-v2/test-programs/runtime_error.golden diff --git a/v2/test-programs/runtime_error.py b/v1-v2/test-programs/runtime_error.py similarity index 100% rename from v2/test-programs/runtime_error.py rename to v1-v2/test-programs/runtime_error.py diff --git a/v2/test-programs/set_test.golden b/v1-v2/test-programs/set_test.golden similarity index 100% rename from v2/test-programs/set_test.golden rename to v1-v2/test-programs/set_test.golden diff --git a/v2/test-programs/set_test.py b/v1-v2/test-programs/set_test.py similarity index 100% rename from v2/test-programs/set_test.py rename to v1-v2/test-programs/set_test.py diff --git a/v2/test-programs/simple.golden b/v1-v2/test-programs/simple.golden similarity index 100% rename from v2/test-programs/simple.golden rename to v1-v2/test-programs/simple.golden diff --git a/v2/test-programs/simple.py b/v1-v2/test-programs/simple.py similarity index 100% rename from v2/test-programs/simple.py rename to v1-v2/test-programs/simple.py diff --git a/v2/test-programs/three_lists.golden b/v1-v2/test-programs/three_lists.golden similarity index 100% rename from v2/test-programs/three_lists.golden rename to v1-v2/test-programs/three_lists.golden diff --git a/v2/test-programs/three_lists.py b/v1-v2/test-programs/three_lists.py similarity index 100% rename from v2/test-programs/three_lists.py rename to v1-v2/test-programs/three_lists.py diff --git a/v2/test-programs/tuple_test.golden b/v1-v2/test-programs/tuple_test.golden similarity index 100% rename from v2/test-programs/tuple_test.golden rename to v1-v2/test-programs/tuple_test.golden diff --git a/v2/test-programs/tuple_test.py b/v1-v2/test-programs/tuple_test.py similarity index 100% rename from v2/test-programs/tuple_test.py rename to v1-v2/test-programs/tuple_test.py diff --git a/v2/test-programs/two_funcs.golden b/v1-v2/test-programs/two_funcs.golden similarity index 100% rename from v2/test-programs/two_funcs.golden rename to v1-v2/test-programs/two_funcs.golden diff --git a/v2/test-programs/two_funcs.py b/v1-v2/test-programs/two_funcs.py similarity index 100% rename from v2/test-programs/two_funcs.py rename to v1-v2/test-programs/two_funcs.py diff --git a/v2/tutor.html b/v1-v2/tutor.html similarity index 100% rename from v2/tutor.html rename to v1-v2/tutor.html diff --git a/v2/tutorials/MIT-6.01/README b/v1-v2/tutorials/MIT-6.01/README similarity index 100% rename from v2/tutorials/MIT-6.01/README rename to v1-v2/tutorials/MIT-6.01/README diff --git a/v2/tutorials/MIT-6.01/map.py b/v1-v2/tutorials/MIT-6.01/map.py similarity index 100% rename from v2/tutorials/MIT-6.01/map.py rename to v1-v2/tutorials/MIT-6.01/map.py diff --git a/v2/tutorials/MIT-6.01/oop_1.py b/v1-v2/tutorials/MIT-6.01/oop_1.py similarity index 100% rename from v2/tutorials/MIT-6.01/oop_1.py rename to v1-v2/tutorials/MIT-6.01/oop_1.py diff --git a/v2/tutorials/MIT-6.01/oop_2.py b/v1-v2/tutorials/MIT-6.01/oop_2.py similarity index 100% rename from v2/tutorials/MIT-6.01/oop_2.py rename to v1-v2/tutorials/MIT-6.01/oop_2.py diff --git a/v2/tutorials/MIT-6.01/oop_3.py b/v1-v2/tutorials/MIT-6.01/oop_3.py similarity index 100% rename from v2/tutorials/MIT-6.01/oop_3.py rename to v1-v2/tutorials/MIT-6.01/oop_3.py diff --git a/v2/tutorials/MIT-6.01/summation.py b/v1-v2/tutorials/MIT-6.01/summation.py similarity index 100% rename from v2/tutorials/MIT-6.01/summation.py rename to v1-v2/tutorials/MIT-6.01/summation.py diff --git a/v2/tutorials/README b/v1-v2/tutorials/README similarity index 100% rename from v2/tutorials/README rename to v1-v2/tutorials/README diff --git a/v2/tutorials/advanced/map.py b/v1-v2/tutorials/advanced/map.py similarity index 100% rename from v2/tutorials/advanced/map.py rename to v1-v2/tutorials/advanced/map.py diff --git a/v2/tutorials/math/newton.py b/v1-v2/tutorials/math/newton.py similarity index 100% rename from v2/tutorials/math/newton.py rename to v1-v2/tutorials/math/newton.py diff --git a/v2/tutorials/oop/oop_demo.py b/v1-v2/tutorials/oop/oop_demo.py similarity index 100% rename from v2/tutorials/oop/oop_demo.py rename to v1-v2/tutorials/oop/oop_demo.py diff --git a/v2/tutorials/personal-finance/compound_interest.py b/v1-v2/tutorials/personal-finance/compound_interest.py similarity index 100% rename from v2/tutorials/personal-finance/compound_interest.py rename to v1-v2/tutorials/personal-finance/compound_interest.py diff --git a/v2/yellow-happy-face.png b/v1-v2/yellow-happy-face.png similarity index 100% rename from v2/yellow-happy-face.png rename to v1-v2/yellow-happy-face.png From 0b563fc5a91bd1c467a029013044241faa7bd77e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 2 Sep 2012 11:39:23 -0700 Subject: [PATCH 186/502] added prototype lesson.html --- v3/css/opt-lessons.css | 81 ++++++++ v3/js/opt-lessons.js | 422 +++++++++++++++++++++++++++++++++++++++++ v3/lesson.html | 101 ++++++++++ v3/pythontutor.py | 9 + 4 files changed, 613 insertions(+) create mode 100644 v3/css/opt-lessons.css create mode 100644 v3/js/opt-lessons.js create mode 100644 v3/lesson.html diff --git a/v3/css/opt-lessons.css b/v3/css/opt-lessons.css new file mode 100644 index 000000000..698fe4280 --- /dev/null +++ b/v3/css/opt-lessons.css @@ -0,0 +1,81 @@ +/* CSS accompanying ../tutor.html */ + +h1 { + font-weight: normal; + font-size: 20pt; + font-family: georgia, serif; + line-height: 1em; /* enforce single spacing so that Georgia works */ + + margin-top: 0px; + margin-bottom: 8px; +} + +h2 { + font-size: 12pt; + font-weight: normal; + font-family: georgia, serif; + line-height: 1.1em; /* enforce single spacing so that Georgia works */ + + margin-top: 2px; + margin-bottom: 20px; +} + + +body { + background-color: white; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 10pt; +} + +a, +a:visited, +a:hover { + color: #3D58A2; +} + +span { + padding: 0px; +} + +table#pyOutputPane { + padding: 10px; +} + +#pyInputPane { + margin-top: 20px; + margin-bottom: 20px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + +#codeInputPane { + margin-top: 5px; + font-size: 12pt; +} + +button.smallBtn { + font-size: 10pt; + padding: 3px; +} + +button.bigBtn { + font-size: 12pt; + padding: 5px; +} + +#footer { + color: #666666; + font-size: 9pt; + border-top: 1px solid #bbbbbb; + padding-top: 5px; + margin-top: 5px; + + max-width: 700px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + diff --git a/v3/js/opt-lessons.js b/v3/js/opt-lessons.js new file mode 100644 index 000000000..f755c8fed --- /dev/null +++ b/v3/js/opt-lessons.js @@ -0,0 +1,422 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// Pre-reqs: pytutor.js and jquery.ba-bbq.min.js should be imported BEFORE this file + +var backend_script = 'exec'; // URL of backend script, which must eventually call pg_logger.py + +var appMode = 'edit'; // 'edit' or 'visualize' + +var preseededCode = null; // if you passed in a 'code=' in the URL, then set this var +var preseededCurInstr = null; // if you passed in a 'curInstr=' in the URL, then set this var + + +var myVisualizer = null; // singleton ExecutionVisualizer instance + +function enterEditMode() { + $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); +} + + +var pyInputCodeMirror; // CodeMirror object that contains the input text + +function setCodeMirrorVal(dat) { + pyInputCodeMirror.setValue(dat.rtrim() /* kill trailing spaces */); +} + + +$(document).ready(function() { + + pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { + mode: 'python', + lineNumbers: true, + tabSize: 2, + // convert tab into two spaces: + extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} + }); + + pyInputCodeMirror.setSize(null, '450px'); + + + + // be friendly to the browser's forward and back buttons + // thanks to http://benalman.com/projects/jquery-bbq-plugin/ + $(window).bind("hashchange", function(e) { + appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode + + preseededCode = $.bbq.getState('code'); // yuck, global! + var preseededMode = $.bbq.getState('mode'); + + if ($.bbq.getState('cumulative_mode') == 'true') { + $('#cumulativeMode').prop('checked', true); + } + + // only bother with curInstr when we're visualizing ... + if (!preseededCurInstr && preseededMode == 'visualize') { // TODO: kinda gross hack + preseededCurInstr = Number($.bbq.getState('curInstr')); + } + + // default mode is 'edit' + if (appMode == undefined) { + appMode = 'edit'; + } + + // if there's no myVisualizer, then default to edit mode since there's + // nothing to visualize: + if (!myVisualizer) { + appMode = 'edit'; + + if (preseededCode && preseededMode == 'visualize') { + // punt for now ... + } + else { + $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); + } + } + + + if (appMode == 'edit') { + $("#pyInputPane").show(); + $("#pyOutputPane").hide(); + } + else if (appMode == 'visualize') { + $("#pyInputPane").hide(); + $("#pyOutputPane").show(); + + $('#executeBtn').html("Visualize execution"); + $('#executeBtn').attr('disabled', false); + + + // do this AFTER making #pyOutputPane visible, or else + // jsPlumb connectors won't render properly + myVisualizer.updateOutput(); + + // grab focus so that keyboard events work + myVisualizer.grabKeyboardFocus(); + + // customize edit button click functionality AFTER rendering (TODO: awkward!) + $('#pyOutputPane #editBtn').click(function() { + enterEditMode(); + }); + + } + else { + assert(false); + } + }); + + // From: http://benalman.com/projects/jquery-bbq-plugin/ + // Since the event is only triggered when the hash changes, we need + // to trigger the event now, to handle the hash the page may have + // loaded with. + $(window).trigger( "hashchange" ); + + + $("#executeBtn").attr('disabled', false); + $("#executeBtn").click(function() { + $('#executeBtn').html("Please wait ... processing your code"); + $('#executeBtn').attr('disabled', true); + $("#pyOutputPane").hide(); + + + $.get(backend_script, + {user_script : pyInputCodeMirror.getValue(), + cumulative_mode: $('#cumulativeMode').prop('checked')}, + function(dataFromBackend) { + var trace = dataFromBackend.trace; + + // don't enter visualize mode if there are killer errors: + if (!trace || + (trace.length == 0) || + (trace[trace.length - 1].event == 'uncaught_exception')) { + + if (trace.length == 1) { + var errorLineNo = trace[0].line - 1; /* CodeMirror lines are zero-indexed */ + if (errorLineNo !== undefined) { + // highlight the faulting line in pyInputCodeMirror + pyInputCodeMirror.focus(); + pyInputCodeMirror.setCursor(errorLineNo, 0); + pyInputCodeMirror.setLineClass(errorLineNo, null, 'errorLine'); + + pyInputCodeMirror.setOption('onChange', function() { + pyInputCodeMirror.setLineClass(errorLineNo, null, null); // reset line back to normal + pyInputCodeMirror.setOption('onChange', null); // cancel + }); + } + + alert(trace[0].exception_msg); + } + else { + alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)"); + } + + $('#executeBtn').html("Visualize execution"); + $('#executeBtn').attr('disabled', false); + } + else { + var startingInstruction = 0; + + // only do this at most ONCE, and then clear out preseededCurInstr + if (preseededCurInstr && preseededCurInstr < trace.length) { // NOP anyways if preseededCurInstr is 0 + startingInstruction = preseededCurInstr; + preseededCurInstr = null; + } + + myVisualizer = new ExecutionVisualizer('pyOutputPane', + dataFromBackend, + {startingInstruction: startingInstruction}); + + $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); + } + }, + "json"); + }); + + + + // canned examples + + $("#tutorialExampleLink").click(function() { + $.get("example-code/py_tutorial.txt", setCodeMirrorVal); + return false; + }); + + $("#strtokExampleLink").click(function() { + $.get("example-code/strtok.txt", setCodeMirrorVal); + return false; + }); + + $("#fibonacciExampleLink").click(function() { + $.get("example-code/fib.txt", setCodeMirrorVal); + return false; + }); + + $("#memoFibExampleLink").click(function() { + $.get("example-code/memo_fib.txt", setCodeMirrorVal); + return false; + }); + + $("#factExampleLink").click(function() { + $.get("example-code/fact.txt", setCodeMirrorVal); + return false; + }); + + $("#filterExampleLink").click(function() { + $.get("example-code/filter.txt", setCodeMirrorVal); + return false; + }); + + $("#insSortExampleLink").click(function() { + $.get("example-code/ins_sort.txt", setCodeMirrorVal); + return false; + }); + + $("#aliasExampleLink").click(function() { + $.get("example-code/aliasing.txt", setCodeMirrorVal); + return false; + }); + + $("#newtonExampleLink").click(function() { + $.get("example-code/sqrt.txt", setCodeMirrorVal); + return false; + }); + + $("#oopSmallExampleLink").click(function() { + $.get("example-code/oop_small.txt", setCodeMirrorVal); + return false; + }); + + $("#mapExampleLink").click(function() { + $.get("example-code/map.txt", setCodeMirrorVal); + return false; + }); + + $("#oop1ExampleLink").click(function() { + $.get("example-code/oop_1.txt", setCodeMirrorVal); + return false; + }); + + $("#oop2ExampleLink").click(function() { + $.get("example-code/oop_2.txt", setCodeMirrorVal); + return false; + }); + + $("#inheritanceExampleLink").click(function() { + $.get("example-code/oop_inherit.txt", setCodeMirrorVal); + return false; + }); + + $("#sumExampleLink").click(function() { + $.get("example-code/sum.txt", setCodeMirrorVal); + return false; + }); + + $("#pwGcdLink").click(function() { + $.get("example-code/wentworth_gcd.txt", setCodeMirrorVal); + return false; + }); + + $("#pwSumListLink").click(function() { + $.get("example-code/wentworth_sumList.txt", setCodeMirrorVal); + return false; + }); + + $("#towersOfHanoiLink").click(function() { + $.get("example-code/towers_of_hanoi.txt", setCodeMirrorVal); + return false; + }); + + $("#pwTryFinallyLink").click(function() { + $.get("example-code/wentworth_try_finally.txt", setCodeMirrorVal); + return false; + }); + + $("#sumCubesLink").click(function() { + $.get("example-code/sum-cubes.txt", setCodeMirrorVal); + return false; + }); + + $("#decoratorsLink").click(function() { + $.get("example-code/decorators.txt", setCodeMirrorVal); + return false; + }); + + + + $('#closure1Link').click(function() { + $.get("example-code/closures/closure1.txt", setCodeMirrorVal); + return false; + }); + $('#closure2Link').click(function() { + $.get("example-code/closures/closure2.txt", setCodeMirrorVal); + return false; + }); + $('#closure3Link').click(function() { + $.get("example-code/closures/closure3.txt", setCodeMirrorVal); + return false; + }); + $('#closure4Link').click(function() { + $.get("example-code/closures/closure4.txt", setCodeMirrorVal); + return false; + }); + $('#closure5Link').click(function() { + $.get("example-code/closures/closure5.txt", setCodeMirrorVal); + return false; + }); + $('#lambdaParamLink').click(function() { + $.get("example-code/closures/lambda-param.txt", setCodeMirrorVal); + return false; + }); + + + $('#aliasing1Link').click(function() { + $.get("example-code/aliasing/aliasing1.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing2Link').click(function() { + $.get("example-code/aliasing/aliasing2.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing3Link').click(function() { + $.get("example-code/aliasing/aliasing3.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing4Link').click(function() { + $.get("example-code/aliasing/aliasing4.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing5Link').click(function() { + $.get("example-code/aliasing/aliasing5.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing6Link').click(function() { + $.get("example-code/aliasing/aliasing6.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing7Link').click(function() { + $.get("example-code/aliasing/aliasing7.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing8Link').click(function() { + $.get("example-code/aliasing/aliasing8.txt", setCodeMirrorVal); + return false; + }); + + + $('#ll1Link').click(function() { + $.get("example-code/linked-lists/ll1.txt", setCodeMirrorVal); + return false; + }); + $('#ll2Link').click(function() { + $.get("example-code/linked-lists/ll2.txt", setCodeMirrorVal); + return false; + }); + + + if (preseededCode) { + setCodeMirrorVal(preseededCode); + + if ($.bbq.getState('mode') != 'edit') { + $("#executeBtn").trigger('click'); + } + } + else { + // select a canned example on start-up: + $("#aliasExampleLink").trigger('click'); + } + + + // log a generic AJAX error handler + $(document).ajaxError(function() { + alert("Server error (possibly due to memory/resource overload)."); + + $('#executeBtn').html("Visualize execution"); + $('#executeBtn').attr('disabled', false); + }); + + + // redraw connector arrows on window resize + $(window).resize(function() { + if (appMode == 'visualize') { + myVisualizer.redrawConnectors(); + } + }); + + $('#genUrlBtn').bind('click', function() { + var urlStr = $.param.fragment(window.location.href, + {code: pyInputCodeMirror.getValue(), + curInstr: (appMode == 'visualize') ? myVisualizer.curInstr : 0, + mode: appMode, + cumulative_mode: $('#cumulativeMode').prop('checked') + }, + 2); + $('#urlOutput').val(urlStr); + }); +}); + diff --git a/v3/lesson.html b/v3/lesson.html new file mode 100644 index 000000000..34e798ec1 --- /dev/null +++ b/v3/lesson.html @@ -0,0 +1,101 @@ + + + + + + + Online Python Tutor (v3) + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +Write your Python code here: +
+ +
+ +

+ +

+ + +
+
+ + + + + + diff --git a/v3/pythontutor.py b/v3/pythontutor.py index 9f40d6696..3bb731160 100644 --- a/v3/pythontutor.py +++ b/v3/pythontutor.py @@ -48,6 +48,14 @@ def get(self): self.response.out.write(template.render()) +class LessonPage(webapp2.RequestHandler): + + def get(self): + self.response.headers['Content-Type'] = 'text/html' + template = JINJA_ENVIRONMENT.get_template('lesson.html') + self.response.out.write(template.render()) + + class ExecScript(webapp2.RequestHandler): def json_finalizer(self, input_code, output_trace): @@ -68,6 +76,7 @@ def get(self): app = webapp2.WSGIApplication([('/', TutorPage), + ('/lesson.html', LessonPage), ('/exec', ExecScript)], debug=True) From 8f39ac7efcab99722c3ec04c7c7bdbc206cf3a0e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 2 Sep 2012 12:39:48 -0700 Subject: [PATCH 187/502] added embeddedMode param to ExecutionVisualizer --- v3/js/pytutor.js | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 80a5e5fce..9dcee2cf5 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -56,6 +56,7 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // hideOutput - hide "Program output" and "Generate URL" displays // codeDivHeight - maximum height of #pyCodeOutputDiv (in pixels) // editCodeBaseURL - the base URL to visit when the user clicks 'Edit code' +// embeddedMode - make the widget narrower horizontally and disable breakpoints function ExecutionVisualizer(domRootID, dat, params) { this.curInputCode = dat.code.rtrim(); // kill trailing spaces this.curTrace = dat.trace; @@ -159,9 +160,9 @@ ExecutionVisualizer.prototype.render = function() {
\
\ \ - \ + \ Step ? of ?\ - \ + \ \
\
\ @@ -207,6 +208,23 @@ ExecutionVisualizer.prototype.render = function() { } + if (this.params.embeddedMode) { + this.params.hideOutput = true; // put this before hideOutput handler + + this.domRoot.find('#executionSlider') + .css('width', '320px') + .css('margin', '6px auto'); + + this.domRoot.find('#executionSliderCaption').hide(); + this.domRoot.find('#jmpFirstInstr').hide(); + this.domRoot.find('#jmpLastInstr').hide(); + + this.domRoot.find('#pyCodeOutputDiv') + .css('max-width', '350px'); + + } + + // create a persistent globals frame // (note that we need to keep #globals_area separate from #stack for d3 to work its magic) this.domRoot.find("#globals_area").append('
\
\ \ - \ + \ Step ? of ?\ - \ + \ \
\
\ @@ -212,7 +212,7 @@ ExecutionVisualizer.prototype.render = function() { this.params.hideOutput = true; // put this before hideOutput handler this.domRoot.find('#executionSlider') - .css('width', '320px') + .css('width', '330px') .css('margin', '6px auto'); this.domRoot.find('#executionSliderCaption').hide(); @@ -220,7 +220,8 @@ ExecutionVisualizer.prototype.render = function() { this.domRoot.find('#jmpLastInstr').hide(); this.domRoot.find('#pyCodeOutputDiv') - .css('max-width', '350px'); + .css('max-width', '350px') + .css('max-height', '400px'); } From 1760f3595d53b7c518208601ca68e0dca6be09d4 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 2 Sep 2012 12:56:51 -0700 Subject: [PATCH 189/502] bah --- v3/css/opt-lessons.css | 25 +++-- v3/js/opt-lessons.js | 229 +---------------------------------------- v3/lesson.html | 24 ++--- 3 files changed, 34 insertions(+), 244 deletions(-) diff --git a/v3/css/opt-lessons.css b/v3/css/opt-lessons.css index 698fe4280..6f5e3b0c9 100644 --- a/v3/css/opt-lessons.css +++ b/v3/css/opt-lessons.css @@ -1,4 +1,4 @@ -/* CSS accompanying ../tutor.html */ +/* CSS accompanying ../lesson.html */ h1 { font-weight: normal; @@ -25,6 +25,24 @@ body { background-color: white; font-family: verdana, arial, helvetica, sans-serif; font-size: 10pt; + + max-width: 900px; + /* center align */ + margin-left: auto; + margin-right: auto; +} + +div#lessonHeader { + margin-bottom: 15pt; +} + +div#lessonTitle { + font-size: 16pt; + margin-bottom: 10pt; +} + +div#lessonExposition { + font-size: 12pt; } a, @@ -72,10 +90,5 @@ button.bigBtn { border-top: 1px solid #bbbbbb; padding-top: 5px; margin-top: 5px; - - max-width: 700px; - /* center align */ - margin-left: auto; - margin-right: auto; } diff --git a/v3/js/opt-lessons.js b/v3/js/opt-lessons.js index f755c8fed..0c21b3f03 100644 --- a/v3/js/opt-lessons.js +++ b/v3/js/opt-lessons.js @@ -33,9 +33,6 @@ var backend_script = 'exec'; // URL of backend script, which must eventually cal var appMode = 'edit'; // 'edit' or 'visualize' -var preseededCode = null; // if you passed in a 'code=' in the URL, then set this var -var preseededCurInstr = null; // if you passed in a 'curInstr=' in the URL, then set this var - var myVisualizer = null; // singleton ExecutionVisualizer instance @@ -70,18 +67,6 @@ $(document).ready(function() { $(window).bind("hashchange", function(e) { appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode - preseededCode = $.bbq.getState('code'); // yuck, global! - var preseededMode = $.bbq.getState('mode'); - - if ($.bbq.getState('cumulative_mode') == 'true') { - $('#cumulativeMode').prop('checked', true); - } - - // only bother with curInstr when we're visualizing ... - if (!preseededCurInstr && preseededMode == 'visualize') { // TODO: kinda gross hack - preseededCurInstr = Number($.bbq.getState('curInstr')); - } - // default mode is 'edit' if (appMode == undefined) { appMode = 'edit'; @@ -91,13 +76,7 @@ $(document).ready(function() { // nothing to visualize: if (!myVisualizer) { appMode = 'edit'; - - if (preseededCode && preseededMode == 'visualize') { - // punt for now ... - } - else { - $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); - } + $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); } @@ -180,17 +159,9 @@ $(document).ready(function() { $('#executeBtn').attr('disabled', false); } else { - var startingInstruction = 0; - - // only do this at most ONCE, and then clear out preseededCurInstr - if (preseededCurInstr && preseededCurInstr < trace.length) { // NOP anyways if preseededCurInstr is 0 - startingInstruction = preseededCurInstr; - preseededCurInstr = null; - } - myVisualizer = new ExecutionVisualizer('pyOutputPane', dataFromBackend, - {startingInstruction: startingInstruction}); + {embeddedMode: true}); $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); } @@ -199,199 +170,6 @@ $(document).ready(function() { }); - - // canned examples - - $("#tutorialExampleLink").click(function() { - $.get("example-code/py_tutorial.txt", setCodeMirrorVal); - return false; - }); - - $("#strtokExampleLink").click(function() { - $.get("example-code/strtok.txt", setCodeMirrorVal); - return false; - }); - - $("#fibonacciExampleLink").click(function() { - $.get("example-code/fib.txt", setCodeMirrorVal); - return false; - }); - - $("#memoFibExampleLink").click(function() { - $.get("example-code/memo_fib.txt", setCodeMirrorVal); - return false; - }); - - $("#factExampleLink").click(function() { - $.get("example-code/fact.txt", setCodeMirrorVal); - return false; - }); - - $("#filterExampleLink").click(function() { - $.get("example-code/filter.txt", setCodeMirrorVal); - return false; - }); - - $("#insSortExampleLink").click(function() { - $.get("example-code/ins_sort.txt", setCodeMirrorVal); - return false; - }); - - $("#aliasExampleLink").click(function() { - $.get("example-code/aliasing.txt", setCodeMirrorVal); - return false; - }); - - $("#newtonExampleLink").click(function() { - $.get("example-code/sqrt.txt", setCodeMirrorVal); - return false; - }); - - $("#oopSmallExampleLink").click(function() { - $.get("example-code/oop_small.txt", setCodeMirrorVal); - return false; - }); - - $("#mapExampleLink").click(function() { - $.get("example-code/map.txt", setCodeMirrorVal); - return false; - }); - - $("#oop1ExampleLink").click(function() { - $.get("example-code/oop_1.txt", setCodeMirrorVal); - return false; - }); - - $("#oop2ExampleLink").click(function() { - $.get("example-code/oop_2.txt", setCodeMirrorVal); - return false; - }); - - $("#inheritanceExampleLink").click(function() { - $.get("example-code/oop_inherit.txt", setCodeMirrorVal); - return false; - }); - - $("#sumExampleLink").click(function() { - $.get("example-code/sum.txt", setCodeMirrorVal); - return false; - }); - - $("#pwGcdLink").click(function() { - $.get("example-code/wentworth_gcd.txt", setCodeMirrorVal); - return false; - }); - - $("#pwSumListLink").click(function() { - $.get("example-code/wentworth_sumList.txt", setCodeMirrorVal); - return false; - }); - - $("#towersOfHanoiLink").click(function() { - $.get("example-code/towers_of_hanoi.txt", setCodeMirrorVal); - return false; - }); - - $("#pwTryFinallyLink").click(function() { - $.get("example-code/wentworth_try_finally.txt", setCodeMirrorVal); - return false; - }); - - $("#sumCubesLink").click(function() { - $.get("example-code/sum-cubes.txt", setCodeMirrorVal); - return false; - }); - - $("#decoratorsLink").click(function() { - $.get("example-code/decorators.txt", setCodeMirrorVal); - return false; - }); - - - - $('#closure1Link').click(function() { - $.get("example-code/closures/closure1.txt", setCodeMirrorVal); - return false; - }); - $('#closure2Link').click(function() { - $.get("example-code/closures/closure2.txt", setCodeMirrorVal); - return false; - }); - $('#closure3Link').click(function() { - $.get("example-code/closures/closure3.txt", setCodeMirrorVal); - return false; - }); - $('#closure4Link').click(function() { - $.get("example-code/closures/closure4.txt", setCodeMirrorVal); - return false; - }); - $('#closure5Link').click(function() { - $.get("example-code/closures/closure5.txt", setCodeMirrorVal); - return false; - }); - $('#lambdaParamLink').click(function() { - $.get("example-code/closures/lambda-param.txt", setCodeMirrorVal); - return false; - }); - - - $('#aliasing1Link').click(function() { - $.get("example-code/aliasing/aliasing1.txt", setCodeMirrorVal); - return false; - }); - $('#aliasing2Link').click(function() { - $.get("example-code/aliasing/aliasing2.txt", setCodeMirrorVal); - return false; - }); - $('#aliasing3Link').click(function() { - $.get("example-code/aliasing/aliasing3.txt", setCodeMirrorVal); - return false; - }); - $('#aliasing4Link').click(function() { - $.get("example-code/aliasing/aliasing4.txt", setCodeMirrorVal); - return false; - }); - $('#aliasing5Link').click(function() { - $.get("example-code/aliasing/aliasing5.txt", setCodeMirrorVal); - return false; - }); - $('#aliasing6Link').click(function() { - $.get("example-code/aliasing/aliasing6.txt", setCodeMirrorVal); - return false; - }); - $('#aliasing7Link').click(function() { - $.get("example-code/aliasing/aliasing7.txt", setCodeMirrorVal); - return false; - }); - $('#aliasing8Link').click(function() { - $.get("example-code/aliasing/aliasing8.txt", setCodeMirrorVal); - return false; - }); - - - $('#ll1Link').click(function() { - $.get("example-code/linked-lists/ll1.txt", setCodeMirrorVal); - return false; - }); - $('#ll2Link').click(function() { - $.get("example-code/linked-lists/ll2.txt", setCodeMirrorVal); - return false; - }); - - - if (preseededCode) { - setCodeMirrorVal(preseededCode); - - if ($.bbq.getState('mode') != 'edit') { - $("#executeBtn").trigger('click'); - } - } - else { - // select a canned example on start-up: - $("#aliasExampleLink").trigger('click'); - } - - // log a generic AJAX error handler $(document).ajaxError(function() { alert("Server error (possibly due to memory/resource overload)."); @@ -418,5 +196,8 @@ $(document).ready(function() { 2); $('#urlOutput').val(urlStr); }); + + + $.get("example-code/aliasing.txt", setCodeMirrorVal); }); diff --git a/v3/lesson.html b/v3/lesson.html index 34e798ec1..6b8837aad 100644 --- a/v3/lesson.html +++ b/v3/lesson.html @@ -58,10 +58,16 @@ -
+
+ +
Set Intersection and Union
+ +
Let's say you have several sets of people + that you want to union and intersect ...
-Write your Python code here: -
+
+ +
@@ -69,6 +75,7 @@

+
@@ -76,17 +83,6 @@ -
- -
- -

- -

- -
-
diff --git a/v3/lessons/aliasing.txt b/v3/lessons/aliasing.txt new file mode 100644 index 000000000..ba4f8b230 --- /dev/null +++ b/v3/lessons/aliasing.txt @@ -0,0 +1,10 @@ +x = [1, 2, 3, 4, 5] +y = x +z = [1, 2, 3, 4, 5] +x.append(6) +====== +{ + "1": "execution point one", + "2": "execution point two", + "4": "execution point four" +} From 79248d9e0f959273dd2eb8d979ae9721881e9808 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 2 Sep 2012 23:01:18 -0700 Subject: [PATCH 193/502] added 'updateOutputCallback' option --- v3/js/pytutor.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 8514871b0..c16bf741d 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -57,6 +57,9 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // codeDivHeight - maximum height of #pyCodeOutputDiv (in pixels) // editCodeBaseURL - the base URL to visit when the user clicks 'Edit code' // embeddedMode - make the widget narrower horizontally and disable breakpoints +// updateOutputCallback - function to call (with 'this' as parameter) +// whenever this.updateOutput() is called +// (BEFORE rendering the output display) function ExecutionVisualizer(domRootID, dat, params) { this.curInputCode = dat.code.rtrim(); // kill trailing spaces this.curTrace = dat.trace; @@ -729,6 +732,13 @@ ExecutionVisualizer.prototype.updateOutput = function() { assert(this.curTrace); + + // call the callback if necessary (BEFORE rendering) + if (this.params.updateOutputCallback) { + this.params.updateOutputCallback(this); + } + + var curEntry = this.curTrace[this.curInstr]; var hasError = false; From 5d885f9523b9305cb46cf9c573b9fc1e804909dd Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 2 Sep 2012 23:01:39 -0700 Subject: [PATCH 194/502] added more lessons stuff --- v3/css/opt-lessons.css | 18 ++++++++++--- v3/js/opt-lessons.js | 40 ++++++++++++++++++++++++----- v3/lesson.html | 18 ++++--------- v3/lessons/dive-into-python-311.txt | 28 ++++++++++++++++++++ 4 files changed, 81 insertions(+), 23 deletions(-) create mode 100644 v3/lessons/dive-into-python-311.txt diff --git a/v3/css/opt-lessons.css b/v3/css/opt-lessons.css index 684f36c58..16f86b6b8 100644 --- a/v3/css/opt-lessons.css +++ b/v3/css/opt-lessons.css @@ -23,7 +23,9 @@ h2 { body { background-color: white; + font-family: verdana, arial, helvetica, sans-serif; + font-size: 10pt; max-width: 900px; @@ -38,13 +40,22 @@ div#lessonHeader { div#lessonTitle { font-size: 16pt; - margin-bottom: 10pt; + margin-bottom: 15pt; } -div#lessonExposition { - font-size: 12pt; +div#lessonDescription { + font-size: 11pt; + line-height: 1.5em; } +div#lessonNarration { + font-size: 11pt; + min-height: 25px; + margin-bottom: 8px; + line-height: 1.5em; +} + + a, a:visited, a:hover { @@ -91,4 +102,3 @@ button.bigBtn { padding-top: 12px; margin-top: 5px; } - diff --git a/v3/js/opt-lessons.js b/v3/js/opt-lessons.js index 388003024..6b0491d09 100644 --- a/v3/js/opt-lessons.js +++ b/v3/js/opt-lessons.js @@ -33,12 +33,20 @@ var backend_script = 'exec'; // URL of backend script, which must eventually cal var myVisualizer = null; // singleton ExecutionVisualizer instance +var lessonScript = null; +var metadataJSON = null; + function parseLessonFile(dat) { var toks = dat.split('======'); - var lessonScript = toks[0].rtrim(); - var metadataJSON = $.parseJSON(toks[1]); - console.log(lessonScript); - console.log(metadataJSON); + + // globals + lessonScript = toks[0].rtrim(); + metadataJSON = $.parseJSON(toks[1]); + + $('#lessonTitle').html(metadataJSON.title); + $('#lessonDescription').html(metadataJSON.description); + + document.title = metadataJSON.title + ' - Online Python Tutor (v3)'; $.get(backend_script, {user_script : lessonScript}, @@ -60,7 +68,8 @@ function parseLessonFile(dat) { else { myVisualizer = new ExecutionVisualizer('pyOutputPane', dataFromBackend, - {embeddedMode: true}); + {embeddedMode: true, + updateOutputCallback: updateLessonNarration}); myVisualizer.updateOutput(); @@ -71,9 +80,28 @@ function parseLessonFile(dat) { "json"); } +function updateLessonNarration(myViz) { + var curInstr = myViz.curInstr; + + assert(metadataJSON); + + var annotation = metadataJSON[curInstr + 1]; // adjust for indexing diffs + if (annotation) { + $('#lessonNarration').html(annotation); + } + else { + $('#lessonNarration').html(''); + } + + // hack from John DeNero to ensure that once a div grows it height, it + // never shrinks again + $('#lessonNarration').css('min-height', $('#lessonNarration').css('height')); +} + $(document).ready(function() { - $.get("lessons/aliasing.txt", parseLessonFile); + //$.get("lessons/aliasing.txt", parseLessonFile); + $.get("lessons/dive-into-python-311.txt", parseLessonFile); // log a generic AJAX error handler $(document).ajaxError(function() { diff --git a/v3/lesson.html b/v3/lesson.html index c8330abc9..0c977ba1a 100644 --- a/v3/lesson.html +++ b/v3/lesson.html @@ -30,7 +30,7 @@ --> - Online Python Tutor (v3) + @@ -43,14 +43,6 @@ - - - - - - - - @@ -60,13 +52,13 @@
-
Set Intersection and Union
- -
Let's say you have several sets of people - that you want to union and intersect ...
+
+
+
+
diff --git a/v3/lessons/dive-into-python-311.txt b/v3/lessons/dive-into-python-311.txt new file mode 100644 index 000000000..14d7daf73 --- /dev/null +++ b/v3/lessons/dive-into-python-311.txt @@ -0,0 +1,28 @@ +li = ["a", "b", "mpilgrim", "z", "example"] +slice1 = li[1:3] +slice2 = li[1:-1] +slice3 = li[0:3] +li.append("new") +li.insert(2, "new") +li.extend(["two", "elements"]) +====== +{ + "title": "Basic List Operations", + + "description": "This lesson was derived from Section 3.2 of Dive Into Python.", + + "2": "First, you define a list of five elements. Note that they retain their original order. This is not an accident. A list is an ordered set of elements enclosed in square brackets.", + + "3": "You can get a subset of a list, called a \"slice\", by specifying two indices. The return value is a new list containing all the elements of the list, in order, starting with the first slice index (in this case li[1]), up to but not including the second slice index (in this case li[3]).", + + "4": "Slicing works if one or both of the slice indices is negative. If it helps, you can think of it this way: reading the list from left to right, the first slice index specifies the first element you want, and the second slice index specifies the first element you don't want. The return value is everything in between.", + + "5": "Lists are zero-based, so li[0:3] returns the first three elements of the list, starting at li[0], up to but not including li[3].", + + "6": "append adds a single element to the end of the list.", + + "7": "insert inserts a single element into a list. The numeric argument is the index of the first element that gets bumped out of position. Note that list elements do not need to be unique; there are now two separate elements with the value 'new', li[2] and li[6].", + + "8": "extend concatenates lists. Note that you do not call extend with multiple arguments; you call it with one argument, a list. In this case, that list has two elements." + +} From d2f5466b35b5a9a42445ced29aa09009b7a1230f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 2 Sep 2012 23:05:15 -0700 Subject: [PATCH 195/502] trying to get the kinks out of lessons --- v3/lessons/dive-into-python-311.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/v3/lessons/dive-into-python-311.txt b/v3/lessons/dive-into-python-311.txt index 14d7daf73..8a0198d03 100644 --- a/v3/lessons/dive-into-python-311.txt +++ b/v3/lessons/dive-into-python-311.txt @@ -11,18 +11,18 @@ li.extend(["two", "elements"]) "description": "This lesson was derived from Section 3.2 of Dive Into Python.", - "2": "First, you define a list of five elements. Note that they retain their original order. This is not an accident. A list is an ordered set of elements enclosed in square brackets.", + "1": "First, you define a list of five elements. Note that they retain their original order. This is not an accident. A list is an ordered set of elements enclosed in square brackets.", - "3": "You can get a subset of a list, called a \"slice\", by specifying two indices. The return value is a new list containing all the elements of the list, in order, starting with the first slice index (in this case li[1]), up to but not including the second slice index (in this case li[3]).", + "2": "You can get a subset of a list, called a \"slice\", by specifying two indices. The return value is a new list containing all the elements of the list, in order, starting with the first slice index (in this case li[1]), up to but not including the second slice index (in this case li[3]).", - "4": "Slicing works if one or both of the slice indices is negative. If it helps, you can think of it this way: reading the list from left to right, the first slice index specifies the first element you want, and the second slice index specifies the first element you don't want. The return value is everything in between.", + "3": "Slicing works if one or both of the slice indices is negative. If it helps, you can think of it this way: reading the list from left to right, the first slice index specifies the first element you want, and the second slice index specifies the first element you don't want. The return value is everything in between.", - "5": "Lists are zero-based, so li[0:3] returns the first three elements of the list, starting at li[0], up to but not including li[3].", + "4": "Lists are zero-based, so li[0:3] returns the first three elements of the list, starting at li[0], up to but not including li[3].", - "6": "append adds a single element to the end of the list.", + "5": "append adds a single element to the end of the list.", - "7": "insert inserts a single element into a list. The numeric argument is the index of the first element that gets bumped out of position. Note that list elements do not need to be unique; there are now two separate elements with the value 'new', li[2] and li[6].", + "6": "insert inserts a single element into a list. The numeric argument is the index of the first element that gets bumped out of position. Note that list elements do not need to be unique; there are now two separate elements with the value 'new', li[2] and li[6].", - "8": "extend concatenates lists. Note that you do not call extend with multiple arguments; you call it with one argument, a list. In this case, that list has two elements." + "7": "extend concatenates lists. Note that you do not call extend with multiple arguments; you call it with one argument, a list. In this case, that list has two elements." } From 0e32fe0fab89d4630337b4ab3d0dadafad2f1ceb Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 2 Sep 2012 23:28:09 -0700 Subject: [PATCH 196/502] minor --- v3/css/pytutor.css | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 8d5f2d55b..5ce57ce84 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -408,13 +408,15 @@ div.ExecutionVisualizer div#heap { } div.ExecutionVisualizer td.toplevelHeapObject { - /* to make room for transition animations */ + /* needed for d3 to do transitions */ padding-left: 8px; padding-right: 8px; padding-top: 4px; padding-bottom: 4px; + /* border: 2px dotted white; - border-color: white; /* needed for d3 to do transitions */ + border-color: white; + */ } div.ExecutionVisualizer table.heapRow { From 7e091e0ae99e8f5b613c620b71425ebb22e26a10 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 2 Sep 2012 23:32:30 -0700 Subject: [PATCH 197/502] lesson modified --- v3/css/opt-lessons.css | 21 --------------------- v3/lesson.html | 3 +-- v3/lessons/dive-into-python-311.txt | 18 ++++++++++++++---- 3 files changed, 15 insertions(+), 27 deletions(-) diff --git a/v3/css/opt-lessons.css b/v3/css/opt-lessons.css index 16f86b6b8..a1f71827c 100644 --- a/v3/css/opt-lessons.css +++ b/v3/css/opt-lessons.css @@ -1,26 +1,5 @@ /* CSS accompanying ../lesson.html */ -h1 { - font-weight: normal; - font-size: 20pt; - font-family: georgia, serif; - line-height: 1em; /* enforce single spacing so that Georgia works */ - - margin-top: 0px; - margin-bottom: 8px; -} - -h2 { - font-size: 12pt; - font-weight: normal; - font-family: georgia, serif; - line-height: 1.1em; /* enforce single spacing so that Georgia works */ - - margin-top: 2px; - margin-bottom: 20px; -} - - body { background-color: white; diff --git a/v3/lesson.html b/v3/lesson.html index 0c977ba1a..d26d7502a 100644 --- a/v3/lesson.html +++ b/v3/lesson.html @@ -55,10 +55,9 @@
+
-
-
diff --git a/v3/lessons/dive-into-python-311.txt b/v3/lessons/dive-into-python-311.txt index 8a0198d03..53a20d0a1 100644 --- a/v3/lessons/dive-into-python-311.txt +++ b/v3/lessons/dive-into-python-311.txt @@ -1,17 +1,21 @@ -li = ["a", "b", "mpilgrim", "z", "example"] +li = ['a', 'b', 'mp', 'z', 'e'] slice1 = li[1:3] slice2 = li[1:-1] slice3 = li[0:3] li.append("new") li.insert(2, "new") li.extend(["two", "elements"]) +li.remove("z") +li.remove("new") +li.remove("new") +li.remove("c") ====== { "title": "Basic List Operations", "description": "This lesson was derived from Section 3.2 of Dive Into Python.", - "1": "First, you define a list of five elements. Note that they retain their original order. This is not an accident. A list is an ordered set of elements enclosed in square brackets.", + "1": "First, you define a list of five elements. Note that after you execute this line, the elements retain their original order. This is not an accident. A list is an ordered set of elements enclosed in square brackets.", "2": "You can get a subset of a list, called a \"slice\", by specifying two indices. The return value is a new list containing all the elements of the list, in order, starting with the first slice index (in this case li[1]), up to but not including the second slice index (in this case li[3]).", @@ -21,8 +25,14 @@ li.extend(["two", "elements"]) "5": "append adds a single element to the end of the list.", - "6": "insert inserts a single element into a list. The numeric argument is the index of the first element that gets bumped out of position. Note that list elements do not need to be unique; there are now two separate elements with the value 'new', li[2] and li[6].", + "6": "insert inserts a single element into a list. The numeric argument is the index of the first element that gets bumped out of position. Note that list elements do not need to be unique; there will now be two separate elements with the value 'new', li[2] and li[6].", - "7": "extend concatenates lists. Note that you do not call extend with multiple arguments; you call it with one argument, a list. In this case, that list has two elements." + "7": "extend concatenates lists. Note that you do not call extend with multiple arguments; you call it with one argument, a list. In this case, that list has two elements.", + + "8": "remove removes the first occurrence of a value from a list.", + + "9": "remove removes only the first occurrence of a value. In this case, 'new' appears twice in the list, but li.remove(\"new\") will remove only the first occurrence.", + + "11": "If the value is not found in the list, Python raises an exception. This mirrors the behavior of the index method." } From 37205268d09004d50710c413b38ce5052ec77521 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 2 Sep 2012 23:41:54 -0700 Subject: [PATCH 198/502] bam --- v3/css/opt-lessons.css | 4 +++- v3/lesson.html | 5 ++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/v3/css/opt-lessons.css b/v3/css/opt-lessons.css index a1f71827c..02c07e950 100644 --- a/v3/css/opt-lessons.css +++ b/v3/css/opt-lessons.css @@ -15,6 +15,7 @@ body { div#lessonHeader { margin-bottom: 15pt; + width: 800px; } div#lessonTitle { @@ -30,8 +31,9 @@ div#lessonDescription { div#lessonNarration { font-size: 11pt; min-height: 25px; - margin-bottom: 8px; + margin-bottom: 12px; line-height: 1.5em; + width: 800px; } diff --git a/v3/lesson.html b/v3/lesson.html index d26d7502a..418977396 100644 --- a/v3/lesson.html +++ b/v3/lesson.html @@ -51,13 +51,12 @@
-
- -
+
+
From e8f2f671b50a241bd8c97feebeab33269d64bd70 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 00:34:32 -0700 Subject: [PATCH 199/502] woo --- v3/js/opt-lessons.js | 3 ++- v3/lessons/for-else.txt | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 v3/lessons/for-else.txt diff --git a/v3/js/opt-lessons.js b/v3/js/opt-lessons.js index 6b0491d09..893edc1da 100644 --- a/v3/js/opt-lessons.js +++ b/v3/js/opt-lessons.js @@ -101,7 +101,8 @@ function updateLessonNarration(myViz) { $(document).ready(function() { //$.get("lessons/aliasing.txt", parseLessonFile); - $.get("lessons/dive-into-python-311.txt", parseLessonFile); + //$.get("lessons/dive-into-python-311.txt", parseLessonFile); + $.get("lessons/for-else.txt", parseLessonFile); // log a generic AJAX error handler $(document).ajaxError(function() { diff --git a/v3/lessons/for-else.txt b/v3/lessons/for-else.txt new file mode 100644 index 000000000..08502b199 --- /dev/null +++ b/v3/lessons/for-else.txt @@ -0,0 +1,34 @@ +primes = [] +for n in range(2, 10): + x_range = range(2, n) + for x in x_range: + if n % x == 0: + break + else: + # loop fell through without finding a factor + primes.append(n) +====== +{ + "title": "For-Else Construct", + + "description": "Loop statements may have an else clause; it is executed when the loop terminates through exhaustion of the list (with for) or when the condition becomes false (with while), but not when the loop is terminated by a break statement. This is exemplified by the following loop, which searches for prime numbers. (Yes, this is the correct code. Look closely: the else clause belongs to the for loop, not the if statement.) [Source: Python.org tutorial]", + + "1": "First initialize a list to hold the prime numbers found between 2 and 9 (inclusive).", + + "4": "Note that this inner for loop has an associated else clause on line 7.", + + "5": "The first iteration of this for loop immediately exits and jumps to the else clause because range(2, 2) is empty.", + + "7": "Test whether n is divisible by x to determine primality ...", + + "11": "Since the loop exits again without running a break statement, the else clause is executed.", + + "16": "4 is divisible by 2, so it's not prime. The inner for loop will exit by running the break statement, so its associated else clause will not be executed.", + + "19": "The program now tests whether 5 is divisible by 2, 3, or 4.", + + "26": "Since 5 is prime, the inner for again exits normally, so its associated else clause will be executed.", + + "59": "When the program terminates, primes contains the list of primes found between 2 and 9 (inclusive)" + +} From c2cb35497e6fb9e6414cfd27ea600fa6659d458b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 09:07:13 -0700 Subject: [PATCH 200/502] changed tab size to 4 spaces to match popular coding conventions --- v3/js/opt-frontend.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index f755c8fed..22e44dc30 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -56,9 +56,9 @@ $(document).ready(function() { pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { mode: 'python', lineNumbers: true, - tabSize: 2, + tabSize: 4, // convert tab into two spaces: - extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} + extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} }); pyInputCodeMirror.setSize(null, '450px'); From d25756054915a2c1d2e859c510d82d43abdc6759 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 10:02:30 -0700 Subject: [PATCH 201/502] upgraded to latest CodeMirror and got 4-space tabs working --- v3/css/codemirror.css | 26 +- v3/css/opt-frontend.css | 3 + v3/css/pytutor.css | 4 - v3/js/codemirror/codemirror.js | 704 +++++++++++++++++---------------- v3/js/codemirror/python.js | 2 +- v3/js/opt-frontend.js | 3 +- 6 files changed, 376 insertions(+), 366 deletions(-) diff --git a/v3/css/codemirror.css b/v3/css/codemirror.css index b8dda7541..f81d8df09 100644 --- a/v3/css/codemirror.css +++ b/v3/css/codemirror.css @@ -9,8 +9,7 @@ } .CodeMirror-scroll { - overflow-x: auto; - overflow-y: hidden; + overflow: auto; height: 300px; /* This is needed to prevent an IE[67] bug where the scrolled content is visible outside of the scrolling box. */ @@ -20,13 +19,11 @@ /* Vertical scrollbar */ .CodeMirror-scrollbar { - float: right; + position: absolute; + right: 0; top: 0; overflow-x: hidden; overflow-y: scroll; - - /* This corrects for the 1px gap introduced to the left of the scrollbar - by the rule for .CodeMirror-scrollbar-inner. */ - margin-left: -1px; + z-index: 5; } .CodeMirror-scrollbar-inner { /* This needs to have a nonzero width in order for the scrollbar to appear @@ -69,10 +66,6 @@ white-space: pre; cursor: text; } -.CodeMirror-lines * { - /* Necessary for throw-scrolling to decelerate properly on Safari. */ - pointer-events: none; -} .CodeMirror pre { -moz-border-radius: 0; @@ -165,5 +158,16 @@ span.cm-em {font-style: italic;} span.cm-emstrong {font-style: italic; font-weight: bold;} span.cm-link {text-decoration: underline;} +span.cm-invalidchar {color: #f00;} + div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} + +@media print { + + /* Hide the cursor when printing */ + .CodeMirror pre.CodeMirror-cursor { + visibility: hidden; + } + +} diff --git a/v3/css/opt-frontend.css b/v3/css/opt-frontend.css index 698fe4280..465b24cc3 100644 --- a/v3/css/opt-frontend.css +++ b/v3/css/opt-frontend.css @@ -79,3 +79,6 @@ button.bigBtn { margin-right: auto; } + +/* necessary for CodeMirror error line highlighting to work! */ +.CodeMirror .errorLine { background: #F89D99 !important; } diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 5ce57ce84..91f0594cd 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -466,7 +466,3 @@ div.ExecutionVisualizer .ui-slider .ui-slider-handle { border: 1px solid #999; } - -/* necessary for CodeMirror line highlighting to work! */ -div.ExecutionVisualizer .CodeMirror .errorLine { background: #F89D99 !important; } - diff --git a/v3/js/codemirror/codemirror.js b/v3/js/codemirror/codemirror.js index 532dd8974..ff0aa64be 100644 --- a/v3/js/codemirror/codemirror.js +++ b/v3/js/codemirror/codemirror.js @@ -1,11 +1,12 @@ -// CodeMirror version 2.32 +// CodeMirror version 2.33 // // All functions that need access to the editor's state live inside // the CodeMirror function. Below that, at the bottom of the file, // some utilities are defined. // CodeMirror is the only global var we claim -var CodeMirror = (function() { +window.CodeMirror = (function() { + "use strict"; // This is the function that produces an editor instance. Its // closure is used to store the editor state. function CodeMirror(place, givenOptions) { @@ -15,38 +16,33 @@ var CodeMirror = (function() { if (defaults.hasOwnProperty(opt)) options[opt] = (givenOptions && givenOptions.hasOwnProperty(opt) ? givenOptions : defaults)[opt]; + var input = elt("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em"); + input.setAttribute("wrap", "off"); input.setAttribute("autocorrect", "off"); input.setAttribute("autocapitalize", "off"); + // Wraps and hides input textarea + var inputDiv = elt("div", [input], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); + // The empty scrollbar content, used solely for managing the scrollbar thumb. + var scrollbarInner = elt("div", null, "CodeMirror-scrollbar-inner"); + // The vertical scrollbar. Horizontal scrolling is handled by the scroller itself. + var scrollbar = elt("div", [scrollbarInner], "CodeMirror-scrollbar"); + // DIVs containing the selection and the actual code + var lineDiv = elt("div"), selectionDiv = elt("div", null, null, "position: relative; z-index: -1"); + // Blinky cursor, and element used to ensure cursor fits at the end of a line + var cursor = elt("pre", "\u00a0", "CodeMirror-cursor"), widthForcer = elt("pre", "\u00a0", "CodeMirror-cursor", "visibility: hidden"); + // Used to measure text size + var measure = elt("div", null, null, "position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden;"); + var lineSpace = elt("div", [measure, cursor, widthForcer, selectionDiv, lineDiv], null, "position: relative; z-index: 0"); + var gutterText = elt("div", null, "CodeMirror-gutter-text"), gutter = elt("div", [gutterText], "CodeMirror-gutter"); + // Moved around its parent to cover visible view + var mover = elt("div", [gutter, elt("div", [lineSpace], "CodeMirror-lines")], null, "position: relative"); + // Set to the height of the text, causes scrolling + var sizer = elt("div", [mover], null, "position: relative"); + // Provides scrolling + var scroller = elt("div", [sizer], "CodeMirror-scroll"); + scroller.setAttribute("tabIndex", "-1"); // The element in which the editor lives. - var wrapper = document.createElement("div"); - wrapper.className = "CodeMirror" + (options.lineWrapping ? " CodeMirror-wrap" : ""); - // This mess creates the base DOM structure for the editor. - wrapper.innerHTML = - '
' + // Wraps and hides input textarea - '
' + - '
' + // The vertical scrollbar. Horizontal scrolling is handled by the scroller itself. - '
' + // The empty scrollbar content, used solely for managing the scrollbar thumb. - '
' + // This must be before the scroll area because it's float-right. - '
' + - '
' + // Set to the height of the text, causes scrolling - '
' + // Moved around its parent to cover visible view - '
' + - // Provides positioning relative to (visible) text origin - '
' + - // Used to measure text size - '
' + - '
 
' + // Absolutely positioned blinky cursor - '' + // Used to force a width - '
' + // DIVs containing the selection and the actual code - '
'; + var wrapper = elt("div", [inputDiv, scrollbar, scroller], "CodeMirror" + (options.lineWrapping ? " CodeMirror-wrap" : "")); if (place.appendChild) place.appendChild(wrapper); else place(wrapper); - // I've never seen more elegant code in my life. - var inputDiv = wrapper.firstChild, input = inputDiv.firstChild, - scroller = wrapper.lastChild, code = scroller.firstChild, - mover = code.firstChild, gutter = mover.firstChild, gutterText = gutter.firstChild, - lineSpace = gutter.nextSibling.firstChild, measure = lineSpace.firstChild, - cursor = measure.nextSibling, widthForcer = cursor.nextSibling, - selectionDiv = widthForcer.nextSibling, lineDiv = selectionDiv.nextSibling, - scrollbar = inputDiv.nextSibling, scrollbarInner = scrollbar.firstChild; + themeChanged(); keyMapChanged(); // Needed to hide big blue blinking cursor on Mobile Safari if (ios) input.style.width = "0px"; @@ -58,20 +54,17 @@ var CodeMirror = (function() { // Needed to handle Tab key in KHTML if (khtml) inputDiv.style.height = "1px", inputDiv.style.position = "absolute"; - // Check for OS X >= 10.7. If so, we need to force a width on the scrollbar, and - // make it overlap the content. (But we only do this if the scrollbar doesn't already - // have a natural width. If the mouse is plugged in or the user sets the system pref - // to always show scrollbars, the scrollbar shouldn't overlap.) - if (mac_geLion) { - scrollbar.className += (overlapScrollbars() ? " cm-sb-overlap" : " cm-sb-nonoverlap"); - } else if (ie_lt8) { - // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). - scrollbar.className += " cm-sb-ie7"; - } + // Check for OS X >= 10.7. This has transparent scrollbars, so the + // overlaying of one scrollbar with another won't work. This is a + // temporary hack to simply turn off the overlay scrollbar. See + // issue #727. + if (mac_geLion) { scrollbar.style.zIndex = -2; scrollbar.style.visibility = "hidden"; } + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + else if (ie_lt8) scrollbar.style.minWidth = "18px"; // Check for problem with IE innerHTML not working when we have a // P (or similar) parent node. - try { stringWidth("x"); } + try { charWidth(); } catch (e) { if (e.message.match(/runtime/i)) e = new Error("A CodeMirror inside a P-style element does not work in Internet Explorer. (innerHTML bug)"); @@ -92,7 +85,7 @@ var CodeMirror = (function() { var sel = {from: {line: 0, ch: 0}, to: {line: 0, ch: 0}, inverted: false}; // Selection-related flags. shiftSelecting obviously tracks // whether the user is holding shift. - var shiftSelecting, lastClick, lastDoubleClick, lastScrollTop = 0, lastScrollLeft = 0, draggingText, + var shiftSelecting, lastClick, lastDoubleClick, lastScrollTop = 0, draggingText, overwrite = false, suppressEdits = false; // Variables used by startOperation/endOperation to track what // happened during the operation. @@ -105,8 +98,10 @@ var CodeMirror = (function() { var bracketHighlighted; // Tracks the maximum line length so that the horizontal scrollbar // can be kept static when scrolling. - var maxLine = "", updateMaxLine = false, maxLineChanged = true; + var maxLine = getLine(0), updateMaxLine = false, maxLineChanged = true; var tabCache = {}; + var pollingFast = false; // Ensures slowPoll doesn't cancel fastPoll + var goalColumn = null; // Initialize the content. operation(function(){setValue(options.value || ""); updateInput = false;})(); @@ -120,12 +115,13 @@ var CodeMirror = (function() { // which point we can't mess with it anymore. Context menu is // handled in onMouseDown for Gecko. if (!gecko) connect(scroller, "contextmenu", onContextMenu); - connect(scroller, "scroll", onScroll); - connect(scrollbar, "scroll", onScroll); + connect(scroller, "scroll", onScrollMain); + connect(scrollbar, "scroll", onScrollBar); connect(scrollbar, "mousedown", function() {if (focused) setTimeout(focusInput, 0);}); - connect(scroller, "mousewheel", onMouseWheel); - connect(scroller, "DOMMouseScroll", onMouseWheel); - connect(window, "resize", function() {updateDisplay(true);}); + var resizeHandler = connect(window, "resize", function() { + if (wrapper.parentNode) updateDisplay(true); + else resizeHandler(); + }, true); connect(input, "keyup", operation(onKeyUp)); connect(input, "input", fastPoll); connect(input, "keydown", operation(onKeyDown)); @@ -133,12 +129,12 @@ var CodeMirror = (function() { connect(input, "focus", onFocus); connect(input, "blur", onBlur); + function drag_(e) { + if (options.onDragEvent && options.onDragEvent(instance, addStop(e))) return; + e_stop(e); + } if (options.dragDrop) { connect(scroller, "dragstart", onDragStart); - function drag_(e) { - if (options.onDragEvent && options.onDragEvent(instance, addStop(e))) return; - e_stop(e); - } connect(scroller, "dragenter", drag_); connect(scroller, "dragover", drag_); connect(scroller, "drop", operation(onDrop)); @@ -150,7 +146,7 @@ var CodeMirror = (function() { })); // Needed to handle Tab key in KHTML - if (khtml) connect(code, "mouseup", function() { + if (khtml) connect(sizer, "mouseup", function() { if (document.activeElement == input) input.blur(); focusInput(); }); @@ -183,7 +179,8 @@ var CodeMirror = (function() { else if (option == "lineWrapping" && oldVal != value) operation(wrappingChanged)(); else if (option == "tabSize") updateDisplay(true); else if (option == "keyMap") keyMapChanged(); - if (option == "lineNumbers" || option == "gutter" || option == "firstLineNumber" || option == "theme") { + if (option == "lineNumbers" || option == "gutter" || option == "firstLineNumber" || + option == "theme" || option == "lineNumberFormatter") { gutterChanged(); updateDisplay(true); } @@ -213,7 +210,7 @@ var CodeMirror = (function() { matchBrackets: operation(function(){matchBrackets(true);}), getTokenAt: operation(function(pos) { pos = clipPos(pos); - return getLine(pos.line).getTokenAt(mode, getStateBefore(pos.line), pos.ch); + return getLine(pos.line).getTokenAt(mode, getStateBefore(pos.line), options.tabSize, pos.ch); }), getStateAfter: function(line) { line = clipLine(line == null ? doc.size - 1: line); @@ -250,15 +247,16 @@ var CodeMirror = (function() { return line; }, lineInfo: lineInfo, + getViewport: function() { return {from: showingFrom, to: showingTo};}, addWidget: function(pos, node, scroll, vert, horiz) { pos = localCoords(clipPos(pos)); var top = pos.yBot, left = pos.x; node.style.position = "absolute"; - code.appendChild(node); + sizer.appendChild(node); if (vert == "over") top = pos.y; else if (vert == "near") { var vspace = Math.max(scroller.offsetHeight, doc.height * textHeight()), - hspace = Math.max(code.clientWidth, lineSpace.clientWidth) - paddingLeft(); + hspace = Math.max(sizer.clientWidth, lineSpace.clientWidth) - paddingLeft(); if (pos.yBot + node.offsetHeight > vspace && pos.y > node.offsetHeight) top = pos.y - node.offsetHeight; if (left + node.offsetWidth > hspace) @@ -267,11 +265,11 @@ var CodeMirror = (function() { node.style.top = (top + paddingTop()) + "px"; node.style.left = node.style.right = ""; if (horiz == "right") { - left = code.clientWidth - node.offsetWidth; + left = sizer.clientWidth - node.offsetWidth; node.style.right = "0px"; } else { if (horiz == "left") left = 0; - else if (horiz == "middle") left = (code.clientWidth - node.offsetWidth) / 2; + else if (horiz == "middle") left = (sizer.clientWidth - node.offsetWidth) / 2; node.style.left = (left + paddingLeft()) + "px"; } if (scroll) @@ -339,7 +337,7 @@ var CodeMirror = (function() { }, scrollTo: function(x, y) { if (x != null) scroller.scrollLeft = x; - if (y != null) scrollbar.scrollTop = y; + if (y != null) scrollbar.scrollTop = scroller.scrollTop = y; updateDisplay([]); }, getScrollInfo: function() { @@ -353,6 +351,7 @@ var CodeMirror = (function() { } if (width != null) wrapper.style.width = interpret(width); if (height != null) scroller.style.height = interpret(height); + instance.refresh(); }, operation: function(f){return operation(f)();}, @@ -387,25 +386,30 @@ var CodeMirror = (function() { return text.join(lineSep || "\n"); } - function onScroll(e) { - if (scroller.scrollTop) { - scrollbar.scrollTop += scroller.scrollTop; - scroller.scrollTop = 0; + function onScrollBar(e) { + if (scrollbar.scrollTop != lastScrollTop) { + lastScrollTop = scroller.scrollTop = scrollbar.scrollTop; + updateDisplay([]); } - if (lastScrollTop != scrollbar.scrollTop || lastScrollLeft != scroller.scrollLeft) { - lastScrollTop = scrollbar.scrollTop; - lastScrollLeft = scroller.scrollLeft; + } + + function onScrollMain(e) { + if (options.fixedGutter && gutter.style.left != scroller.scrollLeft + "px") + gutter.style.left = scroller.scrollLeft + "px"; + if (scroller.scrollTop != lastScrollTop) { + lastScrollTop = scroller.scrollTop; + if (scrollbar.scrollTop != lastScrollTop) + scrollbar.scrollTop = lastScrollTop; updateDisplay([]); - if (options.fixedGutter) gutter.style.left = scroller.scrollLeft + "px"; - if (options.onScroll) options.onScroll(instance); } + if (options.onScroll) options.onScroll(instance); } function onMouseDown(e) { setShift(e_prop(e, "shiftKey")); // Check whether this is a click in a widget for (var n = e_target(e); n != wrapper; n = n.parentNode) - if (n.parentNode == code && n != mover) return; + if (n.parentNode == sizer && n != mover) return; // See if this is a click in the gutter for (var n = e_target(e); n != wrapper; n = n.parentNode) @@ -448,21 +452,21 @@ var CodeMirror = (function() { setSelectionUser(word.from, word.to); } else { lastClick = {time: now, pos: start}; } + function dragEnd(e2) { + if (webkit) scroller.draggable = false; + draggingText = false; + up(); drop(); + if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { + e_preventDefault(e2); + setCursor(start.line, start.ch, true); + focusInput(); + } + } var last = start, going; if (options.dragDrop && dragAndDrop && !options.readOnly && !posEq(sel.from, sel.to) && !posLess(start, sel.from) && !posLess(sel.to, start) && type == "single") { // Let the drag handler handle this. if (webkit) scroller.draggable = true; - function dragEnd(e2) { - if (webkit) scroller.draggable = false; - draggingText = false; - up(); drop(); - if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { - e_preventDefault(e2); - setCursor(start.line, start.ch, true); - focusInput(); - } - } var up = connect(document, "mouseup", operation(dragEnd), true); var drop = connect(scroller, "drop", operation(dragEnd), true); draggingText = true; @@ -525,11 +529,12 @@ var CodeMirror = (function() { } function onDrop(e) { if (options.onDragEvent && options.onDragEvent(instance, addStop(e))) return; - e.preventDefault(); + e_preventDefault(e); var pos = posFromMouse(e, true), files = e.dataTransfer.files; if (!pos || options.readOnly) return; if (files && files.length && window.FileReader && window.File) { - function loadFile(file, i) { + var n = files.length, text = Array(n), read = 0; + var loadFile = function(file, i) { var reader = new FileReader; reader.onload = function() { text[i] = reader.result; @@ -542,8 +547,7 @@ var CodeMirror = (function() { } }; reader.readAsText(file); - } - var n = files.length, text = Array(n), read = 0; + }; for (var i = 0; i < n; ++i) loadFile(files[i], i); } else { // Don't do a replace if the drop happened inside of the selected text. @@ -566,10 +570,10 @@ var CodeMirror = (function() { function onDragStart(e) { var txt = getSelection(); e.dataTransfer.setData("Text", txt); - + // Use dummy image instead of default browsers image. if (gecko || chrome || opera) { - var img = document.createElement('img'); + var img = elt('img'); img.scr = 'data:image/gif;base64,R0lGODdhAgACAIAAAAAAAP///ywAAAAAAgACAAACAoRRADs='; //1x1 image e.dataTransfer.setDragImage(img, 0, 0); } @@ -594,6 +598,7 @@ var CodeMirror = (function() { } return true; } + var maybeTransition; function handleKeyBinding(e) { // Handle auto keymap transitions var startMap = getKeyMap(options.keyMap), next = startMap.auto; @@ -640,7 +645,7 @@ var CodeMirror = (function() { return handled; } - var lastStoppedKey = null, maybeTransition; + var lastStoppedKey = null; function onKeyDown(e) { if (!focused) onFocus(); if (ie && e.keyCode == 27) { e.returnValue = false; } @@ -703,42 +708,6 @@ var CodeMirror = (function() { setTimeout(function() {if (!focused) shiftSelecting = null;}, 150); } - function chopDelta(delta) { - // Make sure we always scroll a little bit for any nonzero delta. - if (delta > 0.0 && delta < 1.0) return 1; - else if (delta > -1.0 && delta < 0.0) return -1; - else return Math.round(delta); - } - - function onMouseWheel(e) { - var deltaX = 0, deltaY = 0; - if (e.type == "DOMMouseScroll") { // Firefox - var delta = -e.detail * 8.0; - if (e.axis == e.HORIZONTAL_AXIS) deltaX = delta; - else if (e.axis == e.VERTICAL_AXIS) deltaY = delta; - } else if (e.wheelDeltaX !== undefined && e.wheelDeltaY !== undefined) { // WebKit - deltaX = e.wheelDeltaX / 3.0; - deltaY = e.wheelDeltaY / 3.0; - } else if (e.wheelDelta !== undefined) { // IE or Opera - deltaY = e.wheelDelta / 3.0; - } - - var scrolled = false; - deltaX = chopDelta(deltaX); - deltaY = chopDelta(deltaY); - if ((deltaX > 0 && scroller.scrollLeft > 0) || - (deltaX < 0 && scroller.scrollLeft + scroller.clientWidth < scroller.scrollWidth)) { - scroller.scrollLeft -= deltaX; - scrolled = true; - } - if ((deltaY > 0 && scrollbar.scrollTop > 0) || - (deltaY < 0 && scrollbar.scrollTop + scrollbar.clientHeight < scrollbar.scrollHeight)) { - scrollbar.scrollTop -= deltaY; - scrolled = true; - } - if (scrolled) e_stop(e); - } - // Replace the range from from to to by the strings in newText. // Afterwards, set the selection to selFrom, selTo. function updateLines(from, to, newText, selFrom, selTo) { @@ -771,7 +740,7 @@ var CodeMirror = (function() { function updateLinesNoUndo(from, to, newText, selFrom, selTo) { if (suppressEdits) return; - var recomputeMaxLength = false, maxLineLength = maxLine.length; + var recomputeMaxLength = false, maxLineLength = maxLine.text.length; if (!options.lineWrapping) doc.iter(from.line, to.line + 1, function(line) { if (!line.hidden && line.text.length == maxLineLength) {recomputeMaxLength = true; return true;} @@ -831,7 +800,7 @@ var CodeMirror = (function() { doc.iter(from.line, from.line + newText.length, function(line) { var l = line.text; if (!line.hidden && l.length > maxLineLength) { - maxLine = l; maxLineLength = l.length; maxLineChanged = true; + maxLine = line; maxLineLength = l.length; maxLineChanged = true; recomputeMaxLength = false; } }); @@ -867,46 +836,43 @@ var CodeMirror = (function() { function needsScrollbar() { var realHeight = doc.height * textHeight() + 2 * paddingTop(); - return realHeight - 1 > scroller.offsetHeight ? realHeight : false; + return realHeight * .99 > scroller.offsetHeight ? realHeight : false; } function updateVerticalScroll(scrollTop) { var scrollHeight = needsScrollbar(); scrollbar.style.display = scrollHeight ? "block" : "none"; if (scrollHeight) { - scrollbarInner.style.height = scrollHeight + "px"; - scrollbar.style.height = scroller.offsetHeight + "px"; - if (scrollTop != null) scrollbar.scrollTop = scrollTop; + scrollbarInner.style.height = sizer.style.minHeight = scrollHeight + "px"; + scrollbar.style.height = scroller.clientHeight + "px"; + if (scrollTop != null) { + scrollbar.scrollTop = scroller.scrollTop = scrollTop; + // 'Nudge' the scrollbar to work around a Webkit bug where, + // in some situations, we'd end up with a scrollbar that + // reported its scrollTop (and looked) as expected, but + // *behaved* as if it was still in a previous state (i.e. + // couldn't scroll up, even though it appeared to be at the + // bottom). + if (webkit) setTimeout(function() { + if (scrollbar.scrollTop != scrollTop) return; + scrollbar.scrollTop = scrollTop + (scrollTop ? -1 : 1); + scrollbar.scrollTop = scrollTop; + }, 0); + } + } else { + sizer.style.minHeight = ""; } // Position the mover div to align with the current virtual scroll position - mover.style.top = (displayOffset * textHeight() - scrollbar.scrollTop) + "px"; - } - - // On Mac OS X Lion and up, detect whether the mouse is plugged in by measuring - // the width of a div with a scrollbar in it. If the width is <= 1, then - // the mouse isn't plugged in and scrollbars should overlap the content. - function overlapScrollbars() { - var tmpSb = document.createElement('div'), - tmpSbInner = document.createElement('div'); - tmpSb.className = "CodeMirror-scrollbar"; - tmpSb.style.cssText = "position: absolute; left: -9999px; height: 100px;"; - tmpSbInner.className = "CodeMirror-scrollbar-inner"; - tmpSbInner.style.height = "200px"; - tmpSb.appendChild(tmpSbInner); - - document.body.appendChild(tmpSb); - var result = (tmpSb.offsetWidth <= 1); - document.body.removeChild(tmpSb); - return result; + mover.style.top = displayOffset * textHeight() + "px"; } function computeMaxLength() { - var maxLineLength = 0; - maxLine = ""; maxLineChanged = true; - doc.iter(0, doc.size, function(line) { + maxLine = getLine(0); maxLineChanged = true; + var maxLineLength = maxLine.text.length; + doc.iter(1, doc.size, function(line) { var l = line.text; if (!line.hidden && l.length > maxLineLength) { - maxLineLength = l.length; maxLine = l; + maxLineLength = l.length; maxLine = line; } }); updateMaxLine = false; @@ -957,7 +923,6 @@ var CodeMirror = (function() { return getRange(sel.from, sel.to, lineSep); } - var pollingFast = false; // Ensures slowPoll doesn't cancel fastPoll function slowPoll() { if (pollingFast) return; poll.set(options.pollInterval, function() { @@ -1006,7 +971,7 @@ var CodeMirror = (function() { if (!posEq(sel.from, sel.to)) { prevInput = ""; input.value = getSelection(); - selectInput(input); + if (focused) selectInput(input); } else if (user) prevInput = input.value = ""; } @@ -1014,16 +979,23 @@ var CodeMirror = (function() { if (options.readOnly != "nocursor") input.focus(); } - function scrollEditorIntoView() { - var rect = cursor.getBoundingClientRect(); - // IE returns bogus coordinates when the instance sits inside of an iframe and the cursor is hidden - if (ie && rect.top == rect.bottom) return; - var winH = window.innerHeight || Math.max(document.body.offsetHeight, document.documentElement.offsetHeight); - if (rect.top < 0 || rect.bottom > winH) scrollCursorIntoView(); - } function scrollCursorIntoView() { var coords = calculateCursorCoords(); - return scrollIntoView(coords.x, coords.y, coords.x, coords.yBot); + scrollIntoView(coords.x, coords.y, coords.x, coords.yBot); + if (!focused) return; + var box = sizer.getBoundingClientRect(), doScroll = null; + if (coords.y + box.top < 0) doScroll = true; + else if (coords.y + box.top + textHeight() > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; + if (doScroll != null) { + var hidden = cursor.style.display == "none"; + if (hidden) { + cursor.style.display = ""; + cursor.style.left = coords.x + "px"; + cursor.style.top = (coords.y - displayOffset) + "px"; + } + cursor.scrollIntoView(doScroll); + if (hidden) cursor.style.display = "none"; + } } function calculateCursorCoords() { var cursor = localCoords(sel.inverted ? sel.from : sel.to); @@ -1031,17 +1003,16 @@ var CodeMirror = (function() { return {x: x, y: cursor.y, yBot: cursor.yBot}; } function scrollIntoView(x1, y1, x2, y2) { - var scrollPos = calculateScrollPos(x1, y1, x2, y2), scrolled = false; - if (scrollPos.scrollLeft != null) {scroller.scrollLeft = scrollPos.scrollLeft; scrolled = true;} - if (scrollPos.scrollTop != null) {scrollbar.scrollTop = scrollPos.scrollTop; scrolled = true;} - if (scrolled && options.onScroll) options.onScroll(instance); + var scrollPos = calculateScrollPos(x1, y1, x2, y2); + if (scrollPos.scrollLeft != null) {scroller.scrollLeft = scrollPos.scrollLeft;} + if (scrollPos.scrollTop != null) {scrollbar.scrollTop = scroller.scrollTop = scrollPos.scrollTop;} } function calculateScrollPos(x1, y1, x2, y2) { var pl = paddingLeft(), pt = paddingTop(); y1 += pt; y2 += pt; x1 += pl; x2 += pl; var screen = scroller.clientHeight, screentop = scrollbar.scrollTop, result = {}; - var docBottom = scroller.scrollHeight; - var atTop = y1 < pt + 10, atBottom = y2 + pt > docBottom - 10;; + var docBottom = needsScrollbar() || Infinity; + var atTop = y1 < pt + 10, atBottom = y2 + pt > docBottom - 10; if (y1 < screentop) result.scrollTop = atTop ? 0 : Math.max(0, y1); else if (y2 > screentop + screen) result.scrollTop = (atBottom ? docBottom : y2) - screen; @@ -1113,6 +1084,10 @@ var CodeMirror = (function() { // This is just a bogus formula that detects when the editor is // resized or the font size changes. if (different) lastSizeC = scroller.clientHeight + th; + if (from != showingFrom || to != showingTo && options.onViewportChange) + setTimeout(function(){ + if (options.onViewportChange) options.onViewportChange(instance, from, to); + }); showingFrom = from; showingTo = to; displayOffset = heightAtLine(doc, from); @@ -1125,6 +1100,10 @@ var CodeMirror = (function() { function checkHeights() { var curNode = lineDiv.firstChild, heightChanged = false; doc.iter(showingFrom, showingTo, function(line) { + // Work around bizarro IE7 bug where, sometimes, our curNode + // is magically replaced with a new node in the DOM, leaving + // us with a reference to an orphan (nextSibling-less) node. + if (!curNode) return; if (!line.hidden) { var height = Math.round(curNode.offsetHeight / th) || 1; if (line.height != height) { @@ -1137,16 +1116,7 @@ var CodeMirror = (function() { return heightChanged; } - if (options.lineWrapping) { - checkHeights(); - var scrollHeight = needsScrollbar(); - var shouldHaveScrollbar = scrollHeight ? "block" : "none"; - if (scrollbar.style.display != shouldHaveScrollbar) { - scrollbar.style.display = shouldHaveScrollbar; - if (scrollHeight) scrollbarInner.style.height = scrollHeight + "px"; - checkHeights(); - } - } + if (options.lineWrapping) checkHeights(); gutter.style.display = gutterDisplay; if (different || gutterDirty) { @@ -1183,14 +1153,14 @@ var CodeMirror = (function() { } function patchDisplay(from, to, intact) { + function killNode(node) { + var tmp = node.nextSibling; + node.parentNode.removeChild(node); + return tmp; + } // The first pass removes the DOM nodes that aren't intact. - if (!intact.length) lineDiv.innerHTML = ""; + if (!intact.length) removeChildren(lineDiv); else { - function killNode(node) { - var tmp = node.nextSibling; - node.parentNode.removeChild(node); - return tmp; - } var domPos = 0, curNode = lineDiv.firstChild, n; for (var i = 0; i < intact.length; ++i) { var cur = intact[i]; @@ -1201,21 +1171,20 @@ var CodeMirror = (function() { } // This pass fills in the lines that actually changed. var nextIntact = intact.shift(), curNode = lineDiv.firstChild, j = from; - var scratch = document.createElement("div"); doc.iter(from, to, function(line) { if (nextIntact && nextIntact.to == j) nextIntact = intact.shift(); if (!nextIntact || nextIntact.from > j) { - if (line.hidden) var html = scratch.innerHTML = "
";
+          if (line.hidden) var lineElement = elt("pre");
           else {
-            var html = ''
-              + line.getHTML(makeTab) + '
'; + var lineElement = line.getElement(makeTab); + if (line.className) lineElement.className = line.className; // Kludge to make sure the styled element lies behind the selection (by z-index) - if (line.bgClassName) - html = '
 
' + html + "
"; + if (line.bgClassName) { + var pre = elt("pre", "\u00a0", line.bgClassName, "position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: -2"); + lineElement = elt("div", [pre, lineElement], null, "position: relative"); + } } - scratch.innerHTML = html; - lineDiv.insertBefore(scratch.firstChild, curNode); + lineDiv.insertBefore(lineElement, curNode); } else { curNode = curNode.nextSibling; } @@ -1227,10 +1196,10 @@ var CodeMirror = (function() { if (!options.gutter && !options.lineNumbers) return; var hText = mover.offsetHeight, hEditor = scroller.clientHeight; gutter.style.height = (hText - hEditor < 2 ? hEditor : hText) + "px"; - var html = [], i = showingFrom, normalNode; + var fragment = document.createDocumentFragment(), i = showingFrom, normalNode; doc.iter(showingFrom, Math.max(showingTo, showingFrom + 1), function(line) { if (line.hidden) { - html.push("
");
+          fragment.appendChild(elt("pre"));
         } else {
           var marker = line.gutterMarker;
           var text = options.lineNumbers ? options.lineNumberFormatter(i + options.firstLineNumber) : null;
@@ -1238,15 +1207,18 @@ var CodeMirror = (function() {
             text = marker.text.replace("%N%", text != null ? text : "");
           else if (text == null)
             text = "\u00a0";
-          html.push((marker && marker.style ? '
' : "
"), text);
-          for (var j = 1; j < line.height; ++j) html.push("
 "); - html.push("
"); + var markerElement = fragment.appendChild(elt("pre", null, marker && marker.style)); + markerElement.innerHTML = text; + for (var j = 1; j < line.height; ++j) { + markerElement.appendChild(elt("br")); + markerElement.appendChild(document.createTextNode("\u00a0")); + } if (!marker) normalNode = i; } ++i; }); gutter.style.display = "none"; - gutterText.innerHTML = html.join(""); + removeChildrenAndAdd(gutterText, fragment); // Make sure scrolling doesn't cause number gutter size to pop if (normalNode != null && options.lineNumbers) { var node = gutterText.childNodes[normalNode - showingFrom]; @@ -1274,15 +1246,15 @@ var CodeMirror = (function() { cursor.style.display = ""; selectionDiv.style.display = "none"; } else { - var sameLine = fromPos.y == toPos.y, html = ""; + var sameLine = fromPos.y == toPos.y, fragment = document.createDocumentFragment(); var clientWidth = lineSpace.clientWidth || lineSpace.offsetWidth; var clientHeight = lineSpace.clientHeight || lineSpace.offsetHeight; - function add(left, top, right, height) { + var add = function(left, top, right, height) { var rstyle = quirksMode ? "width: " + (!right ? clientWidth : clientWidth - right - left) + "px" : "right: " + right + "px"; - html += '
'; - } + fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + + "px; top: " + top + "px; " + rstyle + "; height: " + height + "px")); + }; if (sel.from.ch && fromPos.y >= 0) { var right = sameLine ? clientWidth - toPos.x : 0; add(fromPos.x, fromPos.y, right, th); @@ -1293,7 +1265,7 @@ var CodeMirror = (function() { add(0, middleStart, 0, middleHeight); if ((!sameLine || !sel.from.ch) && toPos.y < clientHeight - .5 * th) add(0, toPos.y, clientWidth - toPos.x, th); - selectionDiv.innerHTML = html; + removeChildrenAndAdd(selectionDiv, fragment); cursor.style.display = "none"; selectionDiv.style.display = ""; } @@ -1425,13 +1397,16 @@ var CodeMirror = (function() { else replaceRange("", sel.from, findPosH(dir, unit)); userSelChange = true; } - var goalColumn = null; function moveV(dir, unit) { var dist = 0, pos = localCoords(sel.inverted ? sel.from : sel.to, true); if (goalColumn != null) pos.x = goalColumn; - if (unit == "page") dist = Math.min(scroller.clientHeight, window.innerHeight || document.documentElement.clientHeight); - else if (unit == "line") dist = textHeight(); - var target = coordsChar(pos.x, pos.y + dist * dir + 2); + if (unit == "page") { + var screen = Math.min(scroller.clientHeight, window.innerHeight || document.documentElement.clientHeight); + var target = coordsChar(pos.x, pos.y + screen * dir); + } else if (unit == "line") { + var th = textHeight(); + var target = coordsChar(pos.x, pos.y + .5 * th + dir * th); + } if (unit == "page") scrollbar.scrollTop += localCoords(target, true).y - pos.y; setCursor(target.line, target.ch, true); goalColumn = pos.x; @@ -1440,10 +1415,15 @@ var CodeMirror = (function() { function findWordAt(pos) { var line = getLine(pos.line).text; var start = pos.ch, end = pos.ch; - var check = isWordChar(line.charAt(start < line.length ? start : start - 1)) ? - isWordChar : function(ch) {return !isWordChar(ch);}; - while (start > 0 && check(line.charAt(start - 1))) --start; - while (end < line.length && check(line.charAt(end))) ++end; + if (line) { + if (pos.after === false || end == line.length) --start; else ++end; + var startChar = line.charAt(start); + var check = isWordChar(startChar) ? isWordChar : + /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} : + function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; + while (start > 0 && check(line.charAt(start - 1))) --start; + while (end < line.length && check(line.charAt(end))) ++end; + } return {from: {line: pos.line, ch: start}, to: {line: pos.line, ch: end}}; } function selectLine(line) { @@ -1482,7 +1462,8 @@ var CodeMirror = (function() { for (var i = Math.floor(indentation / options.tabSize); i; --i) {pos += options.tabSize; indentString += "\t";} while (pos < indentation) {++pos; indentString += " ";} - replaceRange(indentString, {line: n, ch: 0}, {line: n, ch: curSpaceString.length}); + if (indentString != curSpaceString) + replaceRange(indentString, {line: n, ch: 0}, {line: n, ch: curSpaceString.length}); } function loadMode() { @@ -1506,14 +1487,12 @@ var CodeMirror = (function() { var guess = Math.ceil(line.text.length / perLine) || 1; if (guess != 1) updateLineHeight(line, guess); }); - lineSpace.style.width = code.style.width = ""; - widthForcer.style.left = ""; + lineSpace.style.minWidth = widthForcer.style.left = ""; } else { wrapper.className = wrapper.className.replace(" CodeMirror-wrap", ""); - maxLine = ""; maxLineChanged = true; + computeMaxLength(); doc.iter(0, doc.size, function(line) { if (line.height != 1 && !line.hidden) updateLineHeight(line, 1); - if (line.text.length > maxLine.length) maxLine = line.text; }); } changes.push({from: 0, to: doc.size}); @@ -1521,8 +1500,9 @@ var CodeMirror = (function() { function makeTab(col) { var w = options.tabSize - col % options.tabSize, cached = tabCache[w]; if (cached) return cached; - for (var str = '', i = 0; i < w; ++i) str += " "; - return (tabCache[w] = {html: str + "", width: w}); + for (var str = "", i = 0; i < w; ++i) str += " "; + var span = elt("span", str, "cm-tab"); + return (tabCache[w] = {element: span, width: w}); } function themeChanged() { scroller.className = scroller.className.replace(/\s*cm-s-\S+/g, "") + @@ -1641,11 +1621,10 @@ var CodeMirror = (function() { if (line.hidden != hidden) { line.hidden = hidden; if (!options.lineWrapping) { - var l = line.text; - if (hidden && l.length == maxLine.length) { + if (hidden && line.text.length == maxLine.text.length) { updateMaxLine = true; - } else if (!hidden && l.length > maxLine.length) { - maxLine = l; updateMaxLine = false; + } else if (!hidden && line.text.length > maxLine.text.length) { + maxLine = line; updateMaxLine = false; } } updateLineHeight(line, hidden ? 0 : 1); @@ -1677,11 +1656,6 @@ var CodeMirror = (function() { markerClass: marker && marker.style, lineClass: line.className, bgClass: line.bgClassName}; } - function stringWidth(str) { - measure.innerHTML = "
x
"; - measure.firstChild.firstChild.firstChild.nodeValue = str; - return measure.firstChild.firstChild.offsetWidth || 10; - } // These are used to go from pixel positions to character // positions, taking varying character widths into account. function charFromX(line, x) { @@ -1711,19 +1685,18 @@ var CodeMirror = (function() { } } - var tempId = "CodeMirror-temp-" + Math.floor(Math.random() * 0xffffff).toString(16); function measureLine(line, ch) { if (ch == 0) return {top: 0, left: 0}; var wbr = options.lineWrapping && ch < line.text.length && spanAffectsWrapping.test(line.text.slice(ch - 1, ch + 1)); - measure.innerHTML = "
" + line.getHTML(makeTab, ch, tempId, wbr) + "
"; - var elt = document.getElementById(tempId); - var top = elt.offsetTop, left = elt.offsetLeft; + var pre = line.getElement(makeTab, ch, wbr); + removeChildrenAndAdd(measure, pre); + var anchor = pre.anchor; + var top = anchor.offsetTop, left = anchor.offsetLeft; // Older IEs report zero offsets for spans directly after a wrap if (ie && top == 0 && left == 0) { - var backup = document.createElement("span"); - backup.innerHTML = "x"; - elt.parentNode.insertBefore(backup, elt.nextSibling); + var backup = elt("span", "x"); + anchor.parentNode.insertBefore(backup, anchor.nextSibling); top = backup.offsetTop; } return {top: top, left: left}; @@ -1740,17 +1713,19 @@ var CodeMirror = (function() { } // Coords must be lineSpace-local function coordsChar(x, y) { - if (y < 0) y = 0; var th = textHeight(), cw = charWidth(), heightPos = displayOffset + Math.floor(y / th); + if (heightPos < 0) return {line: 0, ch: 0}; var lineNo = lineAtHeight(doc, heightPos); if (lineNo >= doc.size) return {line: doc.size - 1, ch: getLine(doc.size - 1).text.length}; var lineObj = getLine(lineNo), text = lineObj.text; var tw = options.lineWrapping, innerOff = tw ? heightPos - heightAtLine(doc, lineNo) : 0; if (x <= 0 && innerOff == 0) return {line: lineNo, ch: 0}; + var wrongLine = false; function getX(len) { var sp = measureLine(lineObj, len); if (tw) { var off = Math.round(sp.top / th); + wrongLine = off != innerOff; return Math.max(0, sp.left + (off - innerOff) * scroller.clientWidth); } return sp.left; @@ -1769,9 +1744,12 @@ var CodeMirror = (function() { if (estX < x) {from = estimated; fromX = estX;} // Do a binary search between these bounds. for (;;) { - if (to - from <= 1) return {line: lineNo, ch: (toX - x > x - fromX) ? from : to}; + if (to - from <= 1) { + var after = x - fromX < toX - x; + return {line: lineNo, ch: after ? from : to, after: after}; + } var middle = Math.ceil((from + to) / 2), middleX = getX(middle); - if (middleX > x) {to = middle; toX = middleX;} + if (middleX > x) {to = middle; toX = middleX; if (wrongLine) toX += 1000; } else {from = middle; fromX = middleX;} } } @@ -1780,26 +1758,32 @@ var CodeMirror = (function() { return {x: off.left + local.x, y: off.top + local.y, yBot: off.top + local.yBot}; } - var cachedHeight, cachedHeightFor, measureText; + var cachedHeight, cachedHeightFor, measurePre; function textHeight() { - if (measureText == null) { - measureText = "
";
-        for (var i = 0; i < 49; ++i) measureText += "x
"; - measureText += "x
"; + if (measurePre == null) { + measurePre = elt("pre"); + for (var i = 0; i < 49; ++i) { + measurePre.appendChild(document.createTextNode("x")); + measurePre.appendChild(elt("br")); + } + measurePre.appendChild(document.createTextNode("x")); } var offsetHeight = lineDiv.clientHeight; if (offsetHeight == cachedHeightFor) return cachedHeight; cachedHeightFor = offsetHeight; - measure.innerHTML = measureText; + removeChildrenAndAdd(measure, measurePre.cloneNode(true)); cachedHeight = measure.firstChild.offsetHeight / 50 || 1; - measure.innerHTML = ""; + removeChildren(measure); return cachedHeight; } var cachedWidth, cachedWidthFor = 0; function charWidth() { if (scroller.clientWidth == cachedWidthFor) return cachedWidth; cachedWidthFor = scroller.clientWidth; - return (cachedWidth = stringWidth("x")); + var anchor = elt("span", "x"); + var pre = elt("pre", [anchor]); + removeChildrenAndAdd(measure, pre); + return (cachedWidth = anchor.offsetWidth || 10); } function paddingTop() {return lineSpace.offsetTop;} function paddingLeft() {return lineSpace.offsetLeft;} @@ -1860,7 +1844,7 @@ var CodeMirror = (function() { cursor.style.visibility = ""; blinker = setInterval(function() { cursor.style.visibility = (on = !on) ? "" : "hidden"; - }, 650); + }, options.cursorBlinkRate); } var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"}; @@ -2000,9 +1984,11 @@ var CodeMirror = (function() { function endOperation() { if (updateMaxLine) computeMaxLength(); if (maxLineChanged && !options.lineWrapping) { - var cursorWidth = widthForcer.offsetWidth, left = stringWidth(maxLine); - widthForcer.style.left = left + "px"; - lineSpace.style.minWidth = (left + cursorWidth) + "px"; + var cursorWidth = widthForcer.offsetWidth, left = measureLine(maxLine, maxLine.text.length).left; + if (!ie_lt8) { + widthForcer.style.left = left + "px"; + lineSpace.style.minWidth = (left + cursorWidth) + "px"; + } maxLineChanged = false; } var newScrollPos, updated; @@ -2010,13 +1996,14 @@ var CodeMirror = (function() { var coords = calculateCursorCoords(); newScrollPos = calculateScrollPos(coords.x, coords.y, coords.x, coords.yBot); } - if (changes.length) updated = updateDisplay(changes, true, (newScrollPos ? newScrollPos.scrollTop : null)); - else { + if (changes.length || newScrollPos && newScrollPos.scrollTop != null) + updated = updateDisplay(changes, true, newScrollPos && newScrollPos.scrollTop); + if (!updated) { if (selectionChanged) updateSelection(); if (gutterDirty) updateGutter(); } if (newScrollPos) scrollCursorIntoView(); - if (selectionChanged) {scrollEditorIntoView(); restartBlink();} + if (selectionChanged) restartBlink(); if (focused && !leaveInputAlone && (updateInput === true || (updateInput !== false && selectionChanged))) @@ -2081,11 +2068,13 @@ var CodeMirror = (function() { dragDrop: true, onChange: null, onCursorActivity: null, + onViewportChange: null, onGutterClick: null, onHighlightComplete: null, onUpdate: null, onFocus: null, onBlur: null, onScroll: null, matchBrackets: false, + cursorBlinkRate: 530, workTime: 100, workDelay: 200, pollInterval: 100, @@ -2241,6 +2230,10 @@ var CodeMirror = (function() { function lookup(map) { map = getKeyMap(map); var found = map[name]; + if (found === false) { + if (stop) stop(); + return true; + } if (found != null && handle(found)) return true; if (map.nofallthrough) { if (stop) stop(); @@ -2268,8 +2261,15 @@ var CodeMirror = (function() { options.value = textarea.value; if (!options.tabindex && textarea.tabindex) options.tabindex = textarea.tabindex; - if (options.autofocus == null && textarea.getAttribute("autofocus") != null) - options.autofocus = true; + // Set autofocus to true if this textarea is focused, or if it has + // autofocus and no other element is focused. + if (options.autofocus == null) { + var hasFocus = document.body; + // doc.activeElement occasionally throws on IE + try { hasFocus = document.activeElement; } catch(e) {} + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body; + } function save() {textarea.value = instance.getValue();} if (textarea.form) { @@ -2277,13 +2277,12 @@ var CodeMirror = (function() { var rmSubmit = connect(textarea.form, "submit", save, true); if (typeof textarea.form.submit == "function") { var realSubmit = textarea.form.submit; - function wrappedSubmit() { + textarea.form.submit = function wrappedSubmit() { save(); textarea.form.submit = realSubmit; textarea.form.submit(); textarea.form.submit = wrappedSubmit; - } - textarea.form.submit = wrappedSubmit; + }; } } @@ -2306,6 +2305,18 @@ var CodeMirror = (function() { return instance; }; + var gecko = /gecko\/\d{7}/i.test(navigator.userAgent); + var ie = /MSIE \d/.test(navigator.userAgent); + var ie_lt8 = /MSIE [1-7]\b/.test(navigator.userAgent); + var ie_lt9 = /MSIE [1-8]\b/.test(navigator.userAgent); + var quirksMode = ie && document.documentMode == 5; + var webkit = /WebKit\//.test(navigator.userAgent); + var chrome = /Chrome\//.test(navigator.userAgent); + var opera = /Opera\//.test(navigator.userAgent); + var safari = /Apple Computer/.test(navigator.vendor); + var khtml = /KHTML\//.test(navigator.userAgent); + var mac_geLion = /Mac OS X 10\D([7-9]|\d\d)\D/.test(navigator.userAgent); + // Utility functions for working with state. Exported because modes // sometimes need to do this. function copyState(mode, state) { @@ -2334,7 +2345,7 @@ var CodeMirror = (function() { StringStream.prototype = { eol: function() {return this.pos >= this.string.length;}, sol: function() {return this.pos == 0;}, - peek: function() {return this.string.charAt(this.pos);}, + peek: function() {return this.string.charAt(this.pos) || undefined;}, next: function() { if (this.pos < this.string.length) return this.string.charAt(this.pos++); @@ -2365,7 +2376,7 @@ var CodeMirror = (function() { indentation: function() {return countColumn(this.string, null, this.tabSize);}, match: function(pattern, consume, caseInsensitive) { if (typeof pattern == "string") { - function cased(str) {return caseInsensitive ? str.toLowerCase() : str;} + var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; if (cased(this.string).indexOf(cased(pattern), this.pos) == this.pos) { if (consume !== false) this.pos += pattern.length; return true; @@ -2444,14 +2455,22 @@ var CodeMirror = (function() { } }; + // When measuring the position of the end of a line, different + // browsers require different approaches. If an empty span is added, + // many browsers report bogus offsets. Of those, some (Webkit, + // recent IE) will accept a space without moving the whole span to + // the next line when wrapping it, others work with a zero-width + // space. + var eolSpanContent = " "; + if (gecko || (ie && !ie_lt8)) eolSpanContent = "\u200b"; + else if (opera) eolSpanContent = ""; + // Line objects. These hold state related to a line, including // highlighting info (the styles array). function Line(text, styles) { this.styles = styles || [text, null]; this.text = text; this.height = 1; - this.marked = this.gutterMarker = this.className = this.bgClassName = this.handlers = null; - this.stateAfter = this.parent = this.hidden = null; } Line.inheritMarks = function(text, orig) { var ln = new Line(text), mk = orig && orig.marked; @@ -2464,7 +2483,7 @@ var CodeMirror = (function() { } } return ln; - } + }; Line.prototype = { // Replace a piece of a line, keeping the styles around it intact. replace: function(from, to_, text) { @@ -2542,7 +2561,7 @@ var CodeMirror = (function() { if (close && omk) { for (var j = 0; j < omk.length; ++j) { var om = omk[j]; - if (!om.sameSet(mark) || om.from != null) continue + if (!om.sameSet(mark) || om.from != null) continue; if (mark.from == this.text.length && om.to == 0) { omk.splice(j, 1); mk.splice(i--, 1); @@ -2600,8 +2619,8 @@ var CodeMirror = (function() { }, // Fetch the parser token for a given character. Useful for hacks // that want to inspect the mode state (say, for completion). - getTokenAt: function(mode, state, ch) { - var txt = this.text, stream = new StringStream(txt); + getTokenAt: function(mode, state, tabSize, ch) { + var txt = this.text, stream = new StringStream(txt, tabSize); while (stream.pos < ch && !stream.eol()) { stream.start = stream.pos; var style = mode.token(stream, state); @@ -2615,68 +2634,72 @@ var CodeMirror = (function() { indentation: function(tabSize) {return countColumn(this.text, null, tabSize);}, // Produces an HTML fragment for the line, taking selection, // marking, and highlighting into account. - getHTML: function(makeTab, wrapAt, wrapId, wrapWBR) { - var html = [], first = true, col = 0; - function span_(text, style) { + getElement: function(makeTab, wrapAt, wrapWBR) { + var first = true, col = 0, specials = /[\t\u0000-\u0019\u200b\u2028\u2029\uFEFF]/g; + var pre = elt("pre"); + function span_(html, text, style) { if (!text) return; // Work around a bug where, in some compat modes, IE ignores leading spaces if (first && ie && text.charAt(0) == " ") text = "\u00a0" + text.slice(1); first = false; - if (text.indexOf("\t") == -1) { + if (!specials.test(text)) { col += text.length; - var escaped = htmlEscape(text); + var content = document.createTextNode(text); } else { - var escaped = ""; - for (var pos = 0;;) { - var idx = text.indexOf("\t", pos); - if (idx == -1) { - escaped += htmlEscape(text.slice(pos)); - col += text.length - pos; - break; - } else { - col += idx - pos; + var content = document.createDocumentFragment(), pos = 0; + while (true) { + specials.lastIndex = pos; + var m = specials.exec(text); + var skipped = m ? m.index - pos : text.length - pos; + if (skipped) { + content.appendChild(document.createTextNode(text.slice(pos, pos + skipped))); + col += skipped; + } + if (!m) break; + pos += skipped + 1; + if (m[0] == "\t") { var tab = makeTab(col); - escaped += htmlEscape(text.slice(pos, idx)) + tab.html; + content.appendChild(tab.element.cloneNode(true)); col += tab.width; - pos = idx + 1; + } else { + var token = elt("span", "\u2022", "cm-invalidchar"); + token.title = "\\u" + m[0].charCodeAt(0).toString(16); + content.appendChild(token); + col += 1; } } } - if (style) html.push('', escaped, ""); - else html.push(escaped); + if (style) html.appendChild(elt("span", [content], style)); + else html.appendChild(content); } var span = span_; if (wrapAt != null) { - var outPos = 0, open = ""; - span = function(text, style) { + var outPos = 0, anchor = pre.anchor = elt("span"); + span = function(html, text, style) { var l = text.length; if (wrapAt >= outPos && wrapAt < outPos + l) { if (wrapAt > outPos) { - span_(text.slice(0, wrapAt - outPos), style); + span_(html, text.slice(0, wrapAt - outPos), style); // See comment at the definition of spanAffectsWrapping - if (wrapWBR) html.push(""); + if (wrapWBR) html.appendChild(elt("wbr")); } - html.push(open); + html.appendChild(anchor); var cut = wrapAt - outPos; - span_(opera ? text.slice(cut, cut + 1) : text.slice(cut), style); - html.push(""); - if (opera) span_(text.slice(cut + 1), style); + span_(anchor, opera ? text.slice(cut, cut + 1) : text.slice(cut), style); + if (opera) span_(html, text.slice(cut + 1), style); wrapAt--; outPos += l; } else { outPos += l; - span_(text, style); - // Output empty wrapper when at end of line - // (Gecko and IE8+ do strange wrapping when adding a space - // to the end of the line. Other browsers don't react well - // to zero-width spaces. So we do hideous browser sniffing - // to determine which to use.) - if (outPos == wrapAt && outPos == len) - html.push(open + (gecko || (ie && !ie_lt8) ? "​" : " ") + ""); + span_(html, text, style); + if (outPos == wrapAt && outPos == len) { + setTextContent(anchor, eolSpanContent); + html.appendChild(anchor); + } // Stop outputting HTML when gone sufficiently far beyond measure else if (outPos > wrapAt + 10 && /\s/.test(text)) span = function(){}; } - } + }; } var st = this.styles, allText = this.text, marked = this.marked; @@ -2685,20 +2708,19 @@ var CodeMirror = (function() { if (!style) return null; return "cm-" + style.replace(/ +/g, " cm-"); } - if (!allText && wrapAt == null) { - span(" "); + span(pre, " "); } else if (!marked || !marked.length) { for (var i = 0, ch = 0; ch < len; i+=2) { var str = st[i], style = st[i+1], l = str.length; if (ch + l > len) str = str.slice(0, len - ch); ch += l; - span(str, styleToClass(style)); + span(pre, str, styleToClass(style)); } } else { var pos = 0, i = 0, text = "", style, sg = 0; var nextChange = marked[0].from || 0, marks = [], markpos = 0; - function advanceMarks() { + var advanceMarks = function() { var m; while (markpos < marked.length && ((m = marked[markpos]).from == pos || m.from == null)) { @@ -2712,7 +2734,7 @@ var CodeMirror = (function() { if (to == pos) marks.splice(i--, 1); else nextChange = Math.min(to, nextChange); } - } + }; var m = 0; while (pos < len) { if (nextChange == pos) advanceMarks(); @@ -2723,7 +2745,7 @@ var CodeMirror = (function() { var appliedStyle = style; for (var j = 0; j < marks.length; ++j) appliedStyle = (appliedStyle ? appliedStyle + " " : "") + marks[j].style; - span(end > upto ? text.slice(0, upto - pos) : text, appliedStyle); + span(pre, end > upto ? text.slice(0, upto - pos) : text, appliedStyle); if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} pos = end; } @@ -2731,7 +2753,7 @@ var CodeMirror = (function() { } } } - return html.join(""); + return pre; }, cleanUp: function() { this.parent = null; @@ -3038,30 +3060,18 @@ var CodeMirror = (function() { var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; - var gecko = /gecko\/\d{7}/i.test(navigator.userAgent); - var ie = /MSIE \d/.test(navigator.userAgent); - var ie_lt8 = /MSIE [1-7]\b/.test(navigator.userAgent); - var ie_lt9 = /MSIE [1-8]\b/.test(navigator.userAgent); - var quirksMode = ie && document.documentMode == 5; - var webkit = /WebKit\//.test(navigator.userAgent); - var chrome = /Chrome\//.test(navigator.userAgent); - var opera = /Opera\//.test(navigator.userAgent); - var safari = /Apple Computer/.test(navigator.vendor); - var khtml = /KHTML\//.test(navigator.userAgent); - var mac_geLion = /Mac OS X 10\D([7-9]|\d\d)\D/.test(navigator.userAgent); - // Detect drag-and-drop var dragAndDrop = function() { // There is *some* kind of drag-and-drop support in IE6-8, but I // couldn't get it to work yet. if (ie_lt9) return false; - var div = document.createElement('div'); + var div = elt('div'); return "draggable" in div || "dragDrop" in div; }(); // Feature-detect whether newlines in textareas are converted to \r\n var lineSep = function () { - var te = document.createElement("textarea"); + var te = elt("textarea"); te.value = "foo\nbar"; if (te.value.indexOf("\r") > -1) return "\r\n"; return "\n"; @@ -3093,11 +3103,6 @@ var CodeMirror = (function() { return n; } - function computedStyle(elt) { - if (elt.currentStyle) return elt.currentStyle; - return window.getComputedStyle(elt, null); - } - function eltOffset(node, screen) { // Take the parts of bounding client rect that we are interested in so we are able to edit if need be, // since the returned value cannot be changed externally (they are kept in sync as the element moves within the page) @@ -3132,27 +3137,28 @@ var CodeMirror = (function() { function posLess(a, b) {return a.line < b.line || (a.line == b.line && a.ch < b.ch);} function copyPos(x) {return {line: x.line, ch: x.ch};} - var escapeElement = document.createElement("pre"); - function htmlEscape(str) { - escapeElement.textContent = str; - return escapeElement.innerHTML; + function elt(tag, content, className, style) { + var e = document.createElement(tag); + if (className) e.className = className; + if (style) e.style.cssText = style; + if (typeof content == "string") setTextContent(e, content); + else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); + return e; } - // Recent (late 2011) Opera betas insert bogus newlines at the start - // of the textContent, so we strip those. - if (htmlEscape("a") == "\na") { - htmlEscape = function(str) { - escapeElement.textContent = str; - return escapeElement.innerHTML.slice(1); - }; - // Some IEs don't preserve tabs through innerHTML - } else if (htmlEscape("\t") != "\t") { - htmlEscape = function(str) { - escapeElement.innerHTML = ""; - escapeElement.appendChild(document.createTextNode(str)); - return escapeElement.innerHTML; - }; + function removeChildren(e) { + e.innerHTML = ""; + return e; + } + function removeChildrenAndAdd(parent, e) { + removeChildren(parent).appendChild(e); + } + function setTextContent(e, str) { + if (ie_lt9) { + e.innerHTML = ""; + e.appendChild(document.createTextNode(str)); + } else e.textContent = str; } - CodeMirror.htmlEscape = htmlEscape; + CodeMirror.setTextContent = setTextContent; // Used to position the cursor after an undo/redo by finding the // last edited character. diff --git a/v3/js/codemirror/python.js b/v3/js/codemirror/python.js index d6888e8e5..fc5b9551c 100644 --- a/v3/js/codemirror/python.js +++ b/v3/js/codemirror/python.js @@ -227,7 +227,7 @@ CodeMirror.defineMode("python", function(conf, parserConf) { while (state.scopes[0].offset !== _indent) { state.scopes.shift(); } - return false + return false; } else { if (type === 'py') { state.scopes[0].offset = stream.indentation(); diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 22e44dc30..ff8b8bc6d 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -57,7 +57,8 @@ $(document).ready(function() { mode: 'python', lineNumbers: true, tabSize: 4, - // convert tab into two spaces: + indentUnit: 4, + // convert tab into four spaces: extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} }); From 5a1c3c0bd3ac4ef6bc97aedc625440550096a3d8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 10:03:08 -0700 Subject: [PATCH 202/502] added varargs test --- v3/tests/backend-tests/varargs.golden | 267 ++++++++++++++++++++++++++ v3/tests/backend-tests/varargs.txt | 4 + 2 files changed, 271 insertions(+) create mode 100644 v3/tests/backend-tests/varargs.golden create mode 100644 v3/tests/backend-tests/varargs.txt diff --git a/v3/tests/backend-tests/varargs.golden b/v3/tests/backend-tests/varargs.golden new file mode 100644 index 000000000..cddf013cb --- /dev/null +++ b/v3/tests/backend-tests/varargs.golden @@ -0,0 +1,267 @@ +{ + "code": "def parrot(mandatory, mandatory2, *args, **kwargs):\n pass\n\nparrot('a', 'b', 'c', 'd', 'e', name='Philip', age='35')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs", + "__return__" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + null + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/varargs.txt b/v3/tests/backend-tests/varargs.txt new file mode 100644 index 000000000..6e26086ea --- /dev/null +++ b/v3/tests/backend-tests/varargs.txt @@ -0,0 +1,4 @@ +def parrot(mandatory, mandatory2, *args, **kwargs): + pass + +parrot('a', 'b', 'c', 'd', 'e', name='Philip', age='35') From dc49f3ee2f771005681c66e1abc300fb827a7f09 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 11:40:59 -0700 Subject: [PATCH 203/502] got varags to print properly --- v3/pg_encoder.py | 4 ++-- v3/tests/backend-tests/varargs.golden | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/v3/pg_encoder.py b/v3/pg_encoder.py index 8199e1cb9..92f1dff80 100644 --- a/v3/pg_encoder.py +++ b/v3/pg_encoder.py @@ -163,9 +163,9 @@ def encode(self, dat): printed_args = [e for e in argspec.args] if argspec.varargs: - printed_args.extend(['*' + e for e in argspec.varargs]) + printed_args.append('*' + argspec.varargs) if argspec.keywords: - printed_args.extend(['**' + e for e in argspec.keywords]) + printed_args.append('**' + argspec.keywords) func_name = get_name(dat) pretty_name = func_name + '(' + ', '.join(printed_args) + ')' diff --git a/v3/tests/backend-tests/varargs.golden b/v3/tests/backend-tests/varargs.golden index cddf013cb..64cd90d22 100644 --- a/v3/tests/backend-tests/varargs.golden +++ b/v3/tests/backend-tests/varargs.golden @@ -27,7 +27,7 @@ "heap": { "1": [ "FUNCTION", - "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + "parrot(mandatory, mandatory2, *args, **kwargs)", null ] }, @@ -78,7 +78,7 @@ "heap": { "1": [ "FUNCTION", - "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + "parrot(mandatory, mandatory2, *args, **kwargs)", null ], "2": [ @@ -146,7 +146,7 @@ "heap": { "1": [ "FUNCTION", - "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + "parrot(mandatory, mandatory2, *args, **kwargs)", null ], "2": [ @@ -216,7 +216,7 @@ "heap": { "1": [ "FUNCTION", - "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + "parrot(mandatory, mandatory2, *args, **kwargs)", null ], "2": [ @@ -256,7 +256,7 @@ "heap": { "1": [ "FUNCTION", - "parrot(mandatory, mandatory2, *a, *r, *g, *s, **k, **w, **a, **r, **g, **s)", + "parrot(mandatory, mandatory2, *args, **kwargs)", null ] }, From 13af7a121e6eb31a3985d67997b2ed566e97521b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 12:00:53 -0700 Subject: [PATCH 204/502] added another mini-lesson --- v3/js/opt-lessons.js | 3 ++- v3/lessons/varargs.txt | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 v3/lessons/varargs.txt diff --git a/v3/js/opt-lessons.js b/v3/js/opt-lessons.js index 893edc1da..256c7b1fe 100644 --- a/v3/js/opt-lessons.js +++ b/v3/js/opt-lessons.js @@ -102,7 +102,8 @@ $(document).ready(function() { //$.get("lessons/aliasing.txt", parseLessonFile); //$.get("lessons/dive-into-python-311.txt", parseLessonFile); - $.get("lessons/for-else.txt", parseLessonFile); + //$.get("lessons/for-else.txt", parseLessonFile); + $.get("lessons/varargs.txt", parseLessonFile); // log a generic AJAX error handler $(document).ajaxError(function() { diff --git a/v3/lessons/varargs.txt b/v3/lessons/varargs.txt new file mode 100644 index 000000000..7cbb62e48 --- /dev/null +++ b/v3/lessons/varargs.txt @@ -0,0 +1,35 @@ +def f1(a, b, *rest): + pass + +f1(1, 2) +f1(1, 2, 3, 4, 5, 6, 7) + +def f2(a, b, **kwrest): + pass + +f2(1, 2, name='Bob', age=38) + +def f3(a, b, *rest, **kwrest): + pass + +f3(1, 2, 3, 4, name='Bob', age=38) +====== +{ + "title": "Optional Function Arguments", + + "description": "Using * and ** in argument names allows Python functions to accept an arbitrary number of optional arguments.", + + "1": "f1 is declared with two mandatory arguments (a and b) and an optional *rest argument.", + + "3": "When you call f1 with only the two mandatory arguments, rest is an empty tuple.", + + "7": "When you call f1 with additional arguments, rest is a tuple that holds the contents of everything after the two mandatory arguments.", + + "10": "f2 is declared with two mandatory arguments and an optional **kwrest argument.", + + "12": "When you call f2 with additional keyword arguments (e.g., name='Bob', age=38), kwrest becomes a dict bound to their respective keys and values.", + + "15": "You can combine up to one * and one ** argument in a function definition.", + + "17": "Now any extra regular arguments (here, the numbers 3 and 4) are found in the *rest tuple, and any extra keyword arguments are in the **kwrest dict." +} From 99e101bd403b4474f704e60822002b334e3e2a52 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 12:52:35 -0700 Subject: [PATCH 205/502] teeny --- v3/lessons/varargs.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/lessons/varargs.txt b/v3/lessons/varargs.txt index 7cbb62e48..f2508a89c 100644 --- a/v3/lessons/varargs.txt +++ b/v3/lessons/varargs.txt @@ -17,7 +17,7 @@ f3(1, 2, 3, 4, name='Bob', age=38) { "title": "Optional Function Arguments", - "description": "Using * and ** in argument names allows Python functions to accept an arbitrary number of optional arguments.", + "description": "Prepending certain argument names with * and ** allows Python functions to accept an arbitrary number of optional arguments.", "1": "f1 is declared with two mandatory arguments (a and b) and an optional *rest argument.", From 1c50dfd82a89bf7818087125240a60838c9045e5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 14:02:30 -0700 Subject: [PATCH 206/502] minor refactoring of border rendering code --- v3/js/pytutor.js | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index c16bf741d..8ddfc4bf4 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -812,6 +812,18 @@ ExecutionVisualizer.prototype.updateOutput = function() { /* if instrLimitReached, then treat like a normal non-terminating line */ var isTerminated = (!myViz.instrLimitReached && isLastInstr); + // the highlighted line can either have a 'top' border, 'bottom' + // border, or no border (null), depending on the value of 'borderType': + var borderType = null; + if (!hasError) { + if (curEntry.event == 'return' || isTerminated) { + borderType = 'bottom'; + } + else { + borderType = 'top'; + } + } + myViz.domRootD3.selectAll('#pyCodeOutputDiv td.lineNo') .attr('id', function(d) {return 'lineNo' + d.lineNumber;}) .style('color', function(d) @@ -827,8 +839,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { myViz.domRootD3.selectAll('#pyCodeOutputDiv td.cod') .style('background-color', function(d) { if (d.lineNumber == curEntry.line) { - d.backgroundColor = hasError ? errorColor : - (isTerminated ? terminatedLineColor : highlightedLineColor); + d.backgroundColor = hasError ? errorColor : highlightedLineColor; } else { d.backgroundColor = null; @@ -837,22 +848,21 @@ ExecutionVisualizer.prototype.updateOutput = function() { return d.backgroundColor; }) .style('border-top', function(d) { - if ((d.lineNumber == curEntry.line) && - (curEntry.event != 'return') && - !hasError && !isTerminated) { - return '1px solid ' + highlightedLineTopBorderColor; + if ((d.lineNumber == curEntry.line) && (borderType == 'top')) { + return '1px solid ' + highlightedLineBorderColor; } else { - // put a default white top border to keep space usage consistent + // put a default white border to keep space usage consistent return '1px solid #ffffff'; } }) .style('border-bottom', function(d) { - // special case to render horizontal bar *BELOW* the highlighted line - if ((d.lineNumber == curEntry.line) && - (curEntry.event == 'return') && - !hasError && !isTerminated) { - return '1px solid ' + highlightedLineTopBorderColor; + if ((d.lineNumber == curEntry.line) && (borderType == 'bottom')) { + return '1px solid ' + highlightedLineBorderColor; + } + else { + // put a default white border to keep space usage consistent + return '1px solid #ffffff'; } }); @@ -1959,9 +1969,9 @@ ExecutionVisualizer.prototype.redrawConnectors = function() { /* colors - see pytutor.css for more colors */ var highlightedLineColor = '#e4faeb'; -var highlightedLineTopBorderColor = '#005583'; +var highlightedLineBorderColor = '#005583'; -var visitedLineColor = highlightedLineTopBorderColor; +var visitedLineColor = highlightedLineBorderColor; var terminatedLineColor = '#a2eebd'; From f08864aae28954a56f4bcb754390f2cf1fa7f1e8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 14:21:00 -0700 Subject: [PATCH 207/502] highlight function call site --- v3/js/pytutor.js | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 8ddfc4bf4..8381c1d29 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -824,6 +824,15 @@ ExecutionVisualizer.prototype.updateOutput = function() { } } + var funcCallSiteLine = null; + + // highlight the call site for a 'call' instruction + if (curEntry.event == 'call' && myViz.curInstr > 0) { + var prevEntry = myViz.curTrace[myViz.curInstr - 1]; + funcCallSiteLine = prevEntry.line; + } + + myViz.domRootD3.selectAll('#pyCodeOutputDiv td.lineNo') .attr('id', function(d) {return 'lineNo' + d.lineNumber;}) .style('color', function(d) @@ -839,7 +848,12 @@ ExecutionVisualizer.prototype.updateOutput = function() { myViz.domRootD3.selectAll('#pyCodeOutputDiv td.cod') .style('background-color', function(d) { if (d.lineNumber == curEntry.line) { - d.backgroundColor = hasError ? errorColor : highlightedLineColor; + d.backgroundColor = hasError ? errorColor : + (funcCallSiteLine ? funcCallLineColor : + highlightedLineColor); + } + else if (d.lineNumber == funcCallSiteLine) { + d.backgroundColor = highlightedLineColor; } else { d.backgroundColor = null; @@ -1973,7 +1987,7 @@ var highlightedLineBorderColor = '#005583'; var visitedLineColor = highlightedLineBorderColor; -var terminatedLineColor = '#a2eebd'; +var funcCallLineColor = '#a2eebd'; var darkRed = '#d03939'; From 04fee872331615a153171496521fc4ca0e86a99b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 14:33:25 -0700 Subject: [PATCH 208/502] highlight function return site too --- v3/js/pytutor.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 8381c1d29..54dc401c3 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -832,6 +832,12 @@ ExecutionVisualizer.prototype.updateOutput = function() { funcCallSiteLine = prevEntry.line; } + var funcReturnSiteLine = null; + // highlight the return site for a 'return' instruction + if (curEntry.event == 'return' && myViz.curInstr < myViz.curTrace.length - 1) { + var nextEntry = myViz.curTrace[myViz.curInstr + 1]; + funcReturnSiteLine = nextEntry.line; + } myViz.domRootD3.selectAll('#pyCodeOutputDiv td.lineNo') .attr('id', function(d) {return 'lineNo' + d.lineNumber;}) @@ -855,6 +861,9 @@ ExecutionVisualizer.prototype.updateOutput = function() { else if (d.lineNumber == funcCallSiteLine) { d.backgroundColor = highlightedLineColor; } + else if (d.lineNumber == funcReturnSiteLine) { + d.backgroundColor = highlightedLineLighterColor; + } else { d.backgroundColor = null; } @@ -1985,6 +1994,8 @@ ExecutionVisualizer.prototype.redrawConnectors = function() { var highlightedLineColor = '#e4faeb'; var highlightedLineBorderColor = '#005583'; +var highlightedLineLighterColor = '#effff4'; + var visitedLineColor = highlightedLineBorderColor; var funcCallLineColor = '#a2eebd'; From 4d35293aadd0e612829e73a240fdaef8f6873de0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 14:44:12 -0700 Subject: [PATCH 209/502] minor color --- v3/js/pytutor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 54dc401c3..7748fe29c 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -1994,7 +1994,7 @@ ExecutionVisualizer.prototype.redrawConnectors = function() { var highlightedLineColor = '#e4faeb'; var highlightedLineBorderColor = '#005583'; -var highlightedLineLighterColor = '#effff4'; +var highlightedLineLighterColor = '#ecfff1'; var visitedLineColor = highlightedLineBorderColor; From 3c2f4cd339d1557139dfc9dd848c1252ac6cc0ac Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 15:05:34 -0700 Subject: [PATCH 210/502] got generators working --- v3/pg_logger.py | 6 +- .../backend-tests/generator_use_test.golden | 11318 ++++++++++++++++ v3/tests/backend-tests/generator_use_test.txt | 9 + 3 files changed, 11332 insertions(+), 1 deletion(-) create mode 100644 v3/tests/backend-tests/generator_use_test.golden create mode 100644 v3/tests/backend-tests/generator_use_test.txt diff --git a/v3/pg_logger.py b/v3/pg_logger.py index ec8390ef3..52d13958d 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -282,7 +282,11 @@ def interaction(self, frame, traceback, event_type): # or else we won't properly capture heap object mutations in the trace! if event_type == 'call': - assert top_frame not in self.frame_ordered_ids + # Don't be so strict about this assertion because it FAILS + # when you're calling a generator (not for the first time), + # since that frame has already previously been on the stack ... + #assert top_frame not in self.frame_ordered_ids + self.frame_ordered_ids[top_frame] = self.cur_frame_id self.cur_frame_id += 1 diff --git a/v3/tests/backend-tests/generator_use_test.golden b/v3/tests/backend-tests/generator_use_test.golden new file mode 100644 index 000000000..2276f75de --- /dev/null +++ b/v3/tests/backend-tests/generator_use_test.golden @@ -0,0 +1,11318 @@ +{ + "code": "def gen_odds():\n x = 1\n while True:\n yield x\n x += 2\n\nfor i in gen_odds():\n print i\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 5, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 7, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 9, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 9, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 9, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 9, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 9, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 11, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 11, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 11, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 11, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 13, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 13, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 13, + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 13, + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 15, + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 15, + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 15, + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 15, + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 15, + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 17, + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "__return__": 17, + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "__return__": 17, + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "__return__": 17, + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "__return__": 17, + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "__return__": 19, + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "__return__": 19, + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "__return__": 19, + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "__return__": 19, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "__return__": 19, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "__return__": 21, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "__return__": 21, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "__return__": 21, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "__return__": 21, + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "__return__": 21, + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "__return__": 23, + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "__return__": 23, + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "__return__": 23, + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "__return__": 23, + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "__return__": 23, + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "__return__": 25, + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "__return__": 25, + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "__return__": 25, + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "__return__": 25, + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "__return__": 25, + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "__return__": 27, + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "__return__": 27, + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "__return__": 27, + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "__return__": 27, + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "__return__": 27, + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "__return__": 29, + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "__return__": 29, + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "__return__": 29, + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "__return__": 29, + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "__return__": 29, + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "__return__": 31, + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "__return__": 31, + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "__return__": 31, + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "__return__": 31, + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "__return__": 31, + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "__return__": 33, + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "__return__": 33, + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "__return__": 33, + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "__return__": 33, + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "__return__": 33, + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "__return__": 35, + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "__return__": 35, + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "__return__": 35, + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "__return__": 35, + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "__return__": 35, + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "__return__": 37, + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "__return__": 37, + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "__return__": 37, + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "__return__": 37, + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "__return__": 37, + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "__return__": 39, + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "__return__": 39, + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "__return__": 39, + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "__return__": 39, + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "__return__": 39, + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "__return__": 41, + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "__return__": 41, + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "__return__": 41, + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "__return__": 41, + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "__return__": 41, + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "__return__": 43, + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "__return__": 43, + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "__return__": 43, + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "__return__": 43, + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "__return__": 43, + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "__return__": 45, + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "__return__": 45, + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "__return__": 45, + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "__return__": 45, + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "__return__": 45, + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "__return__": 47, + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "__return__": 47, + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "__return__": 47, + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "__return__": 47, + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "__return__": 47, + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "__return__": 49, + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "__return__": 49, + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "__return__": 49, + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "__return__": 49, + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "__return__": 49, + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "__return__": 51, + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "__return__": 51, + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "__return__": 51, + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "__return__": 51, + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "__return__": 51, + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "__return__": 53, + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "__return__": 53, + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "__return__": 53, + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "__return__": 53, + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "__return__": 53, + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "__return__": 55, + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "__return__": 55, + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "__return__": 55, + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "__return__": 55, + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "__return__": 55, + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "__return__": 57, + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "__return__": 57, + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "__return__": 57, + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "__return__": 57, + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "__return__": 57, + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "__return__": 59, + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "__return__": 59, + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "__return__": 59, + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "__return__": 59, + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "__return__": 59, + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "__return__": 61, + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "__return__": 61, + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "__return__": 61, + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "__return__": 61, + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "__return__": 61, + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "__return__": 63, + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "__return__": 63, + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "__return__": 63, + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "__return__": 63, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "__return__": 63, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "__return__": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "__return__": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "__return__": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "__return__": 65, + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "__return__": 65, + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "__return__": 67, + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "__return__": 67, + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "__return__": 67, + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "__return__": 67, + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "__return__": 67, + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "__return__": 69, + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "__return__": 69, + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "__return__": 69, + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "__return__": 69, + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "__return__": 69, + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "__return__": 71, + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "__return__": 71, + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "__return__": 71, + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "__return__": 71, + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "__return__": 71, + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "__return__": 73, + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "__return__": 73, + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "__return__": 73, + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "__return__": 73, + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "__return__": 73, + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "__return__": 75, + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "__return__": 75, + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "__return__": 75, + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "__return__": 75, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "__return__": 75, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "__return__": 77, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "__return__": 77, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "__return__": 77, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "__return__": 77, + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "__return__": 77, + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "__return__": 79, + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "__return__": 79, + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "__return__": 79, + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "__return__": 79, + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "__return__": 79, + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "__return__": 81, + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "__return__": 81, + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "__return__": 81, + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "__return__": 81, + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "__return__": 81, + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "__return__": 83, + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "__return__": 83, + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "__return__": 83, + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "__return__": 83, + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "__return__": 83, + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/generator_use_test.txt b/v3/tests/backend-tests/generator_use_test.txt new file mode 100644 index 000000000..0577e1434 --- /dev/null +++ b/v3/tests/backend-tests/generator_use_test.txt @@ -0,0 +1,9 @@ +def gen_odds(): + x = 1 + while True: + yield x + x += 2 + +for i in gen_odds(): + print i + From 685a650425028853fe7fe1a741c4337b4594b8ba Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 15:12:23 -0700 Subject: [PATCH 211/502] remove top border on function call highlights --- v3/js/pytutor.js | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 7748fe29c..834d829d9 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -812,20 +812,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { /* if instrLimitReached, then treat like a normal non-terminating line */ var isTerminated = (!myViz.instrLimitReached && isLastInstr); - // the highlighted line can either have a 'top' border, 'bottom' - // border, or no border (null), depending on the value of 'borderType': - var borderType = null; - if (!hasError) { - if (curEntry.event == 'return' || isTerminated) { - borderType = 'bottom'; - } - else { - borderType = 'top'; - } - } - var funcCallSiteLine = null; - // highlight the call site for a 'call' instruction if (curEntry.event == 'call' && myViz.curInstr > 0) { var prevEntry = myViz.curTrace[myViz.curInstr - 1]; @@ -839,6 +826,21 @@ ExecutionVisualizer.prototype.updateOutput = function() { funcReturnSiteLine = nextEntry.line; } + + // the highlighted line can either have a 'top' border, 'bottom' + // border, or no border (null), depending on the value of 'borderType': + var borderType = null; + if (!hasError && !funcCallSiteLine) { + if (curEntry.event == 'return' || isTerminated) { + borderType = 'bottom'; + } + else { + borderType = 'top'; + } + } + + + myViz.domRootD3.selectAll('#pyCodeOutputDiv td.lineNo') .attr('id', function(d) {return 'lineNo' + d.lineNumber;}) .style('color', function(d) From 89e52c2e503015336de174ca90c8d4725216684d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 15:14:01 -0700 Subject: [PATCH 212/502] don't put trailing '()' on function names in stack frames --- v3/js/pytutor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 834d829d9..fe3bc35ae 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -1793,7 +1793,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // (might contain '<' or '>' for weird names like ) var funcName = htmlspecialchars(frame.func_name).replace('<lambda>', '\u03bb'); - var headerLabel = funcName + '()'; + var headerLabel = funcName; // only display if you're someone's parent if (frame.is_parent) { From f51b7d9c38fc16742e08a9d3aeddc49ba5281693 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 15:19:01 -0700 Subject: [PATCH 213/502] got generator expressions displayed properly --- v3/js/pytutor.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index fe3bc35ae..720b2023b 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -2054,11 +2054,13 @@ String.prototype.rtrim = function() { // are NOT legal names for CSS ID's. // I also threw in '{', '}', '(', ')', '<', '>' as illegal characters. // +// also some variable names are like '.0' (for generator expressions), +// and '.' seems to be illegal. // TODO: what other characters are illegal??? var lbRE = new RegExp('\\[|{|\\(|<', 'g'); var rbRE = new RegExp('\\]|}|\\)|>', 'g'); function varnameToCssID(varname) { - return varname.replace(lbRE, 'LeftB_').replace(rbRE, '_RightB'); + return varname.replace(lbRE, 'LeftB_').replace(rbRE, '_RightB').replace('.', '_DOT_'); } From 3ef55dbbdd7873ee10af008723fdb904e487a779 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 15:22:02 -0700 Subject: [PATCH 214/502] make return value label red --- v3/css/pytutor.css | 1 + 1 file changed, 1 insertion(+) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 91f0594cd..62e79ad4a 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -179,6 +179,7 @@ div.ExecutionVisualizer .funcObj { div.ExecutionVisualizer .retval { font-size: 9pt; + color: #d03939; /* dark red */ } From 219ee06a907d894fc5093a449ac9e4cc39809dbe Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 15:29:53 -0700 Subject: [PATCH 215/502] added generate primes example --- v3/example-code/gen_primes.golden | 13082 ++++++++++++++++++++++++++++ v3/example-code/gen_primes.txt | 14 + v3/js/opt-frontend.js | 4 + v3/tutor.html | 6 +- 4 files changed, 13104 insertions(+), 2 deletions(-) create mode 100644 v3/example-code/gen_primes.golden create mode 100644 v3/example-code/gen_primes.txt diff --git a/v3/example-code/gen_primes.golden b/v3/example-code/gen_primes.golden new file mode 100644 index 000000000..1792ebafa --- /dev/null +++ b/v3/example-code/gen_primes.golden @@ -0,0 +1,13082 @@ +{ + "code": "# Use generator to generate a stream of primes\ndef gen_primes():\n n = 2\n while True:\n for x in range(2, n):\n if n % x == 0:\n break\n else:\n yield n\n n += 1\n\nfor p in gen_primes():\n print p\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 3, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 3, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 3, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 3, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 5, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 5, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5, + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 3, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 3, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 3, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 3, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 4, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 4, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 5, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 5, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 7, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 7, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 8, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 8, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 9, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 9, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 7, + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 3, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 3, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 4, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 4, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 5, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 5, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 6, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 6, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 7, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 7, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 8, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 8, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 9, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 9, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 11, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 11, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 3, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 3, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 3, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 3, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 4, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 4, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 5, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 5, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 6, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 6, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 7, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 7, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 8, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 8, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 9, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 9, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 10, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 10, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 11, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 11, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 13, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 13, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 14, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 14, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 15, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 15, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 3, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 3, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 4, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 4, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 5, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 5, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 6, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 6, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 7, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 7, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 8, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 8, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 9, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 9, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 10, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 10, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 11, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 11, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 12, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 12, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 13, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 13, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 14, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 14, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 15, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 15, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 17, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 17, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 17, + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 3, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 3, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 3, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 3, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 4, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 4, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 5, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 5, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 6, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 6, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 7, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 7, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 8, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 8, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 9, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 9, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 10, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 10, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 11, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 11, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 12, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 12, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 13, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 13, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 14, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 14, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 15, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 15, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 16, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 16, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 17, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 17, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 19, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 19, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 19, + "x": 20, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/example-code/gen_primes.txt b/v3/example-code/gen_primes.txt new file mode 100644 index 000000000..a41dc831f --- /dev/null +++ b/v3/example-code/gen_primes.txt @@ -0,0 +1,14 @@ +# Use generator to generate a stream of primes +def gen_primes(): + n = 2 + while True: + for x in range(2, n): + if n % x == 0: + break + else: + yield n + n += 1 + +for p in gen_primes(): + print p + diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index ff8b8bc6d..a23f070f4 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -308,6 +308,10 @@ $(document).ready(function() { return false; }); + $("#genPrimesLink").click(function() { + $.get("example-code/gen_primes.txt", setCodeMirrorVal); + return false; + }); $('#closure1Link').click(function() { diff --git a/v3/tutor.html b/v3/tutor.html index bc58f4853..441f9baa4 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -89,8 +89,10 @@ sumList | towers of hanoi | exceptions | -sum cubes | -decorators +sum cubes +
+decorators | +generators

From 23cd52ca7dfad21a1156f6e58f5fa207059577f1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 17:39:52 -0700 Subject: [PATCH 216/502] clear up crufty old __return__ values --- v3/pg_logger.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 52d13958d..3e2b33079 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -254,6 +254,12 @@ def user_return(self, frame, return_value): """This function is called when a return trap is set here.""" frame.f_locals['__return__'] = return_value self.interaction(frame, None, 'return') + # delete __return__ so that on subsequent calls to + # a generator function, the OLD yielded (returned) + # value gets deleted from the frame ... + # (this also clears away crufty obsolete return values in other + # kinds of examples as well, most notably those involving closures) + del frame.f_locals['__return__'] def user_exception(self, frame, exc_info): exc_type, exc_value, exc_traceback = exc_info From 6d2f229aaec0a339f36feb635920f236ed8ddeeb Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 17:40:33 -0700 Subject: [PATCH 217/502] minor color change --- v3/js/pytutor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 720b2023b..3b0e60386 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -1996,7 +1996,7 @@ ExecutionVisualizer.prototype.redrawConnectors = function() { var highlightedLineColor = '#e4faeb'; var highlightedLineBorderColor = '#005583'; -var highlightedLineLighterColor = '#ecfff1'; +var highlightedLineLighterColor = '#edfff2'; var visitedLineColor = highlightedLineBorderColor; From cfe110c951837ad0ccdd7d159d2206c82963b536 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 17:40:41 -0700 Subject: [PATCH 218/502] update loads of tests --- v3/example-code/closures/closure1.golden | 35 +- v3/example-code/closures/closure2.golden | 161 +-- v3/example-code/closures/closure3.golden | 77 +- v3/example-code/closures/closure4.golden | 147 +-- v3/example-code/closures/closure5.golden | 653 ++-------- v3/example-code/closures/lambda-param.golden | 4 +- v3/example-code/decorators.golden | 175 +-- v3/example-code/gen_primes.golden | 1076 +++++------------ v3/example-code/linked-lists/ll2.golden | 829 +------------ v3/example-code/map.golden | 7 +- v3/example-code/oop_1.golden | 595 +-------- v3/example-code/oop_2.golden | 504 +------- v3/example-code/oop_inherit.golden | 816 +------------ v3/example-code/oop_small.golden | 351 ++---- v3/example-code/sqrt.golden | 20 +- v3/example-code/sum.golden | 4 +- v3/tests/backend-tests/class_test.golden | 532 +------- .../backend-tests/generator_use_test.golden | 672 +++------- v3/tests/backend-tests/john-compose.golden | 77 +- v3/tests/backend-tests/lambda_1.golden | 4 +- v3/tests/backend-tests/ling-scheme-2.golden | 7 +- v3/tests/backend-tests/ling-scheme-3.golden | 7 +- v3/tests/backend-tests/newstyle_class.golden | 308 +---- 23 files changed, 870 insertions(+), 6191 deletions(-) diff --git a/v3/example-code/closures/closure1.golden b/v3/example-code/closures/closure1.golden index 3652e7a3f..60b1b4eab 100644 --- a/v3/example-code/closures/closure1.golden +++ b/v3/example-code/closures/closure1.golden @@ -227,10 +227,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 2 - ], "bar": [ "REF", 2 @@ -244,8 +240,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] } ], @@ -286,10 +281,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 2 - ], "bar": [ "REF", 2 @@ -303,8 +294,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { @@ -362,10 +352,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 2 - ], "bar": [ "REF", 2 @@ -379,8 +365,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { @@ -438,10 +423,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 2 - ], "bar": [ "REF", 2 @@ -455,8 +436,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { @@ -516,10 +496,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 2 - ], "bar": [ "REF", 2 @@ -533,8 +509,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] } ], diff --git a/v3/example-code/closures/closure2.golden b/v3/example-code/closures/closure2.golden index e7a544a04..044859126 100644 --- a/v3/example-code/closures/closure2.golden +++ b/v3/example-code/closures/closure2.golden @@ -301,10 +301,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -318,8 +314,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] } ], @@ -370,10 +365,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -387,8 +378,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { @@ -454,10 +444,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -471,8 +457,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { @@ -538,10 +523,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -555,8 +536,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { @@ -632,10 +612,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -649,8 +625,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { @@ -732,10 +707,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -749,18 +720,13 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, - "__return__": [ - "REF", - 4 - ], "bar_deux": [ "REF", 4 @@ -774,8 +740,7 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux", - "__return__" + "bar_deux" ] } ], @@ -836,10 +801,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -853,18 +814,13 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, - "__return__": [ - "REF", - 4 - ], "bar_deux": [ "REF", 4 @@ -878,8 +834,7 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux", - "__return__" + "bar_deux" ] }, { @@ -957,10 +912,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -974,18 +925,13 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, - "__return__": [ - "REF", - 4 - ], "bar_deux": [ "REF", 4 @@ -999,8 +945,7 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux", - "__return__" + "bar_deux" ] }, { @@ -1078,10 +1023,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -1095,18 +1036,13 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, - "__return__": [ - "REF", - 4 - ], "bar_deux": [ "REF", 4 @@ -1120,8 +1056,7 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux", - "__return__" + "bar_deux" ] }, { @@ -1201,10 +1136,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -1218,18 +1149,13 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, - "__return__": [ - "REF", - 4 - ], "bar_deux": [ "REF", 4 @@ -1243,8 +1169,7 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux", - "__return__" + "bar_deux" ] } ], @@ -1305,10 +1230,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -1322,18 +1243,13 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, - "__return__": [ - "REF", - 4 - ], "bar_deux": [ "REF", 4 @@ -1347,8 +1263,7 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux", - "__return__" + "bar_deux" ] }, { @@ -1426,10 +1341,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -1443,18 +1354,13 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, - "__return__": [ - "REF", - 4 - ], "bar_deux": [ "REF", 4 @@ -1468,8 +1374,7 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux", - "__return__" + "bar_deux" ] }, { @@ -1547,10 +1452,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -1564,18 +1465,13 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, - "__return__": [ - "REF", - 4 - ], "bar_deux": [ "REF", 4 @@ -1589,8 +1485,7 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux", - "__return__" + "bar_deux" ] }, { @@ -1670,10 +1565,6 @@ "frame_id": 1, "encoded_locals": { "y": 1, - "__return__": [ - "REF", - 3 - ], "bar": [ "REF", 3 @@ -1687,18 +1578,13 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar", - "__return__" + "bar" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, - "__return__": [ - "REF", - 4 - ], "bar_deux": [ "REF", 4 @@ -1712,8 +1598,7 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux", - "__return__" + "bar_deux" ] } ], diff --git a/v3/example-code/closures/closure3.golden b/v3/example-code/closures/closure3.golden index fe2310a1a..1f347f420 100644 --- a/v3/example-code/closures/closure3.golden +++ b/v3/example-code/closures/closure3.golden @@ -665,10 +665,6 @@ "REF", 4 ], - "__return__": [ - "REF", - 5 - ], "baz": [ "REF", 5 @@ -684,8 +680,7 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz", - "__return__" + "baz" ] } ], @@ -744,10 +739,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": [ "REF", 2 @@ -765,8 +756,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar", - "__return__" + "bar" ] }, { @@ -776,10 +766,6 @@ "REF", 4 ], - "__return__": [ - "REF", - 5 - ], "baz": [ "REF", 5 @@ -795,8 +781,7 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz", - "__return__" + "baz" ] } ], @@ -859,10 +844,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": [ "REF", 2 @@ -880,8 +861,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar", - "__return__" + "bar" ] }, { @@ -891,10 +871,6 @@ "REF", 4 ], - "__return__": [ - "REF", - 5 - ], "baz": [ "REF", 5 @@ -910,8 +886,7 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz", - "__return__" + "baz" ] }, { @@ -1003,10 +978,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": [ "REF", 2 @@ -1024,8 +995,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar", - "__return__" + "bar" ] }, { @@ -1035,10 +1005,6 @@ "REF", 4 ], - "__return__": [ - "REF", - 5 - ], "baz": [ "REF", 5 @@ -1054,8 +1020,7 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz", - "__return__" + "baz" ] }, { @@ -1147,10 +1112,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": [ "REF", 2 @@ -1168,8 +1129,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar", - "__return__" + "bar" ] }, { @@ -1179,10 +1139,6 @@ "REF", 4 ], - "__return__": [ - "REF", - 5 - ], "baz": [ "REF", 5 @@ -1198,8 +1154,7 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz", - "__return__" + "baz" ] }, { @@ -1293,10 +1248,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": [ "REF", 2 @@ -1314,8 +1265,7 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar", - "__return__" + "bar" ] }, { @@ -1325,10 +1275,6 @@ "REF", 4 ], - "__return__": [ - "REF", - 5 - ], "baz": [ "REF", 5 @@ -1344,8 +1290,7 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz", - "__return__" + "baz" ] } ], diff --git a/v3/example-code/closures/closure4.golden b/v3/example-code/closures/closure4.golden index 914a59b4e..268bc8945 100644 --- a/v3/example-code/closures/closure4.golden +++ b/v3/example-code/closures/closure4.golden @@ -226,10 +226,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -244,8 +240,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] } ], @@ -285,10 +280,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -303,8 +294,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -359,10 +349,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -377,8 +363,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -433,10 +418,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -451,8 +432,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -517,10 +497,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -535,8 +511,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -607,10 +582,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -625,17 +596,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 2, "g": [ "REF", @@ -650,8 +616,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] } ], @@ -701,10 +666,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -719,17 +680,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 2, "g": [ "REF", @@ -744,8 +700,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -812,10 +767,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -830,17 +781,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 2, "g": [ "REF", @@ -855,8 +801,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -923,10 +868,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -941,17 +882,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 2, "g": [ "REF", @@ -966,8 +902,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1036,10 +971,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -1054,17 +985,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 2, "g": [ "REF", @@ -1079,8 +1005,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1147,10 +1072,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -1165,17 +1086,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 2, "g": [ "REF", @@ -1190,8 +1106,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1258,10 +1173,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -1276,17 +1187,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 2, "g": [ "REF", @@ -1301,8 +1207,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1371,10 +1276,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": 1, "g": [ "REF", @@ -1389,17 +1290,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 2, "g": [ "REF", @@ -1414,8 +1310,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] } ], diff --git a/v3/example-code/closures/closure5.golden b/v3/example-code/closures/closure5.golden index 037cbb077..22e743525 100644 --- a/v3/example-code/closures/closure5.golden +++ b/v3/example-code/closures/closure5.golden @@ -231,10 +231,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -249,8 +245,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] } ], @@ -295,10 +290,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -313,8 +304,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -374,10 +364,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -392,8 +378,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -453,10 +438,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -471,8 +452,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -542,10 +522,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -560,8 +536,7 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -642,10 +617,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -660,17 +631,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -685,8 +651,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] } ], @@ -746,10 +711,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -764,17 +725,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -789,8 +745,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -863,10 +818,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -881,17 +832,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -906,8 +852,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -980,10 +925,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -998,17 +939,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -1023,8 +959,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1116,10 +1051,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -1134,17 +1065,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -1159,8 +1085,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1252,10 +1177,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -1270,17 +1191,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -1295,8 +1211,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1388,10 +1303,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -1406,17 +1317,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -1431,8 +1337,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1543,10 +1448,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -1561,17 +1462,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -1586,8 +1482,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1698,10 +1593,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -1716,17 +1607,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -1741,8 +1627,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -1853,10 +1738,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -1871,17 +1752,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -1896,8 +1772,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -2027,10 +1902,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -2045,17 +1916,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -2070,8 +1936,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -2201,10 +2066,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -2219,17 +2080,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -2244,8 +2100,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -2375,10 +2230,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -2393,17 +2244,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -2418,8 +2264,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -2568,10 +2413,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -2586,17 +2427,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -2611,8 +2447,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -2761,10 +2596,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -2779,17 +2610,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -2804,8 +2630,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -2954,10 +2779,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -2972,17 +2793,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -2997,8 +2813,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -3149,10 +2964,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -3167,17 +2978,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -3192,8 +2998,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -3325,10 +3130,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -3343,17 +3144,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -3368,8 +3164,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -3482,10 +3277,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -3500,17 +3291,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -3525,8 +3311,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -3620,10 +3405,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -3638,17 +3419,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -3663,8 +3439,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -3741,10 +3516,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -3759,17 +3530,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -3784,8 +3550,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -3858,10 +3623,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -3876,17 +3637,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -3901,8 +3657,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -3975,10 +3730,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -3993,17 +3744,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -4018,8 +3764,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -4111,10 +3856,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -4129,17 +3870,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -4154,8 +3890,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -4247,10 +3982,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -4265,17 +3996,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -4290,8 +4016,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -4383,10 +4108,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -4401,17 +4122,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, - "encoded_locals": { - "__return__": [ - "REF", - 5 - ], + "encoded_locals": { "x": 4, "g": [ "REF", @@ -4426,8 +4142,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -4538,10 +4253,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -4556,17 +4267,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -4581,8 +4287,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -4693,10 +4398,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -4711,17 +4412,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -4736,8 +4432,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -4848,10 +4543,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -4866,17 +4557,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -4891,8 +4577,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -5022,10 +4707,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -5040,17 +4721,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -5065,8 +4741,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -5196,10 +4871,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -5214,17 +4885,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -5239,8 +4905,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -5370,10 +5035,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -5388,17 +5049,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -5413,8 +5069,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -5563,10 +5218,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -5581,17 +5232,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -5606,8 +5252,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -5756,10 +5401,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -5774,17 +5415,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -5799,8 +5435,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -5949,10 +5584,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -5967,17 +5598,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -5992,8 +5618,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -6161,10 +5786,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -6179,17 +5800,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -6204,8 +5820,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -6373,10 +5988,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -6391,17 +6002,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -6416,8 +6022,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -6585,10 +6190,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -6603,17 +6204,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -6628,8 +6224,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -6799,10 +6394,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -6817,17 +6408,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -6842,8 +6428,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -6994,10 +6579,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -7012,17 +6593,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -7037,8 +6613,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -7170,10 +6745,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -7188,17 +6759,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -7213,8 +6779,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -7327,10 +6892,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -7345,17 +6906,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -7370,8 +6926,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -7465,10 +7020,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -7483,17 +7034,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -7508,8 +7054,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { @@ -7587,10 +7132,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 3 - ], "x": 3, "g": [ "REF", @@ -7605,17 +7146,12 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "x": 4, "g": [ "REF", @@ -7630,8 +7166,7 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g", - "__return__" + "g" ] } ], diff --git a/v3/example-code/closures/lambda-param.golden b/v3/example-code/closures/lambda-param.golden index aaec15a9c..f15175aba 100644 --- a/v3/example-code/closures/lambda-param.golden +++ b/v3/example-code/closures/lambda-param.golden @@ -714,7 +714,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": null, "x": 10 }, "is_highlighted": false, @@ -724,8 +723,7 @@ "parent_frame_id_list": [], "unique_hash": "foo_f1_p_z", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], diff --git a/v3/example-code/decorators.golden b/v3/example-code/decorators.golden index 8b88ef0b2..ad72b89be 100644 --- a/v3/example-code/decorators.golden +++ b/v3/example-code/decorators.golden @@ -292,10 +292,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -308,8 +304,7 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -377,10 +372,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -393,8 +384,7 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -462,10 +452,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -478,8 +464,7 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -558,10 +543,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -574,17 +555,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -597,8 +573,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] } ], @@ -658,10 +633,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -674,17 +645,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -697,8 +663,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -771,10 +736,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -787,17 +748,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -810,8 +766,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -884,10 +839,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -900,17 +851,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -923,8 +869,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -1010,10 +955,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -1026,17 +967,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -1049,8 +985,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -1136,10 +1071,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -1152,17 +1083,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -1175,8 +1101,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -1273,10 +1198,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -1289,17 +1210,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -1312,8 +1228,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -1410,10 +1325,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -1426,17 +1337,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -1449,8 +1355,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -1551,10 +1456,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -1567,17 +1468,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -1590,8 +1486,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -1681,10 +1576,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -1697,17 +1588,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -1720,8 +1606,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { @@ -1799,10 +1684,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "fn": [ "REF", 3 @@ -1815,17 +1696,12 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] }, { "frame_id": 2, "encoded_locals": { - "__return__": [ - "REF", - 5 - ], "fn": [ "REF", 4 @@ -1838,8 +1714,7 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn", - "__return__" + "fn" ] } ], diff --git a/v3/example-code/gen_primes.golden b/v3/example-code/gen_primes.golden index 1792ebafa..d0cdadeb0 100644 --- a/v3/example-code/gen_primes.golden +++ b/v3/example-code/gen_primes.golden @@ -323,7 +323,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 2, "n": 2 }, "is_highlighted": true, @@ -333,8 +332,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_primes_f2", "ordered_varnames": [ - "n", - "__return__" + "n" ] } ], @@ -366,7 +364,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 2, "n": 2 }, "is_highlighted": true, @@ -376,8 +373,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_primes_f2", "ordered_varnames": [ - "n", - "__return__" + "n" ] } ], @@ -409,7 +405,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 2, "n": 3 }, "is_highlighted": true, @@ -419,8 +414,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_primes_f2", "ordered_varnames": [ - "n", - "__return__" + "n" ] } ], @@ -452,7 +446,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 2, "n": 3 }, "is_highlighted": true, @@ -462,8 +455,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_primes_f2", "ordered_varnames": [ - "n", - "__return__" + "n" ] } ], @@ -495,7 +487,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 2, "x": 2, "n": 3 }, @@ -507,8 +498,7 @@ "unique_hash": "gen_primes_f2", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -540,7 +530,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 2, "x": 2, "n": 3 }, @@ -552,8 +541,7 @@ "unique_hash": "gen_primes_f2", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -585,7 +573,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 2, "x": 2, "n": 3 }, @@ -597,8 +584,7 @@ "unique_hash": "gen_primes_f2", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -725,7 +711,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 3 }, @@ -737,8 +722,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -770,7 +754,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 3 }, @@ -782,8 +765,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -815,7 +797,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 4 }, @@ -827,8 +808,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -860,7 +840,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 4 }, @@ -872,8 +851,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -905,7 +883,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 4 }, @@ -917,8 +894,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -950,7 +926,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 4 }, @@ -962,8 +937,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -995,7 +969,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 4 }, @@ -1007,8 +980,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1040,7 +1012,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 5 }, @@ -1052,8 +1023,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1085,7 +1055,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 5 }, @@ -1097,8 +1066,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1130,7 +1098,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 5 }, @@ -1142,8 +1109,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1175,7 +1141,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 2, "n": 5 }, @@ -1187,8 +1152,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1220,7 +1184,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 3, "n": 5 }, @@ -1232,8 +1195,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1265,7 +1227,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 3, "n": 5 }, @@ -1277,8 +1238,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1310,7 +1270,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 4, "n": 5 }, @@ -1322,8 +1281,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1355,7 +1313,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 4, "n": 5 }, @@ -1367,8 +1324,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1400,7 +1356,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 4, "n": 5 }, @@ -1412,8 +1367,7 @@ "unique_hash": "gen_primes_f3", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1540,7 +1494,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 4, "n": 5 }, @@ -1552,8 +1505,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1585,7 +1537,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 4, "n": 5 }, @@ -1597,8 +1548,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1630,7 +1580,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 4, "n": 6 }, @@ -1642,8 +1591,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1675,7 +1623,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 4, "n": 6 }, @@ -1687,8 +1634,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1720,7 +1666,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 2, "n": 6 }, @@ -1732,8 +1677,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1765,7 +1709,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 2, "n": 6 }, @@ -1777,8 +1720,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1810,7 +1752,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 2, "n": 6 }, @@ -1822,8 +1763,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1855,7 +1795,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 2, "n": 7 }, @@ -1867,8 +1806,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1900,7 +1838,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 2, "n": 7 }, @@ -1912,8 +1849,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1945,7 +1881,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 2, "n": 7 }, @@ -1957,8 +1892,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -1990,7 +1924,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 2, "n": 7 }, @@ -2002,8 +1935,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2035,7 +1967,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 3, "n": 7 }, @@ -2047,8 +1978,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2080,7 +2010,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 3, "n": 7 }, @@ -2092,8 +2021,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2125,7 +2053,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 4, "n": 7 }, @@ -2137,8 +2064,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2170,7 +2096,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 4, "n": 7 }, @@ -2182,8 +2107,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2215,7 +2139,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 5, "n": 7 }, @@ -2227,8 +2150,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2260,7 +2182,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 5, "n": 7 }, @@ -2272,8 +2193,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2305,7 +2225,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 6, "n": 7 }, @@ -2317,8 +2236,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2350,7 +2268,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 6, "n": 7 }, @@ -2362,8 +2279,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2395,7 +2311,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 6, "n": 7 }, @@ -2407,8 +2322,7 @@ "unique_hash": "gen_primes_f4", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2535,7 +2449,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 6, "n": 7 }, @@ -2547,8 +2460,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2580,7 +2492,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 6, "n": 7 }, @@ -2592,8 +2503,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2625,7 +2535,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 6, "n": 8 }, @@ -2637,8 +2546,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2670,7 +2578,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 6, "n": 8 }, @@ -2682,8 +2589,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2715,7 +2621,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 8 }, @@ -2727,8 +2632,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2760,7 +2664,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 8 }, @@ -2772,8 +2675,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2805,7 +2707,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 8 }, @@ -2817,8 +2718,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2850,7 +2750,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 9 }, @@ -2862,8 +2761,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2895,7 +2793,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 9 }, @@ -2907,8 +2804,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2940,7 +2836,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 9 }, @@ -2952,8 +2847,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -2985,7 +2879,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 9 }, @@ -2997,8 +2890,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3030,7 +2922,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 3, "n": 9 }, @@ -3042,8 +2933,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3075,7 +2965,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 3, "n": 9 }, @@ -3087,8 +2976,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3120,7 +3008,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 3, "n": 9 }, @@ -3132,8 +3019,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3165,7 +3051,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 3, "n": 10 }, @@ -3177,8 +3062,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3210,7 +3094,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 3, "n": 10 }, @@ -3222,8 +3105,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3255,7 +3137,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 10 }, @@ -3267,8 +3148,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3300,7 +3180,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 10 }, @@ -3312,8 +3191,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3345,7 +3223,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 10 }, @@ -3357,8 +3234,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3390,7 +3266,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 11 }, @@ -3402,8 +3277,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3435,7 +3309,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 11 }, @@ -3447,8 +3320,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3480,7 +3352,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 11 }, @@ -3492,8 +3363,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3525,7 +3395,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 2, "n": 11 }, @@ -3537,8 +3406,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3570,7 +3438,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 3, "n": 11 }, @@ -3582,8 +3449,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3615,7 +3481,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 3, "n": 11 }, @@ -3627,8 +3492,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3660,7 +3524,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 4, "n": 11 }, @@ -3672,8 +3535,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3705,7 +3567,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 4, "n": 11 }, @@ -3717,8 +3578,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3750,7 +3610,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 5, "n": 11 }, @@ -3762,8 +3621,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3795,7 +3653,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 5, "n": 11 }, @@ -3807,8 +3664,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3840,7 +3696,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 6, "n": 11 }, @@ -3852,8 +3707,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3885,7 +3739,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 6, "n": 11 }, @@ -3897,8 +3750,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3930,7 +3782,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 7, "n": 11 }, @@ -3942,8 +3793,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -3975,7 +3825,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 7, "n": 11 }, @@ -3987,8 +3836,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4020,7 +3868,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 8, "n": 11 }, @@ -4032,8 +3879,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4065,7 +3911,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 8, "n": 11 }, @@ -4077,8 +3922,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4110,7 +3954,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 9, "n": 11 }, @@ -4122,8 +3965,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4155,7 +3997,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 9, "n": 11 }, @@ -4167,8 +4008,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4200,7 +4040,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 10, "n": 11 }, @@ -4212,8 +4051,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4245,7 +4083,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 10, "n": 11 }, @@ -4257,8 +4094,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4290,7 +4126,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 10, "n": 11 }, @@ -4302,8 +4137,7 @@ "unique_hash": "gen_primes_f5", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4430,7 +4264,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 10, "n": 11 }, @@ -4442,8 +4275,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4475,7 +4307,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 10, "n": 11 }, @@ -4487,8 +4318,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4520,7 +4350,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 10, "n": 12 }, @@ -4532,8 +4361,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4565,7 +4393,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 10, "n": 12 }, @@ -4577,8 +4404,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4610,7 +4436,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 2, "n": 12 }, @@ -4622,8 +4447,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4655,7 +4479,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 2, "n": 12 }, @@ -4667,8 +4490,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4700,7 +4522,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 2, "n": 12 }, @@ -4712,8 +4533,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4745,7 +4565,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 2, "n": 13 }, @@ -4757,8 +4576,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4790,7 +4608,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 2, "n": 13 }, @@ -4802,8 +4619,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4835,7 +4651,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 2, "n": 13 }, @@ -4847,8 +4662,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4880,7 +4694,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 2, "n": 13 }, @@ -4892,8 +4705,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4925,7 +4737,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 3, "n": 13 }, @@ -4937,8 +4748,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -4970,7 +4780,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 3, "n": 13 }, @@ -4982,8 +4791,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5015,7 +4823,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 4, "n": 13 }, @@ -5027,8 +4834,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5060,7 +4866,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 4, "n": 13 }, @@ -5072,8 +4877,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5105,7 +4909,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 5, "n": 13 }, @@ -5117,8 +4920,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5150,7 +4952,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 5, "n": 13 }, @@ -5162,8 +4963,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5195,7 +4995,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 6, "n": 13 }, @@ -5207,8 +5006,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5240,7 +5038,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 6, "n": 13 }, @@ -5252,8 +5049,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5285,7 +5081,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 7, "n": 13 }, @@ -5297,8 +5092,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5330,7 +5124,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 7, "n": 13 }, @@ -5342,8 +5135,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5375,7 +5167,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 8, "n": 13 }, @@ -5387,8 +5178,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5420,7 +5210,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 8, "n": 13 }, @@ -5432,8 +5221,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5465,7 +5253,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 9, "n": 13 }, @@ -5477,8 +5264,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5510,7 +5296,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 9, "n": 13 }, @@ -5522,8 +5307,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5555,7 +5339,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 10, "n": 13 }, @@ -5567,8 +5350,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5600,7 +5382,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 10, "n": 13 }, @@ -5612,8 +5393,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5645,7 +5425,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 11, "n": 13 }, @@ -5657,8 +5436,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5690,7 +5468,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 11, "n": 13 }, @@ -5702,8 +5479,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5735,7 +5511,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 12, "n": 13 }, @@ -5747,8 +5522,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5780,7 +5554,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 12, "n": 13 }, @@ -5792,8 +5565,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5825,7 +5597,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 11, "x": 12, "n": 13 }, @@ -5837,8 +5608,7 @@ "unique_hash": "gen_primes_f6", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -5965,7 +5735,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 12, "n": 13 }, @@ -5977,8 +5746,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6010,7 +5778,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 12, "n": 13 }, @@ -6022,8 +5789,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6055,7 +5821,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 12, "n": 14 }, @@ -6067,8 +5832,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6100,7 +5864,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 12, "n": 14 }, @@ -6112,8 +5875,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6145,7 +5907,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 14 }, @@ -6157,8 +5918,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6190,7 +5950,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 14 }, @@ -6202,8 +5961,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6235,7 +5993,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 14 }, @@ -6247,8 +6004,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6280,7 +6036,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 15 }, @@ -6292,8 +6047,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6325,7 +6079,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 15 }, @@ -6337,8 +6090,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6370,7 +6122,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 15 }, @@ -6382,8 +6133,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6415,7 +6165,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 15 }, @@ -6427,8 +6176,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6460,7 +6208,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 3, "n": 15 }, @@ -6472,8 +6219,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6505,7 +6251,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 3, "n": 15 }, @@ -6517,8 +6262,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6550,7 +6294,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 3, "n": 15 }, @@ -6562,8 +6305,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6595,7 +6337,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 3, "n": 16 }, @@ -6607,8 +6348,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6640,7 +6380,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 3, "n": 16 }, @@ -6652,8 +6391,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6685,7 +6423,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 16 }, @@ -6697,8 +6434,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6730,7 +6466,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 16 }, @@ -6742,8 +6477,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6775,7 +6509,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 16 }, @@ -6787,8 +6520,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6820,7 +6552,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 17 }, @@ -6832,8 +6563,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6865,7 +6595,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 17 }, @@ -6877,8 +6606,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6910,7 +6638,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 17 }, @@ -6922,8 +6649,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -6955,7 +6681,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 2, "n": 17 }, @@ -6967,8 +6692,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7000,7 +6724,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 3, "n": 17 }, @@ -7012,8 +6735,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7045,7 +6767,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 3, "n": 17 }, @@ -7057,8 +6778,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7090,7 +6810,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 4, "n": 17 }, @@ -7102,8 +6821,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7135,7 +6853,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 4, "n": 17 }, @@ -7147,8 +6864,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7180,7 +6896,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 5, "n": 17 }, @@ -7192,8 +6907,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7225,7 +6939,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 5, "n": 17 }, @@ -7237,8 +6950,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7270,7 +6982,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 6, "n": 17 }, @@ -7282,8 +6993,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7315,7 +7025,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 6, "n": 17 }, @@ -7327,8 +7036,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7360,7 +7068,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 7, "n": 17 }, @@ -7372,8 +7079,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7405,7 +7111,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 7, "n": 17 }, @@ -7417,8 +7122,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7450,7 +7154,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 8, "n": 17 }, @@ -7462,8 +7165,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7495,7 +7197,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 8, "n": 17 }, @@ -7507,8 +7208,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7540,7 +7240,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 9, "n": 17 }, @@ -7552,8 +7251,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7585,7 +7283,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 9, "n": 17 }, @@ -7597,8 +7294,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7630,7 +7326,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 10, "n": 17 }, @@ -7642,8 +7337,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7675,7 +7369,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 10, "n": 17 }, @@ -7687,8 +7380,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7720,7 +7412,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 11, "n": 17 }, @@ -7732,8 +7423,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7765,7 +7455,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 11, "n": 17 }, @@ -7777,8 +7466,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7810,7 +7498,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 12, "n": 17 }, @@ -7822,8 +7509,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7855,7 +7541,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 12, "n": 17 }, @@ -7867,8 +7552,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7900,7 +7584,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 13, "n": 17 }, @@ -7912,8 +7595,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7945,7 +7627,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 13, "n": 17 }, @@ -7957,8 +7638,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -7990,7 +7670,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 14, "n": 17 }, @@ -8002,8 +7681,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8035,7 +7713,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 14, "n": 17 }, @@ -8047,8 +7724,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8080,7 +7756,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 15, "n": 17 }, @@ -8092,8 +7767,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8125,7 +7799,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 15, "n": 17 }, @@ -8137,8 +7810,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8170,7 +7842,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 16, "n": 17 }, @@ -8182,8 +7853,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8215,7 +7885,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 16, "n": 17 }, @@ -8227,8 +7896,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8260,7 +7928,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 13, "x": 16, "n": 17 }, @@ -8272,8 +7939,7 @@ "unique_hash": "gen_primes_f7", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8400,7 +8066,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 16, "n": 17 }, @@ -8412,8 +8077,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8445,7 +8109,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 16, "n": 17 }, @@ -8457,8 +8120,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8490,7 +8152,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 16, "n": 18 }, @@ -8502,8 +8163,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8535,7 +8195,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 16, "n": 18 }, @@ -8547,8 +8206,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8580,7 +8238,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 2, "n": 18 }, @@ -8592,8 +8249,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8625,7 +8281,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 2, "n": 18 }, @@ -8637,8 +8292,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8670,7 +8324,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 2, "n": 18 }, @@ -8682,8 +8335,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8715,7 +8367,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 2, "n": 19 }, @@ -8727,8 +8378,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8760,7 +8410,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 2, "n": 19 }, @@ -8772,8 +8421,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8805,7 +8453,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 2, "n": 19 }, @@ -8817,8 +8464,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8850,7 +8496,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 2, "n": 19 }, @@ -8862,8 +8507,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8895,7 +8539,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 3, "n": 19 }, @@ -8907,8 +8550,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8940,7 +8582,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 3, "n": 19 }, @@ -8952,8 +8593,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -8985,7 +8625,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 4, "n": 19 }, @@ -8997,8 +8636,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9030,7 +8668,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 4, "n": 19 }, @@ -9042,8 +8679,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9075,7 +8711,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 5, "n": 19 }, @@ -9087,8 +8722,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9120,7 +8754,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 5, "n": 19 }, @@ -9132,8 +8765,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9165,7 +8797,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 6, "n": 19 }, @@ -9177,8 +8808,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9210,7 +8840,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 6, "n": 19 }, @@ -9222,8 +8851,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9255,7 +8883,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 7, "n": 19 }, @@ -9267,8 +8894,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9300,7 +8926,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 7, "n": 19 }, @@ -9312,8 +8937,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9345,7 +8969,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 8, "n": 19 }, @@ -9357,8 +8980,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9390,7 +9012,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 8, "n": 19 }, @@ -9402,8 +9023,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9435,7 +9055,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 9, "n": 19 }, @@ -9447,8 +9066,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9480,7 +9098,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 9, "n": 19 }, @@ -9492,8 +9109,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9525,7 +9141,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 10, "n": 19 }, @@ -9537,8 +9152,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9570,7 +9184,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 10, "n": 19 }, @@ -9582,8 +9195,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9615,7 +9227,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 11, "n": 19 }, @@ -9627,8 +9238,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9660,7 +9270,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 11, "n": 19 }, @@ -9672,8 +9281,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9705,7 +9313,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 12, "n": 19 }, @@ -9717,8 +9324,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9750,7 +9356,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 12, "n": 19 }, @@ -9762,8 +9367,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9795,7 +9399,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 13, "n": 19 }, @@ -9807,8 +9410,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9840,7 +9442,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 13, "n": 19 }, @@ -9852,8 +9453,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9885,7 +9485,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 14, "n": 19 }, @@ -9897,8 +9496,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9930,7 +9528,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 14, "n": 19 }, @@ -9942,8 +9539,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -9975,7 +9571,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 15, "n": 19 }, @@ -9987,8 +9582,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10020,7 +9614,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 15, "n": 19 }, @@ -10032,8 +9625,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10065,7 +9657,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 16, "n": 19 }, @@ -10077,8 +9668,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10110,7 +9700,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 16, "n": 19 }, @@ -10122,8 +9711,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10155,7 +9743,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 17, "n": 19 }, @@ -10167,8 +9754,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10200,7 +9786,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 17, "n": 19 }, @@ -10212,8 +9797,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10245,7 +9829,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 18, "n": 19 }, @@ -10257,8 +9840,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10290,7 +9872,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 18, "n": 19 }, @@ -10302,8 +9883,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10335,7 +9915,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 17, "x": 18, "n": 19 }, @@ -10347,8 +9926,7 @@ "unique_hash": "gen_primes_f8", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10475,7 +10053,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 18, "n": 19 }, @@ -10487,8 +10064,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10520,7 +10096,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 18, "n": 19 }, @@ -10532,8 +10107,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10565,7 +10139,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 18, "n": 20 }, @@ -10577,8 +10150,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10610,7 +10182,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 18, "n": 20 }, @@ -10622,8 +10193,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10655,7 +10225,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 20 }, @@ -10667,8 +10236,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10700,7 +10268,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 20 }, @@ -10712,8 +10279,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10745,7 +10311,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 20 }, @@ -10757,8 +10322,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10790,7 +10354,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 21 }, @@ -10802,8 +10365,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10835,7 +10397,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 21 }, @@ -10847,8 +10408,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10880,7 +10440,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 21 }, @@ -10892,8 +10451,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10925,7 +10483,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 21 }, @@ -10937,8 +10494,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -10970,7 +10526,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 3, "n": 21 }, @@ -10982,8 +10537,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11015,7 +10569,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 3, "n": 21 }, @@ -11027,8 +10580,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11060,7 +10612,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 3, "n": 21 }, @@ -11072,8 +10623,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11105,7 +10655,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 3, "n": 22 }, @@ -11117,8 +10666,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11150,7 +10698,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 3, "n": 22 }, @@ -11162,8 +10709,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11195,7 +10741,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 22 }, @@ -11207,8 +10752,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11240,7 +10784,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 22 }, @@ -11252,8 +10795,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11285,7 +10827,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 22 }, @@ -11297,8 +10838,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11330,7 +10870,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 23 }, @@ -11342,8 +10881,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11375,7 +10913,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 23 }, @@ -11387,8 +10924,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11420,7 +10956,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 23 }, @@ -11432,8 +10967,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11465,7 +10999,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 2, "n": 23 }, @@ -11477,8 +11010,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11510,7 +11042,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 3, "n": 23 }, @@ -11522,8 +11053,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11555,7 +11085,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 3, "n": 23 }, @@ -11567,8 +11096,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11600,7 +11128,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 4, "n": 23 }, @@ -11612,8 +11139,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11645,7 +11171,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 4, "n": 23 }, @@ -11657,8 +11182,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11690,7 +11214,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 5, "n": 23 }, @@ -11702,8 +11225,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11735,7 +11257,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 5, "n": 23 }, @@ -11747,8 +11268,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11780,7 +11300,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 6, "n": 23 }, @@ -11792,8 +11311,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11825,7 +11343,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 6, "n": 23 }, @@ -11837,8 +11354,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11870,7 +11386,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 7, "n": 23 }, @@ -11882,8 +11397,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11915,7 +11429,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 7, "n": 23 }, @@ -11927,8 +11440,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -11960,7 +11472,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 8, "n": 23 }, @@ -11972,8 +11483,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12005,7 +11515,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 8, "n": 23 }, @@ -12017,8 +11526,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12050,7 +11558,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 9, "n": 23 }, @@ -12062,8 +11569,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12095,7 +11601,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 9, "n": 23 }, @@ -12107,8 +11612,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12140,7 +11644,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 10, "n": 23 }, @@ -12152,8 +11655,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12185,7 +11687,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 10, "n": 23 }, @@ -12197,8 +11698,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12230,7 +11730,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 11, "n": 23 }, @@ -12242,8 +11741,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12275,7 +11773,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 11, "n": 23 }, @@ -12287,8 +11784,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12320,7 +11816,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 12, "n": 23 }, @@ -12332,8 +11827,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12365,7 +11859,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 12, "n": 23 }, @@ -12377,8 +11870,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12410,7 +11902,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 13, "n": 23 }, @@ -12422,8 +11913,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12455,7 +11945,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 13, "n": 23 }, @@ -12467,8 +11956,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12500,7 +11988,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 14, "n": 23 }, @@ -12512,8 +11999,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12545,7 +12031,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 14, "n": 23 }, @@ -12557,8 +12042,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12590,7 +12074,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 15, "n": 23 }, @@ -12602,8 +12085,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12635,7 +12117,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 15, "n": 23 }, @@ -12647,8 +12128,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12680,7 +12160,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 16, "n": 23 }, @@ -12692,8 +12171,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12725,7 +12203,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 16, "n": 23 }, @@ -12737,8 +12214,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12770,7 +12246,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 17, "n": 23 }, @@ -12782,8 +12257,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12815,7 +12289,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 17, "n": 23 }, @@ -12827,8 +12300,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12860,7 +12332,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 18, "n": 23 }, @@ -12872,8 +12343,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12905,7 +12375,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 18, "n": 23 }, @@ -12917,8 +12386,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12950,7 +12418,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 19, "n": 23 }, @@ -12962,8 +12429,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -12995,7 +12461,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 19, "n": 23 }, @@ -13007,8 +12472,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], @@ -13040,7 +12504,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 19, "x": 20, "n": 23 }, @@ -13052,8 +12515,7 @@ "unique_hash": "gen_primes_f9", "ordered_varnames": [ "n", - "x", - "__return__" + "x" ] } ], diff --git a/v3/example-code/linked-lists/ll2.golden b/v3/example-code/linked-lists/ll2.golden index 6437333ed..3e52ba4a4 100644 --- a/v3/example-code/linked-lists/ll2.golden +++ b/v3/example-code/linked-lists/ll2.golden @@ -1324,10 +1324,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -1340,8 +1336,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -1438,20 +1433,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -1486,10 +1467,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -1502,8 +1479,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -1601,20 +1577,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -1649,10 +1611,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -1665,8 +1623,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -1764,20 +1721,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -1812,10 +1755,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -1828,8 +1767,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -1951,20 +1889,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2003,10 +1927,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -2019,8 +1939,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -2142,20 +2061,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2194,10 +2099,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -2210,8 +2111,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -2333,20 +2233,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2389,10 +2275,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -2405,8 +2287,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -2530,20 +2411,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2590,10 +2457,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -2606,8 +2469,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -2708,20 +2570,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2768,10 +2616,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -2784,8 +2628,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -2886,20 +2729,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2946,10 +2775,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -2962,8 +2787,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -3091,20 +2915,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3155,10 +2965,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -3171,8 +2977,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -3300,20 +3105,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3364,10 +3155,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -3380,8 +3167,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -3509,20 +3295,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3577,10 +3349,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -3593,8 +3361,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -3724,20 +3491,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3799,10 +3552,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -3815,8 +3564,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -3917,20 +3665,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3992,10 +3726,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -4008,8 +3738,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -4110,20 +3839,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -4185,10 +3900,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -4201,8 +3912,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -4330,20 +4040,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -4409,10 +4105,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -4425,8 +4117,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -4554,20 +4245,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -4633,10 +4310,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -4649,8 +4322,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -4778,20 +4450,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -4861,10 +4519,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -4877,8 +4531,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -5008,20 +4661,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -5098,10 +4737,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -5114,8 +4749,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -5216,20 +4850,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -5306,10 +4926,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -5322,8 +4938,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -5424,20 +5039,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -5514,10 +5115,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -5530,8 +5127,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -5659,20 +5255,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -5753,10 +5335,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -5769,8 +5347,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -5898,20 +5475,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -5992,10 +5555,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -6008,8 +5567,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -6137,20 +5695,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -6235,10 +5779,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -6251,8 +5791,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -6382,20 +5921,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -6487,10 +6012,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -6503,8 +6024,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -6591,31 +6111,17 @@ ] ] ], - "6": [ - "DICT", - [ - "data", - 1 - ], - [ - "next", - [ - "REF", - 5 - ] - ] - ], - "7": [ + "6": [ "DICT", [ - "__doc__", - null + "data", + 1 ], [ - "__init__", + "next", [ "REF", - 8 + 5 ] ] ], @@ -6710,10 +6216,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -6726,8 +6228,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -6828,20 +6329,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -6933,10 +6420,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -6949,8 +6432,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -7078,20 +6560,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -7187,10 +6655,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -7203,8 +6667,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -7332,20 +6795,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -7441,10 +6890,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -7457,8 +6902,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -7586,20 +7030,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -7699,10 +7129,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -7715,8 +7141,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -7846,20 +7271,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -7966,10 +7377,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -7982,8 +7389,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -8084,20 +7490,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -8204,10 +7596,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -8220,8 +7608,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -8322,20 +7709,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -8442,10 +7815,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -8458,8 +7827,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -8587,20 +7955,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -8711,10 +8065,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -8727,8 +8077,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -8856,20 +8205,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -8980,10 +8315,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -8996,8 +8327,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -9125,20 +8455,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -9253,10 +8569,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -9269,8 +8581,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] }, { @@ -9400,20 +8711,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -9535,10 +8832,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -9551,8 +8844,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -9653,20 +8945,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -9788,10 +9066,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 7 - ], "__init__": [ "REF", 8 @@ -9804,8 +9078,7 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__", - "__return__" + "__init__" ] } ], @@ -9906,20 +9179,6 @@ ] ] ], - "7": [ - "DICT", - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 8 - ] - ] - ], "8": [ "FUNCTION", "__init__(self, data, next)", diff --git a/v3/example-code/map.golden b/v3/example-code/map.golden index e0181c7ec..ea180d541 100644 --- a/v3/example-code/map.golden +++ b/v3/example-code/map.golden @@ -6879,10 +6879,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 15 - ], "lst": [ "REF", 3 @@ -6895,8 +6891,7 @@ "parent_frame_id_list": [], "unique_hash": "halveElements_f1_p_z", "ordered_varnames": [ - "lst", - "__return__" + "lst" ] } ], diff --git a/v3/example-code/oop_1.golden b/v3/example-code/oop_1.golden index c6febe7f9..6afd13b48 100644 --- a/v3/example-code/oop_1.golden +++ b/v3/example-code/oop_1.golden @@ -245,11 +245,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -261,8 +257,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -278,32 +273,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -349,11 +318,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -365,8 +330,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -386,32 +350,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -461,11 +399,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -477,8 +411,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -498,32 +431,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -573,11 +480,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -589,8 +492,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -610,32 +512,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -689,11 +565,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -705,8 +577,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -726,32 +597,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -809,11 +654,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -825,8 +666,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -846,32 +686,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -933,11 +747,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -949,8 +759,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -970,32 +779,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1057,11 +840,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -1073,8 +852,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -1094,32 +872,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1185,11 +937,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -1201,8 +949,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -1222,32 +969,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1313,11 +1034,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -1329,8 +1046,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -1370,32 +1086,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1461,11 +1151,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -1477,8 +1163,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -1518,32 +1203,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1609,11 +1268,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -1625,8 +1280,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -1668,32 +1322,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1759,11 +1387,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -1775,8 +1399,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -1796,32 +1419,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1887,11 +1484,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -1903,8 +1496,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -1944,32 +1536,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -2035,11 +1601,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -2051,8 +1613,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -2092,32 +1653,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -2183,11 +1718,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -2199,8 +1730,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -2242,32 +1772,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -2333,11 +1837,7 @@ "REF", 1 ], - "room": 501, - "__return__": [ - "REF", - 2 - ] + "room": 501 }, "is_highlighted": false, "is_parent": true, @@ -2349,8 +1849,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -2370,32 +1869,6 @@ "salutation(self)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", diff --git a/v3/example-code/oop_2.golden b/v3/example-code/oop_2.golden index a62b91d30..825326127 100644 --- a/v3/example-code/oop_2.golden +++ b/v3/example-code/oop_2.golden @@ -298,16 +298,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -324,8 +320,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -346,39 +341,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -425,16 +387,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -451,8 +409,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -501,39 +458,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -584,16 +508,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -610,8 +530,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -660,39 +579,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -743,16 +629,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -769,8 +651,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -819,39 +700,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -906,16 +754,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -932,8 +776,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -982,39 +825,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -1073,16 +883,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -1099,8 +905,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -1149,39 +954,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -1244,16 +1016,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -1270,8 +1038,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -1322,39 +1089,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -1422,16 +1156,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -1448,8 +1178,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -1474,39 +1203,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -1574,16 +1270,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -1600,8 +1292,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -1646,39 +1337,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -1746,16 +1404,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -1772,8 +1426,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -1818,39 +1471,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -1918,16 +1538,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -1944,8 +1560,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] }, { @@ -1992,39 +1607,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", @@ -2092,16 +1674,12 @@ "frame_id": 1, "encoded_locals": { "building": 34, - "__return__": [ - "REF", - 3 - ], - "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], + "room": 501, "__init__": [ "REF", 1 @@ -2118,8 +1696,7 @@ "building", "course", "room", - "salutation", - "__return__" + "salutation" ] } ], @@ -2144,39 +1721,6 @@ "salutation(self)", 1 ], - "3": [ - "DICT", - [ - "building", - 34 - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "salutation", - [ - "REF", - 2 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "4": [ "CLASS", "Staff601", diff --git a/v3/example-code/oop_inherit.golden b/v3/example-code/oop_inherit.golden index 8b3640434..50bd66a66 100644 --- a/v3/example-code/oop_inherit.golden +++ b/v3/example-code/oop_inherit.golden @@ -241,10 +241,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -261,8 +257,7 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] } ], @@ -278,32 +273,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -344,10 +313,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -364,8 +329,7 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { @@ -392,32 +356,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -458,10 +396,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -478,8 +412,7 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { @@ -506,32 +439,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -572,10 +479,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -592,8 +495,7 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { @@ -620,32 +522,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -686,10 +562,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -706,8 +578,7 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { @@ -738,32 +609,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -804,10 +649,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -824,8 +665,7 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { @@ -861,32 +701,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -932,10 +746,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -952,8 +762,7 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { @@ -999,32 +808,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1097,10 +880,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -1117,18 +896,13 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, - "__return__": [ - "REF", - 6 - ], "salutation": [ "REF", 5 @@ -1147,8 +921,7 @@ "ordered_varnames": [ "__init__", "salary", - "salutation", - "__return__" + "salutation" ] } ], @@ -1168,32 +941,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1228,31 +975,6 @@ "salutation(self)", 2 ], - "6": [ - "DICT", - [ - "salary", - 100000 - ], - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 4 - ] - ] - ], "7": [ "CLASS", "Prof601", @@ -1295,10 +1017,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -1315,18 +1033,13 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, - "__return__": [ - "REF", - 6 - ], "salutation": [ "REF", 5 @@ -1345,8 +1058,7 @@ "ordered_varnames": [ "__init__", "salary", - "salutation", - "__return__" + "salutation" ] }, { @@ -1390,32 +1102,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1450,31 +1136,6 @@ "salutation(self)", 2 ], - "6": [ - "DICT", - [ - "salary", - 100000 - ], - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 4 - ] - ] - ], "7": [ "CLASS", "Prof601", @@ -1521,10 +1182,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -1541,18 +1198,13 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, - "__return__": [ - "REF", - 6 - ], "salutation": [ "REF", 5 @@ -1571,8 +1223,7 @@ "ordered_varnames": [ "__init__", "salary", - "salutation", - "__return__" + "salutation" ] }, { @@ -1616,32 +1267,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1676,31 +1301,6 @@ "salutation(self)", 2 ], - "6": [ - "DICT", - [ - "salary", - 100000 - ], - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 4 - ] - ] - ], "7": [ "CLASS", "Prof601", @@ -1747,10 +1347,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -1767,18 +1363,13 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, - "__return__": [ - "REF", - 6 - ], "salutation": [ "REF", 5 @@ -1797,8 +1388,7 @@ "ordered_varnames": [ "__init__", "salary", - "salutation", - "__return__" + "salutation" ] }, { @@ -1842,32 +1432,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -1902,31 +1466,6 @@ "salutation(self)", 2 ], - "6": [ - "DICT", - [ - "salary", - 100000 - ], - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 4 - ] - ] - ], "7": [ "CLASS", "Prof601", @@ -1977,10 +1516,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -1997,18 +1532,13 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, - "__return__": [ - "REF", - 6 - ], "salutation": [ "REF", 5 @@ -2027,8 +1557,7 @@ "ordered_varnames": [ "__init__", "salary", - "salutation", - "__return__" + "salutation" ] }, { @@ -2094,32 +1623,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -2154,31 +1657,6 @@ "salutation(self)", 2 ], - "6": [ - "DICT", - [ - "salary", - 100000 - ], - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 4 - ] - ] - ], "7": [ "CLASS", "Prof601", @@ -2229,10 +1707,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -2249,18 +1723,13 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, - "__return__": [ - "REF", - 6 - ], "salutation": [ "REF", 5 @@ -2279,8 +1748,7 @@ "ordered_varnames": [ "__init__", "salary", - "salutation", - "__return__" + "salutation" ] }, { @@ -2346,32 +1814,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -2406,31 +1848,6 @@ "salutation(self)", 2 ], - "6": [ - "DICT", - [ - "salary", - 100000 - ], - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 4 - ] - ] - ], "7": [ "CLASS", "Prof601", @@ -2481,10 +1898,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -2501,18 +1914,13 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, - "__return__": [ - "REF", - 6 - ], "salutation": [ "REF", 5 @@ -2531,8 +1939,7 @@ "ordered_varnames": [ "__init__", "salary", - "salutation", - "__return__" + "salutation" ] }, { @@ -2600,32 +2007,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -2660,31 +2041,6 @@ "salutation(self)", 2 ], - "6": [ - "DICT", - [ - "salary", - 100000 - ], - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 4 - ] - ] - ], "7": [ "CLASS", "Prof601", @@ -2739,10 +2095,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -2759,18 +2111,13 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, - "__return__": [ - "REF", - 6 - ], "salutation": [ "REF", 5 @@ -2789,8 +2136,7 @@ "ordered_varnames": [ "__init__", "salary", - "salutation", - "__return__" + "salutation" ] }, { @@ -2836,32 +2182,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -2896,31 +2216,6 @@ "salutation(self)", 2 ], - "6": [ - "DICT", - [ - "salary", - 100000 - ], - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 4 - ] - ] - ], "7": [ "CLASS", "Prof601", @@ -2976,10 +2271,6 @@ "encoded_locals": { "building": 34, "course": "6.01", - "__return__": [ - "REF", - 2 - ], "giveRaise": [ "REF", 1 @@ -2996,18 +2287,13 @@ "building", "course", "giveRaise", - "room", - "__return__" + "room" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, - "__return__": [ - "REF", - 6 - ], "salutation": [ "REF", 5 @@ -3026,8 +2312,7 @@ "ordered_varnames": [ "__init__", "salary", - "salutation", - "__return__" + "salutation" ] } ], @@ -3051,32 +2336,6 @@ "giveRaise(self, percentage)", 1 ], - "2": [ - "DICT", - [ - "building", - 34 - ], - [ - "giveRaise", - [ - "REF", - 1 - ] - ], - [ - "room", - 501 - ], - [ - "course", - "6.01" - ], - [ - "__doc__", - null - ] - ], "3": [ "CLASS", "Staff601", @@ -3111,31 +2370,6 @@ "salutation(self)", 2 ], - "6": [ - "DICT", - [ - "salary", - 100000 - ], - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ], - [ - "__init__", - [ - "REF", - 4 - ] - ] - ], "7": [ "CLASS", "Prof601", diff --git a/v3/example-code/oop_small.golden b/v3/example-code/oop_small.golden index 53cc18a79..7187af575 100644 --- a/v3/example-code/oop_small.golden +++ b/v3/example-code/oop_small.golden @@ -682,10 +682,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -695,8 +691,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] } ], @@ -742,20 +737,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -791,10 +772,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -804,8 +781,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] } ], @@ -828,6 +804,10 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C" + ], "2": [ "CLASS", "A", @@ -855,20 +835,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -883,10 +849,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C" ] }, "line": 13, @@ -908,10 +870,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -921,8 +879,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] }, { @@ -965,6 +922,10 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C" + ], "2": [ "CLASS", "A", @@ -992,20 +953,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -1020,10 +967,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C" ] }, "line": 9, @@ -1045,10 +988,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -1058,8 +997,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] }, { @@ -1102,6 +1040,10 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C" + ], "2": [ "CLASS", "A", @@ -1129,20 +1071,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -1157,10 +1085,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C" ] }, "line": 10, @@ -1182,10 +1106,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -1195,8 +1115,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] }, { @@ -1241,6 +1160,10 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C" + ], "2": [ "CLASS", "A", @@ -1268,20 +1191,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -1296,10 +1205,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C" ] }, "line": 10, @@ -1321,10 +1226,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -1334,8 +1235,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] } ], @@ -1358,6 +1258,10 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C" + ], "2": [ "CLASS", "A", @@ -1385,20 +1289,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -1413,10 +1303,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C" ] }, "line": 14, @@ -1438,10 +1324,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -1451,8 +1333,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] } ], @@ -1475,6 +1356,14 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ], "2": [ "CLASS", "A", @@ -1502,20 +1391,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -1530,14 +1405,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] ] }, "line": 15, @@ -1559,10 +1426,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -1572,8 +1435,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] }, { @@ -1616,6 +1478,14 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ], "2": [ "CLASS", "A", @@ -1643,20 +1513,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -1671,14 +1527,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] ] }, "line": 9, @@ -1700,10 +1548,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -1713,8 +1557,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] }, { @@ -1757,6 +1600,14 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ], "2": [ "CLASS", "A", @@ -1784,20 +1635,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -1812,14 +1649,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] ] }, "line": 10, @@ -1841,10 +1670,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -1854,8 +1679,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] }, { @@ -1900,6 +1724,14 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ], "2": [ "CLASS", "A", @@ -1927,20 +1759,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -1955,14 +1773,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] ] }, "line": 10, @@ -1984,10 +1794,6 @@ "salutation": [ "REF", 5 - ], - "__return__": [ - "REF", - 6 ] }, "is_highlighted": false, @@ -1997,8 +1803,7 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation", - "__return__" + "salutation" ] } ], @@ -2021,6 +1826,14 @@ ] }, "heap": { + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ], "2": [ "CLASS", "A", @@ -2048,20 +1861,6 @@ "salutation(self)", 3 ], - "6": [ - "DICT", - [ - "salutation", - [ - "REF", - 5 - ] - ], - [ - "__doc__", - null - ] - ], "7": [ "CLASS", "C", @@ -2076,14 +1875,6 @@ 5 ] ] - ], - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] ] }, "line": 15, diff --git a/v3/example-code/sqrt.golden b/v3/example-code/sqrt.golden index f091f44c5..d062b58ee 100644 --- a/v3/example-code/sqrt.golden +++ b/v3/example-code/sqrt.golden @@ -8853,15 +8853,6 @@ { "frame_id": 1, "encoded_locals": { - "sqrt_iter": [ - "REF", - 5 - ], - "is_good_enough": [ - "REF", - 3 - ], - "__return__": 3.0001, "x": 9, "average": [ "REF", @@ -8870,6 +8861,14 @@ "improve": [ "REF", 4 + ], + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 ] }, "is_highlighted": false, @@ -8883,8 +8882,7 @@ "average", "improve", "is_good_enough", - "sqrt_iter", - "__return__" + "sqrt_iter" ] } ], diff --git a/v3/example-code/sum.golden b/v3/example-code/sum.golden index f216f1ac6..8ecbe11e5 100644 --- a/v3/example-code/sum.golden +++ b/v3/example-code/sum.golden @@ -10118,7 +10118,6 @@ "frame_id": 1, "encoded_locals": { "high": 10, - "__return__": 385, "low": 1 }, "is_highlighted": false, @@ -10129,8 +10128,7 @@ "unique_hash": "sumsquares_f1_p_z", "ordered_varnames": [ "low", - "high", - "__return__" + "high" ] } ], diff --git a/v3/tests/backend-tests/class_test.golden b/v3/tests/backend-tests/class_test.golden index 882d13ef9..d0770d384 100644 --- a/v3/tests/backend-tests/class_test.golden +++ b/v3/tests/backend-tests/class_test.golden @@ -189,10 +189,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -210,8 +206,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] } ], @@ -227,27 +222,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -286,10 +260,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -307,8 +277,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -348,27 +317,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -411,10 +359,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -432,8 +376,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -473,27 +416,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -536,10 +458,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -557,8 +475,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -598,27 +515,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -665,10 +561,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -686,8 +578,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -729,27 +620,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -801,10 +671,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -822,8 +688,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] } ], @@ -843,27 +708,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -915,10 +759,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -936,8 +776,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -977,27 +816,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -1049,10 +867,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -1070,8 +884,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -1111,27 +924,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -1183,10 +975,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -1204,8 +992,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -1247,27 +1034,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -1319,10 +1085,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -1340,8 +1102,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] } ], @@ -1361,27 +1122,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -1433,10 +1173,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -1454,8 +1190,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -1499,27 +1234,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -1575,10 +1289,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -1596,8 +1306,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -1641,27 +1350,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -1717,10 +1405,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -1738,8 +1422,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -1783,27 +1466,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -1863,10 +1525,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -1884,8 +1542,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -1931,27 +1588,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -2016,10 +1652,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -2037,8 +1669,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] } ], @@ -2062,27 +1693,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -2147,10 +1757,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -2168,8 +1774,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -2213,27 +1818,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -2298,10 +1882,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -2319,8 +1899,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -2364,27 +1943,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -2449,10 +2007,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -2470,8 +2024,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] }, { @@ -2517,27 +2070,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", @@ -2602,10 +2134,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "__str__": [ "REF", 3 @@ -2623,8 +2151,7 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__", - "__return__" + "__str__" ] } ], @@ -2648,27 +2175,6 @@ "__init__(self, x, y)", 1 ], - "2": [ - "DICT", - [ - "__str__", - [ - "REF", - 3 - ] - ], - [ - "__init__", - [ - "REF", - 1 - ] - ], - [ - "__doc__", - null - ] - ], "3": [ "FUNCTION", "__str__(self)", diff --git a/v3/tests/backend-tests/generator_use_test.golden b/v3/tests/backend-tests/generator_use_test.golden index 2276f75de..3639984d7 100644 --- a/v3/tests/backend-tests/generator_use_test.golden +++ b/v3/tests/backend-tests/generator_use_test.golden @@ -284,7 +284,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 1, "x": 1 }, "is_highlighted": true, @@ -294,8 +293,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f2", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -327,7 +325,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 1, "x": 1 }, "is_highlighted": true, @@ -337,8 +334,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f2", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -370,7 +366,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 1, "x": 3 }, "is_highlighted": true, @@ -380,8 +375,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f2", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -413,7 +407,6 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 1, "x": 3 }, "is_highlighted": true, @@ -423,8 +416,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f2", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -549,7 +541,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 3 }, "is_highlighted": true, @@ -559,8 +550,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f3", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -592,7 +582,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 3 }, "is_highlighted": true, @@ -602,8 +591,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f3", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -635,7 +623,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 5 }, "is_highlighted": true, @@ -645,8 +632,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f3", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -678,7 +664,6 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 3, "x": 5 }, "is_highlighted": true, @@ -688,8 +673,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f3", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -814,7 +798,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 5 }, "is_highlighted": true, @@ -824,8 +807,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f4", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -857,7 +839,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 5 }, "is_highlighted": true, @@ -867,8 +848,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f4", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -900,7 +880,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 7 }, "is_highlighted": true, @@ -910,8 +889,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f4", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -943,7 +921,6 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5, "x": 7 }, "is_highlighted": true, @@ -953,8 +930,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f4", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1079,7 +1055,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 7 }, "is_highlighted": true, @@ -1089,8 +1064,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f5", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1122,7 +1096,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 7 }, "is_highlighted": true, @@ -1132,8 +1105,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f5", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1165,7 +1137,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 9 }, "is_highlighted": true, @@ -1175,8 +1146,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f5", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1208,7 +1178,6 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 7, "x": 9 }, "is_highlighted": true, @@ -1218,8 +1187,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f5", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1344,7 +1312,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 9, "x": 9 }, "is_highlighted": true, @@ -1354,8 +1321,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f6", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1387,7 +1353,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 9, "x": 9 }, "is_highlighted": true, @@ -1397,8 +1362,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f6", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1430,7 +1394,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 9, "x": 11 }, "is_highlighted": true, @@ -1440,8 +1403,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f6", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1473,7 +1435,6 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 9, "x": 11 }, "is_highlighted": true, @@ -1483,8 +1444,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f6", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1609,7 +1569,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 11, "x": 11 }, "is_highlighted": true, @@ -1619,8 +1578,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f7", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1652,7 +1610,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 11, "x": 11 }, "is_highlighted": true, @@ -1662,8 +1619,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f7", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1695,7 +1651,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 11, "x": 13 }, "is_highlighted": true, @@ -1705,8 +1660,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f7", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1738,7 +1692,6 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 11, "x": 13 }, "is_highlighted": true, @@ -1748,8 +1701,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f7", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1874,7 +1826,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 13, "x": 13 }, "is_highlighted": true, @@ -1884,8 +1835,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f8", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1917,7 +1867,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 13, "x": 13 }, "is_highlighted": true, @@ -1927,8 +1876,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f8", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -1960,7 +1908,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 13, "x": 15 }, "is_highlighted": true, @@ -1970,8 +1917,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f8", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2003,7 +1949,6 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 13, "x": 15 }, "is_highlighted": true, @@ -2013,8 +1958,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f8", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2139,7 +2083,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 15, "x": 15 }, "is_highlighted": true, @@ -2149,8 +2092,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f9", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2182,7 +2124,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 15, "x": 15 }, "is_highlighted": true, @@ -2192,8 +2133,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f9", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2225,7 +2165,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 15, "x": 17 }, "is_highlighted": true, @@ -2235,8 +2174,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f9", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2268,7 +2206,6 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 15, "x": 17 }, "is_highlighted": true, @@ -2278,8 +2215,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f9", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2404,7 +2340,6 @@ { "frame_id": 10, "encoded_locals": { - "__return__": 17, "x": 17 }, "is_highlighted": true, @@ -2414,8 +2349,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f10", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2447,7 +2381,6 @@ { "frame_id": 10, "encoded_locals": { - "__return__": 17, "x": 17 }, "is_highlighted": true, @@ -2457,8 +2390,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f10", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2490,7 +2422,6 @@ { "frame_id": 10, "encoded_locals": { - "__return__": 17, "x": 19 }, "is_highlighted": true, @@ -2500,8 +2431,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f10", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2533,7 +2463,6 @@ { "frame_id": 10, "encoded_locals": { - "__return__": 17, "x": 19 }, "is_highlighted": true, @@ -2543,8 +2472,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f10", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2669,7 +2597,6 @@ { "frame_id": 11, "encoded_locals": { - "__return__": 19, "x": 19 }, "is_highlighted": true, @@ -2679,8 +2606,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f11", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2712,7 +2638,6 @@ { "frame_id": 11, "encoded_locals": { - "__return__": 19, "x": 19 }, "is_highlighted": true, @@ -2722,8 +2647,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f11", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2755,7 +2679,6 @@ { "frame_id": 11, "encoded_locals": { - "__return__": 19, "x": 21 }, "is_highlighted": true, @@ -2765,8 +2688,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f11", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2798,7 +2720,6 @@ { "frame_id": 11, "encoded_locals": { - "__return__": 19, "x": 21 }, "is_highlighted": true, @@ -2808,8 +2729,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f11", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2934,7 +2854,6 @@ { "frame_id": 12, "encoded_locals": { - "__return__": 21, "x": 21 }, "is_highlighted": true, @@ -2944,8 +2863,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f12", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -2977,7 +2895,6 @@ { "frame_id": 12, "encoded_locals": { - "__return__": 21, "x": 21 }, "is_highlighted": true, @@ -2987,8 +2904,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f12", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3020,7 +2936,6 @@ { "frame_id": 12, "encoded_locals": { - "__return__": 21, "x": 23 }, "is_highlighted": true, @@ -3030,8 +2945,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f12", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3063,7 +2977,6 @@ { "frame_id": 12, "encoded_locals": { - "__return__": 21, "x": 23 }, "is_highlighted": true, @@ -3073,8 +2986,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f12", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3199,7 +3111,6 @@ { "frame_id": 13, "encoded_locals": { - "__return__": 23, "x": 23 }, "is_highlighted": true, @@ -3209,8 +3120,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f13", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3242,7 +3152,6 @@ { "frame_id": 13, "encoded_locals": { - "__return__": 23, "x": 23 }, "is_highlighted": true, @@ -3252,8 +3161,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f13", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3285,7 +3193,6 @@ { "frame_id": 13, "encoded_locals": { - "__return__": 23, "x": 25 }, "is_highlighted": true, @@ -3295,8 +3202,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f13", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3328,7 +3234,6 @@ { "frame_id": 13, "encoded_locals": { - "__return__": 23, "x": 25 }, "is_highlighted": true, @@ -3338,8 +3243,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f13", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3464,7 +3368,6 @@ { "frame_id": 14, "encoded_locals": { - "__return__": 25, "x": 25 }, "is_highlighted": true, @@ -3474,8 +3377,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f14", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3507,7 +3409,6 @@ { "frame_id": 14, "encoded_locals": { - "__return__": 25, "x": 25 }, "is_highlighted": true, @@ -3517,8 +3418,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f14", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3550,7 +3450,6 @@ { "frame_id": 14, "encoded_locals": { - "__return__": 25, "x": 27 }, "is_highlighted": true, @@ -3560,8 +3459,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f14", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3593,7 +3491,6 @@ { "frame_id": 14, "encoded_locals": { - "__return__": 25, "x": 27 }, "is_highlighted": true, @@ -3603,8 +3500,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f14", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3729,7 +3625,6 @@ { "frame_id": 15, "encoded_locals": { - "__return__": 27, "x": 27 }, "is_highlighted": true, @@ -3739,8 +3634,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f15", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3772,7 +3666,6 @@ { "frame_id": 15, "encoded_locals": { - "__return__": 27, "x": 27 }, "is_highlighted": true, @@ -3782,8 +3675,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f15", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3815,7 +3707,6 @@ { "frame_id": 15, "encoded_locals": { - "__return__": 27, "x": 29 }, "is_highlighted": true, @@ -3825,8 +3716,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f15", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3858,7 +3748,6 @@ { "frame_id": 15, "encoded_locals": { - "__return__": 27, "x": 29 }, "is_highlighted": true, @@ -3868,8 +3757,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f15", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -3994,7 +3882,6 @@ { "frame_id": 16, "encoded_locals": { - "__return__": 29, "x": 29 }, "is_highlighted": true, @@ -4004,8 +3891,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f16", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4037,7 +3923,6 @@ { "frame_id": 16, "encoded_locals": { - "__return__": 29, "x": 29 }, "is_highlighted": true, @@ -4047,8 +3932,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f16", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4080,7 +3964,6 @@ { "frame_id": 16, "encoded_locals": { - "__return__": 29, "x": 31 }, "is_highlighted": true, @@ -4090,8 +3973,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f16", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4123,7 +4005,6 @@ { "frame_id": 16, "encoded_locals": { - "__return__": 29, "x": 31 }, "is_highlighted": true, @@ -4133,8 +4014,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f16", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4259,7 +4139,6 @@ { "frame_id": 17, "encoded_locals": { - "__return__": 31, "x": 31 }, "is_highlighted": true, @@ -4269,8 +4148,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f17", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4302,7 +4180,6 @@ { "frame_id": 17, "encoded_locals": { - "__return__": 31, "x": 31 }, "is_highlighted": true, @@ -4312,8 +4189,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f17", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4345,7 +4221,6 @@ { "frame_id": 17, "encoded_locals": { - "__return__": 31, "x": 33 }, "is_highlighted": true, @@ -4355,8 +4230,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f17", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4388,7 +4262,6 @@ { "frame_id": 17, "encoded_locals": { - "__return__": 31, "x": 33 }, "is_highlighted": true, @@ -4398,8 +4271,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f17", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4524,7 +4396,6 @@ { "frame_id": 18, "encoded_locals": { - "__return__": 33, "x": 33 }, "is_highlighted": true, @@ -4534,8 +4405,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f18", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4567,7 +4437,6 @@ { "frame_id": 18, "encoded_locals": { - "__return__": 33, "x": 33 }, "is_highlighted": true, @@ -4577,8 +4446,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f18", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4610,7 +4478,6 @@ { "frame_id": 18, "encoded_locals": { - "__return__": 33, "x": 35 }, "is_highlighted": true, @@ -4620,8 +4487,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f18", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4653,7 +4519,6 @@ { "frame_id": 18, "encoded_locals": { - "__return__": 33, "x": 35 }, "is_highlighted": true, @@ -4663,8 +4528,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f18", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4789,7 +4653,6 @@ { "frame_id": 19, "encoded_locals": { - "__return__": 35, "x": 35 }, "is_highlighted": true, @@ -4799,8 +4662,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f19", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4832,7 +4694,6 @@ { "frame_id": 19, "encoded_locals": { - "__return__": 35, "x": 35 }, "is_highlighted": true, @@ -4842,8 +4703,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f19", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4875,7 +4735,6 @@ { "frame_id": 19, "encoded_locals": { - "__return__": 35, "x": 37 }, "is_highlighted": true, @@ -4885,8 +4744,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f19", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -4918,7 +4776,6 @@ { "frame_id": 19, "encoded_locals": { - "__return__": 35, "x": 37 }, "is_highlighted": true, @@ -4928,8 +4785,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f19", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5054,7 +4910,6 @@ { "frame_id": 20, "encoded_locals": { - "__return__": 37, "x": 37 }, "is_highlighted": true, @@ -5064,8 +4919,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f20", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5097,7 +4951,6 @@ { "frame_id": 20, "encoded_locals": { - "__return__": 37, "x": 37 }, "is_highlighted": true, @@ -5107,8 +4960,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f20", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5140,7 +4992,6 @@ { "frame_id": 20, "encoded_locals": { - "__return__": 37, "x": 39 }, "is_highlighted": true, @@ -5150,8 +5001,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f20", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5183,7 +5033,6 @@ { "frame_id": 20, "encoded_locals": { - "__return__": 37, "x": 39 }, "is_highlighted": true, @@ -5193,8 +5042,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f20", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5319,7 +5167,6 @@ { "frame_id": 21, "encoded_locals": { - "__return__": 39, "x": 39 }, "is_highlighted": true, @@ -5329,8 +5176,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f21", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5362,7 +5208,6 @@ { "frame_id": 21, "encoded_locals": { - "__return__": 39, "x": 39 }, "is_highlighted": true, @@ -5372,8 +5217,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f21", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5405,7 +5249,6 @@ { "frame_id": 21, "encoded_locals": { - "__return__": 39, "x": 41 }, "is_highlighted": true, @@ -5415,8 +5258,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f21", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5448,7 +5290,6 @@ { "frame_id": 21, "encoded_locals": { - "__return__": 39, "x": 41 }, "is_highlighted": true, @@ -5458,8 +5299,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f21", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5584,7 +5424,6 @@ { "frame_id": 22, "encoded_locals": { - "__return__": 41, "x": 41 }, "is_highlighted": true, @@ -5594,8 +5433,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f22", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5627,7 +5465,6 @@ { "frame_id": 22, "encoded_locals": { - "__return__": 41, "x": 41 }, "is_highlighted": true, @@ -5637,8 +5474,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f22", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5670,7 +5506,6 @@ { "frame_id": 22, "encoded_locals": { - "__return__": 41, "x": 43 }, "is_highlighted": true, @@ -5680,8 +5515,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f22", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5713,7 +5547,6 @@ { "frame_id": 22, "encoded_locals": { - "__return__": 41, "x": 43 }, "is_highlighted": true, @@ -5723,8 +5556,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f22", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5849,7 +5681,6 @@ { "frame_id": 23, "encoded_locals": { - "__return__": 43, "x": 43 }, "is_highlighted": true, @@ -5859,8 +5690,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f23", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5892,7 +5722,6 @@ { "frame_id": 23, "encoded_locals": { - "__return__": 43, "x": 43 }, "is_highlighted": true, @@ -5902,8 +5731,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f23", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5935,7 +5763,6 @@ { "frame_id": 23, "encoded_locals": { - "__return__": 43, "x": 45 }, "is_highlighted": true, @@ -5945,8 +5772,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f23", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -5978,7 +5804,6 @@ { "frame_id": 23, "encoded_locals": { - "__return__": 43, "x": 45 }, "is_highlighted": true, @@ -5988,8 +5813,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f23", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6114,7 +5938,6 @@ { "frame_id": 24, "encoded_locals": { - "__return__": 45, "x": 45 }, "is_highlighted": true, @@ -6124,8 +5947,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f24", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6157,7 +5979,6 @@ { "frame_id": 24, "encoded_locals": { - "__return__": 45, "x": 45 }, "is_highlighted": true, @@ -6167,8 +5988,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f24", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6200,7 +6020,6 @@ { "frame_id": 24, "encoded_locals": { - "__return__": 45, "x": 47 }, "is_highlighted": true, @@ -6210,8 +6029,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f24", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6243,7 +6061,6 @@ { "frame_id": 24, "encoded_locals": { - "__return__": 45, "x": 47 }, "is_highlighted": true, @@ -6253,8 +6070,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f24", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6379,7 +6195,6 @@ { "frame_id": 25, "encoded_locals": { - "__return__": 47, "x": 47 }, "is_highlighted": true, @@ -6389,8 +6204,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f25", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6422,7 +6236,6 @@ { "frame_id": 25, "encoded_locals": { - "__return__": 47, "x": 47 }, "is_highlighted": true, @@ -6432,8 +6245,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f25", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6465,7 +6277,6 @@ { "frame_id": 25, "encoded_locals": { - "__return__": 47, "x": 49 }, "is_highlighted": true, @@ -6475,8 +6286,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f25", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6508,7 +6318,6 @@ { "frame_id": 25, "encoded_locals": { - "__return__": 47, "x": 49 }, "is_highlighted": true, @@ -6518,8 +6327,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f25", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6644,7 +6452,6 @@ { "frame_id": 26, "encoded_locals": { - "__return__": 49, "x": 49 }, "is_highlighted": true, @@ -6654,8 +6461,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f26", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6687,7 +6493,6 @@ { "frame_id": 26, "encoded_locals": { - "__return__": 49, "x": 49 }, "is_highlighted": true, @@ -6697,8 +6502,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f26", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6730,7 +6534,6 @@ { "frame_id": 26, "encoded_locals": { - "__return__": 49, "x": 51 }, "is_highlighted": true, @@ -6740,8 +6543,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f26", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6773,7 +6575,6 @@ { "frame_id": 26, "encoded_locals": { - "__return__": 49, "x": 51 }, "is_highlighted": true, @@ -6783,8 +6584,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f26", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6909,7 +6709,6 @@ { "frame_id": 27, "encoded_locals": { - "__return__": 51, "x": 51 }, "is_highlighted": true, @@ -6919,8 +6718,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f27", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6952,7 +6750,6 @@ { "frame_id": 27, "encoded_locals": { - "__return__": 51, "x": 51 }, "is_highlighted": true, @@ -6962,8 +6759,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f27", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -6995,7 +6791,6 @@ { "frame_id": 27, "encoded_locals": { - "__return__": 51, "x": 53 }, "is_highlighted": true, @@ -7005,8 +6800,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f27", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7038,7 +6832,6 @@ { "frame_id": 27, "encoded_locals": { - "__return__": 51, "x": 53 }, "is_highlighted": true, @@ -7048,8 +6841,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f27", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7174,7 +6966,6 @@ { "frame_id": 28, "encoded_locals": { - "__return__": 53, "x": 53 }, "is_highlighted": true, @@ -7184,8 +6975,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f28", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7217,7 +7007,6 @@ { "frame_id": 28, "encoded_locals": { - "__return__": 53, "x": 53 }, "is_highlighted": true, @@ -7227,8 +7016,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f28", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7260,7 +7048,6 @@ { "frame_id": 28, "encoded_locals": { - "__return__": 53, "x": 55 }, "is_highlighted": true, @@ -7270,8 +7057,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f28", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7303,7 +7089,6 @@ { "frame_id": 28, "encoded_locals": { - "__return__": 53, "x": 55 }, "is_highlighted": true, @@ -7313,8 +7098,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f28", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7439,7 +7223,6 @@ { "frame_id": 29, "encoded_locals": { - "__return__": 55, "x": 55 }, "is_highlighted": true, @@ -7449,8 +7232,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f29", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7482,7 +7264,6 @@ { "frame_id": 29, "encoded_locals": { - "__return__": 55, "x": 55 }, "is_highlighted": true, @@ -7492,8 +7273,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f29", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7525,7 +7305,6 @@ { "frame_id": 29, "encoded_locals": { - "__return__": 55, "x": 57 }, "is_highlighted": true, @@ -7535,8 +7314,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f29", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7568,7 +7346,6 @@ { "frame_id": 29, "encoded_locals": { - "__return__": 55, "x": 57 }, "is_highlighted": true, @@ -7578,8 +7355,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f29", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7704,7 +7480,6 @@ { "frame_id": 30, "encoded_locals": { - "__return__": 57, "x": 57 }, "is_highlighted": true, @@ -7714,8 +7489,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f30", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7747,7 +7521,6 @@ { "frame_id": 30, "encoded_locals": { - "__return__": 57, "x": 57 }, "is_highlighted": true, @@ -7757,8 +7530,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f30", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7790,7 +7562,6 @@ { "frame_id": 30, "encoded_locals": { - "__return__": 57, "x": 59 }, "is_highlighted": true, @@ -7800,8 +7571,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f30", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7833,7 +7603,6 @@ { "frame_id": 30, "encoded_locals": { - "__return__": 57, "x": 59 }, "is_highlighted": true, @@ -7843,8 +7612,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f30", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -7969,7 +7737,6 @@ { "frame_id": 31, "encoded_locals": { - "__return__": 59, "x": 59 }, "is_highlighted": true, @@ -7979,8 +7746,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f31", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8012,7 +7778,6 @@ { "frame_id": 31, "encoded_locals": { - "__return__": 59, "x": 59 }, "is_highlighted": true, @@ -8022,8 +7787,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f31", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8055,7 +7819,6 @@ { "frame_id": 31, "encoded_locals": { - "__return__": 59, "x": 61 }, "is_highlighted": true, @@ -8065,8 +7828,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f31", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8098,7 +7860,6 @@ { "frame_id": 31, "encoded_locals": { - "__return__": 59, "x": 61 }, "is_highlighted": true, @@ -8108,8 +7869,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f31", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8234,7 +7994,6 @@ { "frame_id": 32, "encoded_locals": { - "__return__": 61, "x": 61 }, "is_highlighted": true, @@ -8244,8 +8003,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f32", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8277,7 +8035,6 @@ { "frame_id": 32, "encoded_locals": { - "__return__": 61, "x": 61 }, "is_highlighted": true, @@ -8287,8 +8044,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f32", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8320,7 +8076,6 @@ { "frame_id": 32, "encoded_locals": { - "__return__": 61, "x": 63 }, "is_highlighted": true, @@ -8330,8 +8085,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f32", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8363,7 +8117,6 @@ { "frame_id": 32, "encoded_locals": { - "__return__": 61, "x": 63 }, "is_highlighted": true, @@ -8373,8 +8126,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f32", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8499,7 +8251,6 @@ { "frame_id": 33, "encoded_locals": { - "__return__": 63, "x": 63 }, "is_highlighted": true, @@ -8509,8 +8260,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f33", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8542,7 +8292,6 @@ { "frame_id": 33, "encoded_locals": { - "__return__": 63, "x": 63 }, "is_highlighted": true, @@ -8552,8 +8301,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f33", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8585,7 +8333,6 @@ { "frame_id": 33, "encoded_locals": { - "__return__": 63, "x": 65 }, "is_highlighted": true, @@ -8595,8 +8342,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f33", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8628,7 +8374,6 @@ { "frame_id": 33, "encoded_locals": { - "__return__": 63, "x": 65 }, "is_highlighted": true, @@ -8638,8 +8383,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f33", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8764,7 +8508,6 @@ { "frame_id": 34, "encoded_locals": { - "__return__": 65, "x": 65 }, "is_highlighted": true, @@ -8774,8 +8517,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f34", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8807,7 +8549,6 @@ { "frame_id": 34, "encoded_locals": { - "__return__": 65, "x": 65 }, "is_highlighted": true, @@ -8817,8 +8558,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f34", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8850,7 +8590,6 @@ { "frame_id": 34, "encoded_locals": { - "__return__": 65, "x": 67 }, "is_highlighted": true, @@ -8860,8 +8599,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f34", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -8893,7 +8631,6 @@ { "frame_id": 34, "encoded_locals": { - "__return__": 65, "x": 67 }, "is_highlighted": true, @@ -8903,8 +8640,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f34", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9029,7 +8765,6 @@ { "frame_id": 35, "encoded_locals": { - "__return__": 67, "x": 67 }, "is_highlighted": true, @@ -9039,8 +8774,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f35", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9072,7 +8806,6 @@ { "frame_id": 35, "encoded_locals": { - "__return__": 67, "x": 67 }, "is_highlighted": true, @@ -9082,8 +8815,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f35", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9115,7 +8847,6 @@ { "frame_id": 35, "encoded_locals": { - "__return__": 67, "x": 69 }, "is_highlighted": true, @@ -9125,8 +8856,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f35", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9158,7 +8888,6 @@ { "frame_id": 35, "encoded_locals": { - "__return__": 67, "x": 69 }, "is_highlighted": true, @@ -9168,8 +8897,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f35", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9294,7 +9022,6 @@ { "frame_id": 36, "encoded_locals": { - "__return__": 69, "x": 69 }, "is_highlighted": true, @@ -9304,8 +9031,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f36", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9337,7 +9063,6 @@ { "frame_id": 36, "encoded_locals": { - "__return__": 69, "x": 69 }, "is_highlighted": true, @@ -9347,8 +9072,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f36", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9380,7 +9104,6 @@ { "frame_id": 36, "encoded_locals": { - "__return__": 69, "x": 71 }, "is_highlighted": true, @@ -9390,8 +9113,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f36", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9423,7 +9145,6 @@ { "frame_id": 36, "encoded_locals": { - "__return__": 69, "x": 71 }, "is_highlighted": true, @@ -9433,8 +9154,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f36", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9559,7 +9279,6 @@ { "frame_id": 37, "encoded_locals": { - "__return__": 71, "x": 71 }, "is_highlighted": true, @@ -9569,8 +9288,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f37", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9602,7 +9320,6 @@ { "frame_id": 37, "encoded_locals": { - "__return__": 71, "x": 71 }, "is_highlighted": true, @@ -9612,8 +9329,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f37", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9645,7 +9361,6 @@ { "frame_id": 37, "encoded_locals": { - "__return__": 71, "x": 73 }, "is_highlighted": true, @@ -9655,8 +9370,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f37", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9688,7 +9402,6 @@ { "frame_id": 37, "encoded_locals": { - "__return__": 71, "x": 73 }, "is_highlighted": true, @@ -9698,8 +9411,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f37", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9824,7 +9536,6 @@ { "frame_id": 38, "encoded_locals": { - "__return__": 73, "x": 73 }, "is_highlighted": true, @@ -9834,8 +9545,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f38", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9867,7 +9577,6 @@ { "frame_id": 38, "encoded_locals": { - "__return__": 73, "x": 73 }, "is_highlighted": true, @@ -9877,8 +9586,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f38", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9910,7 +9618,6 @@ { "frame_id": 38, "encoded_locals": { - "__return__": 73, "x": 75 }, "is_highlighted": true, @@ -9920,8 +9627,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f38", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -9953,7 +9659,6 @@ { "frame_id": 38, "encoded_locals": { - "__return__": 73, "x": 75 }, "is_highlighted": true, @@ -9963,8 +9668,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f38", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10089,7 +9793,6 @@ { "frame_id": 39, "encoded_locals": { - "__return__": 75, "x": 75 }, "is_highlighted": true, @@ -10099,8 +9802,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f39", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10132,7 +9834,6 @@ { "frame_id": 39, "encoded_locals": { - "__return__": 75, "x": 75 }, "is_highlighted": true, @@ -10142,8 +9843,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f39", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10175,7 +9875,6 @@ { "frame_id": 39, "encoded_locals": { - "__return__": 75, "x": 77 }, "is_highlighted": true, @@ -10185,8 +9884,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f39", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10218,7 +9916,6 @@ { "frame_id": 39, "encoded_locals": { - "__return__": 75, "x": 77 }, "is_highlighted": true, @@ -10228,8 +9925,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f39", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10354,7 +10050,6 @@ { "frame_id": 40, "encoded_locals": { - "__return__": 77, "x": 77 }, "is_highlighted": true, @@ -10364,8 +10059,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f40", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10397,7 +10091,6 @@ { "frame_id": 40, "encoded_locals": { - "__return__": 77, "x": 77 }, "is_highlighted": true, @@ -10407,8 +10100,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f40", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10440,7 +10132,6 @@ { "frame_id": 40, "encoded_locals": { - "__return__": 77, "x": 79 }, "is_highlighted": true, @@ -10450,8 +10141,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f40", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10483,7 +10173,6 @@ { "frame_id": 40, "encoded_locals": { - "__return__": 77, "x": 79 }, "is_highlighted": true, @@ -10493,8 +10182,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f40", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10619,7 +10307,6 @@ { "frame_id": 41, "encoded_locals": { - "__return__": 79, "x": 79 }, "is_highlighted": true, @@ -10629,8 +10316,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f41", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10662,7 +10348,6 @@ { "frame_id": 41, "encoded_locals": { - "__return__": 79, "x": 79 }, "is_highlighted": true, @@ -10672,8 +10357,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f41", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10705,7 +10389,6 @@ { "frame_id": 41, "encoded_locals": { - "__return__": 79, "x": 81 }, "is_highlighted": true, @@ -10715,8 +10398,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f41", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10748,7 +10430,6 @@ { "frame_id": 41, "encoded_locals": { - "__return__": 79, "x": 81 }, "is_highlighted": true, @@ -10758,8 +10439,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f41", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10884,7 +10564,6 @@ { "frame_id": 42, "encoded_locals": { - "__return__": 81, "x": 81 }, "is_highlighted": true, @@ -10894,8 +10573,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f42", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10927,7 +10605,6 @@ { "frame_id": 42, "encoded_locals": { - "__return__": 81, "x": 81 }, "is_highlighted": true, @@ -10937,8 +10614,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f42", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -10970,7 +10646,6 @@ { "frame_id": 42, "encoded_locals": { - "__return__": 81, "x": 83 }, "is_highlighted": true, @@ -10980,8 +10655,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f42", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -11013,7 +10687,6 @@ { "frame_id": 42, "encoded_locals": { - "__return__": 81, "x": 83 }, "is_highlighted": true, @@ -11023,8 +10696,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f42", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -11149,7 +10821,6 @@ { "frame_id": 43, "encoded_locals": { - "__return__": 83, "x": 83 }, "is_highlighted": true, @@ -11159,8 +10830,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f43", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -11192,7 +10862,6 @@ { "frame_id": 43, "encoded_locals": { - "__return__": 83, "x": 83 }, "is_highlighted": true, @@ -11202,8 +10871,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f43", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -11235,7 +10903,6 @@ { "frame_id": 43, "encoded_locals": { - "__return__": 83, "x": 85 }, "is_highlighted": true, @@ -11245,8 +10912,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f43", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], @@ -11278,7 +10944,6 @@ { "frame_id": 43, "encoded_locals": { - "__return__": 83, "x": 85 }, "is_highlighted": true, @@ -11288,8 +10953,7 @@ "parent_frame_id_list": [], "unique_hash": "gen_odds_f43", "ordered_varnames": [ - "x", - "__return__" + "x" ] } ], diff --git a/v3/tests/backend-tests/john-compose.golden b/v3/tests/backend-tests/john-compose.golden index 9acb62b04..1272f090b 100644 --- a/v3/tests/backend-tests/john-compose.golden +++ b/v3/tests/backend-tests/john-compose.golden @@ -226,10 +226,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -247,8 +243,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] } ], @@ -298,10 +293,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -319,8 +310,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] }, { @@ -387,10 +377,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -408,8 +394,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] }, { @@ -476,10 +461,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -497,8 +478,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] }, { @@ -580,10 +560,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -601,8 +577,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] }, { @@ -684,10 +659,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -705,8 +676,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] }, { @@ -790,10 +760,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -811,8 +777,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] }, { @@ -894,10 +859,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -915,8 +876,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] }, { @@ -998,10 +958,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -1019,8 +975,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] }, { @@ -1104,10 +1059,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -1125,8 +1076,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] }, { @@ -1196,10 +1146,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 4 - ], "g": [ "REF", 2 @@ -1217,8 +1163,7 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g", - "__return__" + "g" ] } ], diff --git a/v3/tests/backend-tests/lambda_1.golden b/v3/tests/backend-tests/lambda_1.golden index 329be1475..dbc526b25 100644 --- a/v3/tests/backend-tests/lambda_1.golden +++ b/v3/tests/backend-tests/lambda_1.golden @@ -5448,7 +5448,6 @@ "frame_id": 1, "encoded_locals": { "high": 5, - "__return__": 55, "low": 1 }, "is_highlighted": false, @@ -5459,8 +5458,7 @@ "unique_hash": "sumsquares_f1_p_z", "ordered_varnames": [ "low", - "high", - "__return__" + "high" ] } ], diff --git a/v3/tests/backend-tests/ling-scheme-2.golden b/v3/tests/backend-tests/ling-scheme-2.golden index add7f461f..c5c7075fa 100644 --- a/v3/tests/backend-tests/ling-scheme-2.golden +++ b/v3/tests/backend-tests/ling-scheme-2.golden @@ -3728,10 +3728,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 9 - ], "loop": [ "REF", 2 @@ -3746,8 +3742,7 @@ "unique_hash": "iota_f1_p_z", "ordered_varnames": [ "n", - "loop", - "__return__" + "loop" ] } ], diff --git a/v3/tests/backend-tests/ling-scheme-3.golden b/v3/tests/backend-tests/ling-scheme-3.golden index be3b46e8e..2222c5742 100644 --- a/v3/tests/backend-tests/ling-scheme-3.golden +++ b/v3/tests/backend-tests/ling-scheme-3.golden @@ -8513,10 +8513,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 28 - ], "xs": [ "REF", 4 @@ -8529,8 +8525,7 @@ "parent_frame_id_list": [], "unique_hash": "pairs_f1_p_z", "ordered_varnames": [ - "xs", - "__return__" + "xs" ] } ], diff --git a/v3/tests/backend-tests/newstyle_class.golden b/v3/tests/backend-tests/newstyle_class.golden index f428115c5..3718cc971 100644 --- a/v3/tests/backend-tests/newstyle_class.golden +++ b/v3/tests/backend-tests/newstyle_class.golden @@ -223,10 +223,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -246,8 +242,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] } ], @@ -263,27 +258,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -326,10 +300,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -349,8 +319,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] }, { @@ -386,27 +355,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -453,10 +401,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -476,8 +420,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] }, { @@ -513,27 +456,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -580,10 +502,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -603,8 +521,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] }, { @@ -642,27 +559,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -714,10 +610,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -737,8 +629,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] } ], @@ -758,27 +649,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -830,10 +700,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -853,8 +719,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] }, { @@ -894,27 +759,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -966,10 +810,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -989,8 +829,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] }, { @@ -1030,27 +869,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -1102,10 +920,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -1125,8 +939,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] }, { @@ -1168,27 +981,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -1244,10 +1036,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -1267,8 +1055,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] } ], @@ -1288,27 +1075,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -1364,10 +1130,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -1387,8 +1149,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] } ], @@ -1408,27 +1169,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", @@ -1484,10 +1224,6 @@ { "frame_id": 1, "encoded_locals": { - "__return__": [ - "REF", - 2 - ], "x": [ "REF", 3 @@ -1507,8 +1243,7 @@ "ordered_varnames": [ "__init__", "bla", - "x", - "__return__" + "x" ] } ], @@ -1528,27 +1263,6 @@ "__init__(self)", 1 ], - "2": [ - "DICT", - [ - "x", - [ - "REF", - 3 - ] - ], - [ - "bla", - "A" - ], - [ - "__init__", - [ - "REF", - 1 - ] - ] - ], "3": [ "FUNCTION", "x(self)", From 5a0926ba0990809eb2876eab27675f63dccd4624 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 18:00:58 -0700 Subject: [PATCH 219/502] tiny --- v3/js/pytutor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 3b0e60386..08a55005c 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -1996,7 +1996,7 @@ ExecutionVisualizer.prototype.redrawConnectors = function() { var highlightedLineColor = '#e4faeb'; var highlightedLineBorderColor = '#005583'; -var highlightedLineLighterColor = '#edfff2'; +var highlightedLineLighterColor = '#effff3'; var visitedLineColor = highlightedLineBorderColor; From 8443a07084420cd6befd3591cfe9e003bdd5a968 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 23:06:03 -0700 Subject: [PATCH 220/502] updated code examples to work on both Python 2 and 3 --- v3/example-code/aliasing.golden | 2 +- v3/example-code/aliasing.txt | 2 +- v3/example-code/closures/lambda-param.golden | 2 +- v3/example-code/closures/lambda-param.txt | 2 +- v3/example-code/fact.golden | 2 +- v3/example-code/fact.txt | 2 +- v3/example-code/fib.golden | 2 +- v3/example-code/fib.txt | 4 ++-- v3/example-code/filter.golden | 2 +- v3/example-code/filter.txt | 4 ++-- v3/example-code/gen_primes.golden | 2 +- v3/example-code/gen_primes.txt | 2 +- v3/example-code/ins_sort.golden | 2 +- v3/example-code/ins_sort.txt | 2 +- v3/example-code/oop_1.golden | 2 +- v3/example-code/oop_1.txt | 10 +++++----- v3/example-code/oop_2.golden | 2 +- v3/example-code/oop_2.txt | 2 +- v3/example-code/oop_small.golden | 2 +- v3/example-code/oop_small.txt | 4 ++-- v3/example-code/py_tutorial.golden | 2 +- v3/example-code/py_tutorial.txt | 16 ++++++++-------- v3/example-code/strtok.golden | 2 +- v3/example-code/strtok.txt | 2 +- v3/example-code/sum.golden | 2 +- v3/example-code/sum.txt | 2 +- v3/example-code/wentworth_gcd.golden | 2 +- v3/example-code/wentworth_gcd.txt | 10 +++++----- v3/example-code/wentworth_sumList.golden | 2 +- v3/example-code/wentworth_sumList.txt | 8 ++++---- v3/example-code/wentworth_try_finally.golden | 2 +- v3/example-code/wentworth_try_finally.txt | 6 +++--- 32 files changed, 55 insertions(+), 55 deletions(-) diff --git a/v3/example-code/aliasing.golden b/v3/example-code/aliasing.golden index f674bbff3..d0f3f9997 100644 --- a/v3/example-code/aliasing.golden +++ b/v3/example-code/aliasing.golden @@ -1,5 +1,5 @@ { - "code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print myLst\n\nfoo(x)\nfoo(z)\n", + "code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print(myLst)\n\nfoo(x)\nfoo(z)\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/aliasing.txt b/v3/example-code/aliasing.txt index eb326fc5d..459b370db 100644 --- a/v3/example-code/aliasing.txt +++ b/v3/example-code/aliasing.txt @@ -19,7 +19,7 @@ def foo(lst): bar(lst) def bar(myLst): - print myLst + print(myLst) foo(x) foo(z) diff --git a/v3/example-code/closures/lambda-param.golden b/v3/example-code/closures/lambda-param.golden index f15175aba..3bf4753ae 100644 --- a/v3/example-code/closures/lambda-param.golden +++ b/v3/example-code/closures/lambda-param.golden @@ -1,5 +1,5 @@ { - "code": "def foo(x):\n bar(lambda y: x + y)\n\ndef bar(a):\n print a(20)\n\nfoo(10)\n", + "code": "def foo(x):\n bar(lambda y: x + y)\n\ndef bar(a):\n print(a(20))\n\nfoo(10)\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/closures/lambda-param.txt b/v3/example-code/closures/lambda-param.txt index 5bf9dcecb..4944f2c20 100644 --- a/v3/example-code/closures/lambda-param.txt +++ b/v3/example-code/closures/lambda-param.txt @@ -2,6 +2,6 @@ def foo(x): bar(lambda y: x + y) def bar(a): - print a(20) + print(a(20)) foo(10) diff --git a/v3/example-code/fact.golden b/v3/example-code/fact.golden index 1df6def65..6f756d707 100644 --- a/v3/example-code/fact.golden +++ b/v3/example-code/fact.golden @@ -1,5 +1,5 @@ { - "code": "# dumb recursive factorial\ndef fact(n):\n if (n <= 1):\n return 1\n else:\n return n * fact(n - 1)\n\nprint fact(6)\n", + "code": "# dumb recursive factorial\ndef fact(n):\n if (n <= 1):\n return 1\n else:\n return n * fact(n - 1)\n\nprint(fact(6))\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/fact.txt b/v3/example-code/fact.txt index d956324b0..a6b6f446f 100644 --- a/v3/example-code/fact.txt +++ b/v3/example-code/fact.txt @@ -5,4 +5,4 @@ def fact(n): else: return n * fact(n - 1) -print fact(6) +print(fact(6)) diff --git a/v3/example-code/fib.golden b/v3/example-code/fib.golden index 5533695de..7afe29d04 100644 --- a/v3/example-code/fib.golden +++ b/v3/example-code/fib.golden @@ -1,5 +1,5 @@ { - "code": "# Infinite Fibonacci!!!\n\narr = [1, 1]\n\nprint arr[0]\n\nwhile True:\n print arr[-1]\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n", + "code": "# Infinite Fibonacci!!!\n\narr = [1, 1]\n\nprint(arr[0])\n\nwhile True:\n print(arr[-1])\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/fib.txt b/v3/example-code/fib.txt index 96c8799c2..d5447f19b 100644 --- a/v3/example-code/fib.txt +++ b/v3/example-code/fib.txt @@ -2,10 +2,10 @@ arr = [1, 1] -print arr[0] +print(arr[0]) while True: - print arr[-1] + print(arr[-1]) tmp = sum(arr) arr.append(tmp) del arr[0] diff --git a/v3/example-code/filter.golden b/v3/example-code/filter.golden index e189a782e..1e1111344 100644 --- a/v3/example-code/filter.golden +++ b/v3/example-code/filter.golden @@ -1,5 +1,5 @@ { - "code": "input = [(\"Mary\", 27), (\"Joe\", 30), (\"Ruth\", 43), (\"Bob\", 17), (\"Jenny\", 22)]\n\nyoungPeople = []\n\nfor (person, age) in input:\n if age < 30:\n youngPeople.append(person)\n else:\n print \"HAHA\", person, \"is too old!\"\n\nprint \"There are\", len(youngPeople), \"young people\"\n", + "code": "input = [(\"Mary\", 27), (\"Joe\", 30), (\"Ruth\", 43), (\"Bob\", 17), (\"Jenny\", 22)]\n\nyoungPeople = []\n\nfor (person, age) in input:\n if age < 30:\n youngPeople.append(person)\n else:\n print(\"HAHA \" + person + \" is too old!\")\n\nprint(\"There are \" + str(len(youngPeople)) + \" young people\")\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/filter.txt b/v3/example-code/filter.txt index f3b3916fb..e09de854c 100644 --- a/v3/example-code/filter.txt +++ b/v3/example-code/filter.txt @@ -6,6 +6,6 @@ for (person, age) in input: if age < 30: youngPeople.append(person) else: - print "HAHA", person, "is too old!" + print("HAHA " + person + " is too old!") -print "There are", len(youngPeople), "young people" +print("There are " + str(len(youngPeople)) + " young people") diff --git a/v3/example-code/gen_primes.golden b/v3/example-code/gen_primes.golden index d0cdadeb0..480ece9bb 100644 --- a/v3/example-code/gen_primes.golden +++ b/v3/example-code/gen_primes.golden @@ -1,5 +1,5 @@ { - "code": "# Use generator to generate a stream of primes\ndef gen_primes():\n n = 2\n while True:\n for x in range(2, n):\n if n % x == 0:\n break\n else:\n yield n\n n += 1\n\nfor p in gen_primes():\n print p\n\n", + "code": "# Use generator to generate a stream of primes\ndef gen_primes():\n n = 2\n while True:\n for x in range(2, n):\n if n % x == 0:\n break\n else:\n yield n\n n += 1\n\nfor p in gen_primes():\n print(p)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/gen_primes.txt b/v3/example-code/gen_primes.txt index a41dc831f..2b047187b 100644 --- a/v3/example-code/gen_primes.txt +++ b/v3/example-code/gen_primes.txt @@ -10,5 +10,5 @@ def gen_primes(): n += 1 for p in gen_primes(): - print p + print(p) diff --git a/v3/example-code/ins_sort.golden b/v3/example-code/ins_sort.golden index a7f4751dd..837933f43 100644 --- a/v3/example-code/ins_sort.golden +++ b/v3/example-code/ins_sort.golden @@ -1,5 +1,5 @@ { - "code": "# from: http://www.ece.uci.edu/~chou/py02/python.html\ndef InsertionSort(A):\n for j in range(1, len(A)):\n key = A[j]\n i = j - 1\n while (i >= 0) and (A[i] > key):\n A[i+1] = A[i]\n i = i - 1\n A[i+1] = key\n\ninput = [8, 3, 9, 15, 29, 7, 10]\nInsertionSort(input)\nprint input\n", + "code": "# from: http://www.ece.uci.edu/~chou/py02/python.html\ndef InsertionSort(A):\n for j in range(1, len(A)):\n key = A[j]\n i = j - 1\n while (i >= 0) and (A[i] > key):\n A[i+1] = A[i]\n i = i - 1\n A[i+1] = key\n\ninput = [8, 3, 9, 15, 29, 7, 10]\nInsertionSort(input)\nprint(input)\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/ins_sort.txt b/v3/example-code/ins_sort.txt index d6598fae2..4c2dacc0f 100644 --- a/v3/example-code/ins_sort.txt +++ b/v3/example-code/ins_sort.txt @@ -10,4 +10,4 @@ def InsertionSort(A): input = [8, 3, 9, 15, 29, 7, 10] InsertionSort(input) -print input +print(input) diff --git a/v3/example-code/oop_1.golden b/v3/example-code/oop_1.golden index 6afd13b48..68e914e00 100644 --- a/v3/example-code/oop_1.golden +++ b/v3/example-code/oop_1.golden @@ -1,5 +1,5 @@ { - "code": "# Object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601()\nprint pat.course\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint pat.building\npat.building = 32\nprint pat.building\n\nprint pat.salutation()\nprint Staff601.salutation(pat)\n", + "code": "# Object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601()\nprint(pat.course)\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint(pat.building)\npat.building = 32\nprint(pat.building)\n\nprint(pat.salutation())\nprint(Staff601.salutation(pat))\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/oop_1.txt b/v3/example-code/oop_1.txt index f072f69f2..d04790552 100644 --- a/v3/example-code/oop_1.txt +++ b/v3/example-code/oop_1.txt @@ -11,15 +11,15 @@ class Staff601: return self.role + ' ' + self.name pat = Staff601() -print pat.course +print(pat.course) pat.name = 'Pat' pat.age = 60 pat.role = 'Professor' -print pat.building +print(pat.building) pat.building = 32 -print pat.building +print(pat.building) -print pat.salutation() -print Staff601.salutation(pat) +print(pat.salutation()) +print(Staff601.salutation(pat)) diff --git a/v3/example-code/oop_2.golden b/v3/example-code/oop_2.golden index 825326127..ea8435ae1 100644 --- a/v3/example-code/oop_2.golden +++ b/v3/example-code/oop_2.golden @@ -1,5 +1,5 @@ { - "code": "# The __init__ 'constructor' - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def __init__(self, name, role, years, salary):\n self.name = name\n self.role = role\n self.age = years\n self.salary = salary\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601('Pat', 'Professor', 60, 100000)\nprint pat.salutation()\n\n", + "code": "# The __init__ 'constructor' - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def __init__(self, name, role, years, salary):\n self.name = name\n self.role = role\n self.age = years\n self.salary = salary\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601('Pat', 'Professor', 60, 100000)\nprint(pat.salutation())\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/oop_2.txt b/v3/example-code/oop_2.txt index c4f0a534d..014c82790 100644 --- a/v3/example-code/oop_2.txt +++ b/v3/example-code/oop_2.txt @@ -17,5 +17,5 @@ class Staff601: return self.role + ' ' + self.name pat = Staff601('Pat', 'Professor', 60, 100000) -print pat.salutation() +print(pat.salutation()) diff --git a/v3/example-code/oop_small.golden b/v3/example-code/oop_small.golden index 7187af575..aa6ea12ec 100644 --- a/v3/example-code/oop_small.golden +++ b/v3/example-code/oop_small.golden @@ -1,5 +1,5 @@ { - "code": "class A:\n x = 1\n y = 'hello'\n\nclass B:\n z = 'bye'\n\nclass C(A,B):\n def salutation(self):\n return '%d %s %s' % (self.x, self.y, self.z)\n\ninst = C()\nprint inst.salutation()\ninst.x = 100\nprint inst.salutation()\n", + "code": "class A:\n x = 1\n y = 'hello'\n\nclass B:\n z = 'bye'\n\nclass C(A,B):\n def salutation(self):\n return '%d %s %s' % (self.x, self.y, self.z)\n\ninst = C()\nprint(inst.salutation())\ninst.x = 100\nprint(inst.salutation())\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/oop_small.txt b/v3/example-code/oop_small.txt index e40400587..8a7ca559b 100644 --- a/v3/example-code/oop_small.txt +++ b/v3/example-code/oop_small.txt @@ -10,6 +10,6 @@ class C(A,B): return '%d %s %s' % (self.x, self.y, self.z) inst = C() -print inst.salutation() +print(inst.salutation()) inst.x = 100 -print inst.salutation() +print(inst.salutation()) diff --git a/v3/example-code/py_tutorial.golden b/v3/example-code/py_tutorial.golden index 408ae9b30..8786b892b 100644 --- a/v3/example-code/py_tutorial.golden +++ b/v3/example-code/py_tutorial.golden @@ -1,5 +1,5 @@ { - "code": "# Philip's 10-minute intro to Python\n\n# numbers!\nage = 26\npi = 3.14159\n\n# strings!\ns = 'Rutherford Birchard Hayes'\ntokens = s.split()\nfirstName = tokens[0]\nmiddleName = tokens[1]\nlastName = tokens[2]\ns2 = firstName + ' ' + middleName + ' ' + lastName\n\n# 'if' statement - indentation matters!\nif (s == s2):\n print 'yes!!!'\nelse:\n print 'nooooooo'\n\n# list (mutable sequence)\nbeatles = ['John', 'Paul', 'George']\nbeatles.append('Ringo')\n\n# 'for' loop - indentation matters!\nfor b in beatles:\n print 'Hello', b\n\n# tuple (immutable sequence)\nages = (18, 21, 28, 21, 22, 18, 19, 34, 9)\n\n# set (no order, no duplicates)\nuniqueAges = set(ages)\nuniqueAges.add(18) # already in set, no effect\nuniqueAges.remove(21)\n\n# no guaranteed order when iterating over a set\nfor thisAge in uniqueAges:\n print thisAge\n\n# testing set membership\nif 18 in uniqueAges:\n print 'There is an 18-year-old present!'\n\n# sorting\nbeatles.sort() # in-place\norderedUniqueAges = sorted(uniqueAges) # new list\n\n# dict - mapping unique keys to values\nnetWorth = {}\nnetWorth['Donald Trump'] = 3000000000\nnetWorth['Bill Gates'] = 58000000000\nnetWorth['Tom Cruise'] = 40000000\nnetWorth['Joe Postdoc'] = 20000\n\n# iterating over key-value pairs:\nfor (person, worth) in netWorth.iteritems():\n if worth < 1000000:\n print 'haha', person, 'is not a millionaire'\n\n# testing dict membership\nif 'Tom Cruise' in netWorth:\n print 'show me the money!'\n", + "code": "# Philip's 10-minute intro to Python\n\n# numbers!\nage = 26\npi = 3.14159\n\n# strings!\ns = 'Rutherford Birchard Hayes'\ntokens = s.split()\nfirstName = tokens[0]\nmiddleName = tokens[1]\nlastName = tokens[2]\ns2 = firstName + ' ' + middleName + ' ' + lastName\n\n# 'if' statement - indentation matters!\nif (s == s2):\n print('yes!!!')\nelse:\n print('nooooooo')\n\n# list (mutable sequence)\nbeatles = ['John', 'Paul', 'George']\nbeatles.append('Ringo')\n\n# 'for' loop - indentation matters!\nfor b in beatles:\n print('Hello ' + b)\n\n# tuple (immutable sequence)\nages = (18, 21, 28, 21, 22, 18, 19, 34, 9)\n\n# set (no order, no duplicates)\nuniqueAges = set(ages)\nuniqueAges.add(18) # already in set, no effect\nuniqueAges.remove(21)\n\n# no guaranteed order when iterating over a set\nfor thisAge in uniqueAges:\n print(thisAge)\n\n# testing set membership\nif 18 in uniqueAges:\n print('There is an 18-year-old present!')\n\n# sorting\nbeatles.sort() # in-place\norderedUniqueAges = sorted(uniqueAges) # new list\n\n# dict - mapping unique keys to values\nnetWorth = {}\nnetWorth['Donald Trump'] = 3000000000\nnetWorth['Bill Gates'] = 58000000000\nnetWorth['Tom Cruise'] = 40000000\nnetWorth['Joe Postdoc'] = 20000\n\n# iterating over key-value pairs:\nfor (person, worth) in netWorth.items():\n if worth < 1000000:\n print('haha ' + person + ' is not a millionaire')\n\n# testing dict membership\nif 'Tom Cruise' in netWorth:\n print('show me the money!')\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/py_tutorial.txt b/v3/example-code/py_tutorial.txt index 5f1a230d1..e51ab9599 100644 --- a/v3/example-code/py_tutorial.txt +++ b/v3/example-code/py_tutorial.txt @@ -14,9 +14,9 @@ s2 = firstName + ' ' + middleName + ' ' + lastName # 'if' statement - indentation matters! if (s == s2): - print 'yes!!!' + print('yes!!!') else: - print 'nooooooo' + print('nooooooo') # list (mutable sequence) beatles = ['John', 'Paul', 'George'] @@ -24,7 +24,7 @@ beatles.append('Ringo') # 'for' loop - indentation matters! for b in beatles: - print 'Hello', b + print('Hello ' + b) # tuple (immutable sequence) ages = (18, 21, 28, 21, 22, 18, 19, 34, 9) @@ -36,11 +36,11 @@ uniqueAges.remove(21) # no guaranteed order when iterating over a set for thisAge in uniqueAges: - print thisAge + print(thisAge) # testing set membership if 18 in uniqueAges: - print 'There is an 18-year-old present!' + print('There is an 18-year-old present!') # sorting beatles.sort() # in-place @@ -54,10 +54,10 @@ netWorth['Tom Cruise'] = 40000000 netWorth['Joe Postdoc'] = 20000 # iterating over key-value pairs: -for (person, worth) in netWorth.iteritems(): +for (person, worth) in netWorth.items(): if worth < 1000000: - print 'haha', person, 'is not a millionaire' + print('haha ' + person + ' is not a millionaire') # testing dict membership if 'Tom Cruise' in netWorth: - print 'show me the money!' + print('show me the money!') diff --git a/v3/example-code/strtok.golden b/v3/example-code/strtok.golden index 2bd3a031a..3c5031e8f 100644 --- a/v3/example-code/strtok.golden +++ b/v3/example-code/strtok.golden @@ -1,5 +1,5 @@ { - "code": "input = 'John,Doe,1984,4,1,male'\n\ntokens = input.split(',')\nfirstName = tokens[0]\nlastName = tokens[1]\nbirthdate = (int(tokens[2]), int(tokens[3]), int(tokens[4]))\nisMale = (tokens[5] == 'male')\n\nprint 'Hi', firstName, lastName\n", + "code": "input = 'John,Doe,1984,4,1,male'\n\ntokens = input.split(',')\nfirstName = tokens[0]\nlastName = tokens[1]\nbirthdate = (int(tokens[2]), int(tokens[3]), int(tokens[4]))\nisMale = (tokens[5] == 'male')\n\nprint('Hi ' + firstName + ' ' + lastName)\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/strtok.txt b/v3/example-code/strtok.txt index 96e8100d5..52e08f112 100644 --- a/v3/example-code/strtok.txt +++ b/v3/example-code/strtok.txt @@ -6,4 +6,4 @@ lastName = tokens[1] birthdate = (int(tokens[2]), int(tokens[3]), int(tokens[4])) isMale = (tokens[5] == 'male') -print 'Hi', firstName, lastName +print('Hi ' + firstName + ' ' + lastName) diff --git a/v3/example-code/sum.golden b/v3/example-code/sum.golden index 8ecbe11e5..d70d98a11 100644 --- a/v3/example-code/sum.golden +++ b/v3/example-code/sum.golden @@ -1,5 +1,5 @@ { - "code": "# Higher-order functions\n# Adapted from MIT 6.01 course notes (Section A.2.2)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint sumsquares(1, 10)\n", + "code": "# Higher-order functions\n# Adapted from MIT 6.01 course notes (Section A.2.2)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint(sumsquares(1, 10))\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/sum.txt b/v3/example-code/sum.txt index 99a8ace18..3fe651044 100644 --- a/v3/example-code/sum.txt +++ b/v3/example-code/sum.txt @@ -13,4 +13,4 @@ def summation(low, high, f, next): def sumsquares(low, high): return summation(low, high, lambda x: x**2, lambda x: x+1) -print sumsquares(1, 10) +print(sumsquares(1, 10)) diff --git a/v3/example-code/wentworth_gcd.golden b/v3/example-code/wentworth_gcd.golden index 8a93dfeec..cc0273cb0 100644 --- a/v3/example-code/wentworth_gcd.golden +++ b/v3/example-code/wentworth_gcd.golden @@ -1,5 +1,5 @@ { - "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef gcd(x, y, depth=1):\n '''\n Find the greatest common divisor of x, y\n Pre: x >= y, y >= 0, both x and y are int\n '''\n result = x # set provisional return value\n if y != 0:\n indent = \"**\" * depth\n print(\"%s About to recursively call gcd(%d, %d)\" % (indent, y, x%y))\n result = gcd(y, x % y, depth+1)\n print(\"%s result is %d\" % (indent, result))\n return result\n\ndef main():\n m = 77\n n = 28\n print(\"Finding gcd(%d, %d)\" % (m,n))\n g = gcd(m, n)\n print('Greatest common divisor of %d, %d = %d'\n % (m, n, g))\n\nmain()\n\n", + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef gcd(x, y, depth=1):\n '''\n Find the greatest common divisor of x, y\n Pre: x >= y, y >= 0, both x and y are int\n '''\n result = x # set provisional return value\n if y != 0:\n indent = \"**\" * depth\n print((\"%s About to recursively call gcd(%d, %d)\" % (indent, y, x%y)))\n result = gcd(y, x % y, depth+1)\n print((\"%s result is %d\" % (indent, result)))\n return result\n\ndef main():\n m = 77\n n = 28\n print((\"Finding gcd(%d, %d)\" % (m,n)))\n g = gcd(m, n)\n print(('Greatest common divisor of %d, %d = %d'\n % (m, n, g)))\n\nmain()\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/wentworth_gcd.txt b/v3/example-code/wentworth_gcd.txt index b9d544fbd..683beffc2 100644 --- a/v3/example-code/wentworth_gcd.txt +++ b/v3/example-code/wentworth_gcd.txt @@ -9,18 +9,18 @@ def gcd(x, y, depth=1): result = x # set provisional return value if y != 0: indent = "**" * depth - print("%s About to recursively call gcd(%d, %d)" % (indent, y, x%y)) + print(("%s About to recursively call gcd(%d, %d)" % (indent, y, x%y))) result = gcd(y, x % y, depth+1) - print("%s result is %d" % (indent, result)) + print(("%s result is %d" % (indent, result))) return result def main(): m = 77 n = 28 - print("Finding gcd(%d, %d)" % (m,n)) + print(("Finding gcd(%d, %d)" % (m,n))) g = gcd(m, n) - print('Greatest common divisor of %d, %d = %d' - % (m, n, g)) + print(('Greatest common divisor of %d, %d = %d' + % (m, n, g))) main() diff --git a/v3/example-code/wentworth_sumList.golden b/v3/example-code/wentworth_sumList.golden index 0cf2dfaee..8809705d3 100644 --- a/v3/example-code/wentworth_sumList.golden +++ b/v3/example-code/wentworth_sumList.golden @@ -1,5 +1,5 @@ { - "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef sumList(xs):\n '''\n Sum a list that can contain nested lists.\n Precondition: All leaf elements are numbers.\n '''\n sum = 0\n for e in xs:\n if type(e) is list:\n print(\"Calling sumList(%s) recursively\" % e)\n v = sumList(e)\n print(\"sumList(%s) returned %s\" % (e, v))\n sum += v\n else:\n sum += e\n return sum\n\n\ntestData = [10, [20, 30, [40], 50], 60]\nprint(\"Calling sumList(%s)\" % testData)\nresult = sumList(testData)\nprint(\"Final sum of all numbers in initial list is %s\" % result)\n\n", + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef sumList(xs):\n '''\n Sum a list that can contain nested lists.\n Precondition: All leaf elements are numbers.\n '''\n sum = 0\n for e in xs:\n if type(e) is list:\n print((\"Calling sumList(%s) recursively\" % e))\n v = sumList(e)\n print((\"sumList(%s) returned %s\" % (e, v)))\n sum += v\n else:\n sum += e\n return sum\n\n\ntestData = [10, [20, 30, [40], 50], 60]\nprint((\"Calling sumList(%s)\" % testData))\nresult = sumList(testData)\nprint((\"Final sum of all numbers in initial list is %s\" % result))\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/wentworth_sumList.txt b/v3/example-code/wentworth_sumList.txt index e286c2d69..30727f674 100644 --- a/v3/example-code/wentworth_sumList.txt +++ b/v3/example-code/wentworth_sumList.txt @@ -9,9 +9,9 @@ def sumList(xs): sum = 0 for e in xs: if type(e) is list: - print("Calling sumList(%s) recursively" % e) + print(("Calling sumList(%s) recursively" % e)) v = sumList(e) - print("sumList(%s) returned %s" % (e, v)) + print(("sumList(%s) returned %s" % (e, v))) sum += v else: sum += e @@ -19,7 +19,7 @@ def sumList(xs): testData = [10, [20, 30, [40], 50], 60] -print("Calling sumList(%s)" % testData) +print(("Calling sumList(%s)" % testData)) result = sumList(testData) -print("Final sum of all numbers in initial list is %s" % result) +print(("Final sum of all numbers in initial list is %s" % result)) diff --git a/v3/example-code/wentworth_try_finally.golden b/v3/example-code/wentworth_try_finally.golden index 45fab6dd9..f305d1d32 100644 --- a/v3/example-code/wentworth_try_finally.golden +++ b/v3/example-code/wentworth_try_finally.golden @@ -1,5 +1,5 @@ { - "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\n# Demonstrate recursion that throws an exception\n# at its base case, and the tracing of try ... finally.\n#\n# How many \"survived!\" messages will be printed???\n\ndef f(n):\n try:\n x = 10 / n\n print \"x is\", x\n f(n-1)\n print \"survived!\"\n finally:\n print \"Bye from f where n =\", n\n\nf(4)\n", + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\n# Demonstrate recursion that throws an exception\n# at its base case, and the tracing of try ... finally.\n#\n# How many \"survived!\" messages will be printed???\n\ndef f(n):\n try:\n x = 10 / n\n print(\"x is \" + str(x))\n f(n-1)\n print(\"survived!\")\n finally:\n print(\"Bye from f where n = \" + str(n))\n\nf(4)\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/wentworth_try_finally.txt b/v3/example-code/wentworth_try_finally.txt index daab5e33c..b6617fa56 100644 --- a/v3/example-code/wentworth_try_finally.txt +++ b/v3/example-code/wentworth_try_finally.txt @@ -9,10 +9,10 @@ def f(n): try: x = 10 / n - print "x is", x + print("x is " + str(x)) f(n-1) - print "survived!" + print("survived!") finally: - print "Bye from f where n =", n + print("Bye from f where n = " + str(n)) f(4) From fcc05598804d3bf02018d581e44306435c900a84 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 23:33:05 -0700 Subject: [PATCH 221/502] re-org'ed tutor.html and some misc. --- v3/example-code/decorators.golden | 2 +- v3/example-code/decorators.txt | 4 +- v3/example-code/for-else.golden | 1634 +++++++++++++++++++++++++++++ v3/example-code/for-else.txt | 9 + v3/example-code/varargs.golden | 1015 ++++++++++++++++++ v3/example-code/varargs.txt | 16 + v3/js/opt-frontend.js | 12 +- v3/tutor.html | 94 +- 8 files changed, 2733 insertions(+), 53 deletions(-) create mode 100644 v3/example-code/for-else.golden create mode 100644 v3/example-code/for-else.txt create mode 100644 v3/example-code/varargs.golden create mode 100644 v3/example-code/varargs.txt diff --git a/v3/example-code/decorators.golden b/v3/example-code/decorators.golden index ad72b89be..f2723f388 100644 --- a/v3/example-code/decorators.golden +++ b/v3/example-code/decorators.golden @@ -1,5 +1,5 @@ { - "code": "def make_bold(fn):\n return lambda : \"\" + fn() + \"\"\n\ndef make_italic(fn):\n return lambda : \"\" + fn() + \"\"\n\n@make_bold\n@make_italic\ndef hello():\n return \"hello world\"\n \nhelloHTML = hello()\n", + "code": "def make_bold(fn):\n return lambda : \"\" + fn() + \"\"\n\ndef make_italic(fn):\n return lambda : \"\" + fn() + \"\"\n\n@make_bold\n@make_italic\ndef hello():\n return \"hello world\"\n \nhelloHTML = hello()\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/decorators.txt b/v3/example-code/decorators.txt index b73b335f8..b267bac5f 100644 --- a/v3/example-code/decorators.txt +++ b/v3/example-code/decorators.txt @@ -1,8 +1,8 @@ def make_bold(fn): - return lambda : "" + fn() + "" + return lambda : "" + fn() + "" def make_italic(fn): - return lambda : "" + fn() + "" + return lambda : "" + fn() + "" @make_bold @make_italic diff --git a/v3/example-code/for-else.golden b/v3/example-code/for-else.golden new file mode 100644 index 000000000..6d0d7606a --- /dev/null +++ b/v3/example-code/for-else.golden @@ -0,0 +1,1634 @@ +{ + "code": "# find primes using a for-else construct\nfor n in range(2, 10):\n x_range = range(2, n)\n for x in x_range:\n if n % x == 0:\n break\n else:\n # loop fell through without finding a factor\n print n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "n": 2 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 3 + }, + "heap": { + "1": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 4, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 5, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 5, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 6, + "x": 4 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 4 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 7, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 3 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 3 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 4 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 4 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 5 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 5 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 8, + "x": 6 + }, + "heap": { + "2": [ + "LIST", + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 6 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 9, + "x": 2 + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 2 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 3 + ], + "n": 9, + "x": 3 + }, + "heap": { + "3": [ + "LIST", + 2, + 3, + 4, + 5, + 6, + 7, + 8 + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/for-else.txt b/v3/example-code/for-else.txt new file mode 100644 index 000000000..b59907689 --- /dev/null +++ b/v3/example-code/for-else.txt @@ -0,0 +1,9 @@ +# find primes using a for-else construct +for n in range(2, 10): + x_range = range(2, n) + for x in x_range: + if n % x == 0: + break + else: + # loop fell through without finding a factor + print n diff --git a/v3/example-code/varargs.golden b/v3/example-code/varargs.golden new file mode 100644 index 000000000..d12be8967 --- /dev/null +++ b/v3/example-code/varargs.golden @@ -0,0 +1,1015 @@ +{ + "code": "# Demonstrate *args and **kwargs\ndef f1(a, b, *rest):\n pass\n\nf1(1, 2)\nf1(1, 2, 3, 4, 5, 6, 7)\n\ndef f2(a, b, **kwrest):\n pass\n\nf2(1, 2, name='Bob', age=38)\n\ndef f3(a, b, *rest, **kwrest):\n pass\n\nf3(1, 2, 3, 4, name='Bob', age=38)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/varargs.txt b/v3/example-code/varargs.txt new file mode 100644 index 000000000..97da39bb9 --- /dev/null +++ b/v3/example-code/varargs.txt @@ -0,0 +1,16 @@ +# Demonstrate *args and **kwargs +def f1(a, b, *rest): + pass + +f1(1, 2) +f1(1, 2, 3, 4, 5, 6, 7) + +def f2(a, b, **kwrest): + pass + +f2(1, 2, name='Bob', age=38) + +def f3(a, b, *rest, **kwrest): + pass + +f3(1, 2, 3, 4, name='Bob', age=38) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index a23f070f4..4195533db 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -62,7 +62,7 @@ $(document).ready(function() { extraKeys: {Tab: function(cm) {cm.replaceSelection(" ", "end");}} }); - pyInputCodeMirror.setSize(null, '450px'); + pyInputCodeMirror.setSize(null, '420px'); @@ -383,6 +383,16 @@ $(document).ready(function() { return false; }); + $('#varargsLink').click(function() { + $.get("example-code/varargs.txt", setCodeMirrorVal); + return false; + }); + + $('#forElseLink').click(function() { + $.get("example-code/for-else.txt", setCodeMirrorVal); + return false; + }); + if (preseededCode) { setCodeMirrorVal(preseededCode); diff --git a/v3/tutor.html b/v3/tutor.html index 441f9baa4..0b0b7d9d6 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -72,72 +72,74 @@

Display exited functions

-

Try these small examples:
+

Basic Examples:
-aliasing | +hello | intro | +filter | +tokenize | +insertion sort +

+ +

Mathy Stuff:
factorial | fibonacci | -memoized fib | +memoized fibonacci | square root | -insertion sort -
-filter | -tokenize | -OOP | gcd | -sumList | -towers of hanoi | -exceptions | -sum cubes -
-decorators | -generators - +towers of hanoi

-

From MIT's 6.01 course:
- -list map | -summation | -OOP 1 | -OOP 2 | -inheritance - +

Linked Lists:
+LL 1 | +LL 2

-

Nested functions: -
+

Higher-Order Functions:
closure 1 | closure 2 | closure 3 | closure 4 | -closure 5 | +closure 5 +
+sum cubes | +list map | +summation | lambda param

-

Aliasing: -
+

Object-Oriented Programming
+ +OOP 1 | +OOP 2 | +OOP 3 | +inheritance + +

+ +

More Python Tricks:
+decorators | +generators | +varargs | +exceptions | +for-else +

+

Pointer Aliasing:
aliasing 1 | aliasing 2 | aliasing 3 | -aliasing 4 | +aliasing 4 +
aliasing 5 | aliasing 6 | aliasing 7 | -aliasing 8 - +aliasing 8 | +sumList

-

Linked lists: -
- -LL 1 | -LL 2 - @@ -156,20 +158,14 @@

-This version of the Online Python Tutor runs Python 2.7 on Google -App Engine with limited module imports and no file I/O. It is -designed for teaching programming, not for running or debugging -production code. +This version of Online Python Tutor runs Python 2.7 and Python 3.2 with limited module +imports and no file I/O. It is designed for teaching programming, not +for running or debugging production code.

-

Official Python 3 support is coming soon; -for now, try the Python 3 forks by CS Circles and -Peter Wentworth. -

Check out the GitHub From ebd2b877facb91bc9c0245f8ab9f18bbe3adb743 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 23:41:43 -0700 Subject: [PATCH 222/502] more superficial tweaks --- v3/css/pytutor.css | 2 +- v3/tutor.html | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 62e79ad4a..3ee83269c 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -74,7 +74,7 @@ div.ExecutionVisualizer table.frameDataViz td.val { div.ExecutionVisualizer div#pyCodeOutputDiv { max-width: 550px; - max-height: 450px; + max-height: 400px; /*max-height: 620px;*/ overflow: auto; /*margin-bottom: 4px;*/ diff --git a/v3/tutor.html b/v3/tutor.html index 0b0b7d9d6..f45238cb7 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -81,7 +81,7 @@ insertion sort

-

Mathy Stuff:
+

Mathy Stuff:
factorial | fibonacci | memoized fibonacci | @@ -90,27 +90,27 @@ towers of hanoi

-

Linked Lists:
+

Linked Lists:
LL 1 | LL 2

-

Higher-Order Functions:
+

Higher-Order Functions:
closure 1 | closure 2 | closure 3 | -closure 4 | -closure 5 +closure 4
-sum cubes | + +closure 5 | list map | summation | lambda param

-

Object-Oriented Programming
+

Object-Oriented Programming
OOP 1 | OOP 2 | @@ -119,7 +119,7 @@

-

More Python Tricks:
+

More Python Tricks:
decorators | generators | varargs | @@ -127,7 +127,7 @@ for-else

-

Pointer Aliasing:
+

Pointer Aliasing:
aliasing 1 | aliasing 2 | aliasing 3 | From dc9246bb60f2398c6eaccc8978181ea0f60adc63 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 3 Sep 2012 23:51:13 -0700 Subject: [PATCH 223/502] one more example --- v3/example-code/list-comp.golden | 404 +++++++++++++++++++++++++++++++ v3/example-code/list-comp.txt | 3 + v3/js/opt-frontend.js | 5 + v3/tutor.html | 27 ++- 4 files changed, 426 insertions(+), 13 deletions(-) create mode 100644 v3/example-code/list-comp.golden create mode 100644 v3/example-code/list-comp.txt diff --git a/v3/example-code/list-comp.golden b/v3/example-code/list-comp.golden new file mode 100644 index 000000000..6a4ea270a --- /dev/null +++ b/v3/example-code/list-comp.golden @@ -0,0 +1,404 @@ +{ + "code": "ppl = ['Alice', 'Bob', 'Carol', 'Doug']\nexcited_ppl = [e + '!!' for e in ppl]\nppl_len = [len(x) for x in ppl]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Alice", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Bob", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Carol", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "excited_ppl": [ + "REF", + 2 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 2 + ], + "x": "Alice" + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 2 + ], + "x": "Bob" + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 2 + ], + "x": "Carol" + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "e": "Doug", + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 2 + ], + "x": "Doug" + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "e", + "excited_ppl", + "x", + "ppl_len" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "excited_ppl": [ + "REF", + 2 + ], + "ppl_len": [ + "REF", + 3 + ], + "e": "Doug", + "x": "Doug", + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "3": [ + "LIST", + 5, + 3, + 5, + 4 + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/example-code/list-comp.txt b/v3/example-code/list-comp.txt new file mode 100644 index 000000000..b5a158904 --- /dev/null +++ b/v3/example-code/list-comp.txt @@ -0,0 +1,3 @@ +ppl = ['Alice', 'Bob', 'Carol', 'Doug'] +excited_ppl = [e + '!!' for e in ppl] +ppl_len = [len(x) for x in ppl] diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 4195533db..2ace11303 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -213,6 +213,11 @@ $(document).ready(function() { return false; }); + $("#listCompLink").click(function() { + $.get("example-code/list-comp.txt", setCodeMirrorVal); + return false; + }); + $("#fibonacciExampleLink").click(function() { $.get("example-code/fib.txt", setCodeMirrorVal); return false; diff --git a/v3/tutor.html b/v3/tutor.html index f45238cb7..8ddeb27f4 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -78,10 +78,11 @@ intro | filter | tokenize | -insertion sort +insertion sort | +list comprehension

-

Mathy Stuff:
+

Math-Related Fun:
factorial | fibonacci | memoized fibonacci | @@ -90,11 +91,6 @@ towers of hanoi

-

Linked Lists:
-LL 1 | -LL 2 -

-

Higher-Order Functions:
closure 1 | @@ -119,12 +115,9 @@

-

More Python Tricks:
-decorators | -generators | -varargs | -exceptions | -for-else +

Linked Lists:
+LL 1 | +LL 2

Pointer Aliasing:
@@ -140,6 +133,14 @@ sumList

+

More Python Tricks:
+decorators | +generators | +varargs | +exceptions | +for-else +

+ From 59b6fde2d55dcfd7aa04296bd7c3984197e9439f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 4 Sep 2012 11:18:08 -0700 Subject: [PATCH 224/502] clear URL output for cleanliness --- v3/js/opt-frontend.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 2ace11303..da45f120f 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -48,6 +48,7 @@ var pyInputCodeMirror; // CodeMirror object that contains the input text function setCodeMirrorVal(dat) { pyInputCodeMirror.setValue(dat.rtrim() /* kill trailing spaces */); + $('#urlOutput').val(''); } @@ -191,7 +192,9 @@ $(document).ready(function() { myVisualizer = new ExecutionVisualizer('pyOutputPane', dataFromBackend, - {startingInstruction: startingInstruction}); + {startingInstruction: startingInstruction, + updateOutputCallback: function() {$('#urlOutput').val('');} + }); $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); } From 9b0a455c0c025ca54aa5c61605c3c6e7db0eddad Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 4 Sep 2012 11:57:43 -0700 Subject: [PATCH 225/502] added Python 2/3 dropdown option --- v3/js/opt-frontend.js | 22 +++++++++++++++++++--- v3/tutor.html | 17 ++++++++++++++--- 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index da45f120f..2911beb62 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -75,9 +75,24 @@ $(document).ready(function() { preseededCode = $.bbq.getState('code'); // yuck, global! var preseededMode = $.bbq.getState('mode'); + + // ugh, ugly tristate due to the possibility of being undefined :) if ($.bbq.getState('cumulative_mode') == 'true') { - $('#cumulativeMode').prop('checked', true); + $('#cumulativeModeSelector').val('yes'); + } + else if ($.bbq.getState('cumulative_mode') == 'false') { + $('#cumulativeModeSelector').val('no'); + } + // else if it's undefined, don't do anything ... + + if ($.bbq.getState('python_version') == '3') { + $('#pythonVersionSelector').val('3'); + } + else if ($.bbq.getState('python_version') == '2') { + $('#pythonVersionSelector').val('2'); } + // else if it's undefined, don't do anything ... + // only bother with curInstr when we're visualizing ... if (!preseededCurInstr && preseededMode == 'visualize') { // TODO: kinda gross hack @@ -149,7 +164,7 @@ $(document).ready(function() { $.get(backend_script, {user_script : pyInputCodeMirror.getValue(), - cumulative_mode: $('#cumulativeMode').prop('checked')}, + cumulative_mode: ($('#cumulativeModeSelector').val() == 'yes')}, function(dataFromBackend) { var trace = dataFromBackend.trace; @@ -436,7 +451,8 @@ $(document).ready(function() { {code: pyInputCodeMirror.getValue(), curInstr: (appMode == 'visualize') ? myVisualizer.curInstr : 0, mode: appMode, - cumulative_mode: $('#cumulativeMode').prop('checked') + cumulative_mode: ($('#cumulativeModeSelector').val() == 'yes'), + python_version: $('#pythonVersionSelector').val() }, 2); $('#urlOutput').val(urlStr); diff --git a/v3/tutor.html b/v3/tutor.html index 8ddeb27f4..2a1199807 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -65,12 +65,23 @@
+

+Execute code using + +and + +

+

-

Display exited functions

-

Basic Examples:
@@ -159,7 +170,7 @@

-This version of Online Python Tutor runs Python 2.7 and Python 3.2 with limited module imports and no file I/O. It is designed for teaching programming, not From 61282683881348d2666e2edbf16ac7dfc8d51f23 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 4 Sep 2012 11:59:34 -0700 Subject: [PATCH 226/502] made closure examples 4-space indented --- v3/example-code/closures/closure1.golden | 2 +- v3/example-code/closures/closure1.txt | 6 +++--- v3/example-code/closures/closure2.golden | 2 +- v3/example-code/closures/closure2.txt | 12 ++++++------ v3/example-code/closures/closure3.golden | 2 +- v3/example-code/closures/closure3.txt | 10 +++++----- v3/example-code/closures/closure4.golden | 2 +- v3/example-code/closures/closure4.txt | 6 +++--- v3/example-code/closures/closure5.golden | 2 +- v3/example-code/closures/closure5.txt | 10 +++++----- 10 files changed, 27 insertions(+), 27 deletions(-) diff --git a/v3/example-code/closures/closure1.golden b/v3/example-code/closures/closure1.golden index 60b1b4eab..72c708a07 100644 --- a/v3/example-code/closures/closure1.golden +++ b/v3/example-code/closures/closure1.golden @@ -1,5 +1,5 @@ { - "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\nb = foo(1)\nb(2)\n", + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\nb = foo(1)\nb(2)\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/closures/closure1.txt b/v3/example-code/closures/closure1.txt index 674c82bb2..1b784657b 100644 --- a/v3/example-code/closures/closure1.txt +++ b/v3/example-code/closures/closure1.txt @@ -1,7 +1,7 @@ def foo(y): - def bar(x): - return x + y - return bar + def bar(x): + return x + y + return bar b = foo(1) b(2) diff --git a/v3/example-code/closures/closure2.golden b/v3/example-code/closures/closure2.golden index 044859126..37b206be9 100644 --- a/v3/example-code/closures/closure2.golden +++ b/v3/example-code/closures/closure2.golden @@ -1,5 +1,5 @@ { - "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\ndef foo_deux(y):\n def bar_deux(x):\n return x + y\n return bar_deux\n\nb = foo(1)\nb_deux = foo_deux(1000)\n\nb(2) \nb_deux(2000)\n", + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\ndef foo_deux(y):\n def bar_deux(x):\n return x + y\n return bar_deux\n\nb = foo(1)\nb_deux = foo_deux(1000)\n\nb(2) \nb_deux(2000)\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/closures/closure2.txt b/v3/example-code/closures/closure2.txt index dee3a5fd6..dd036ff92 100644 --- a/v3/example-code/closures/closure2.txt +++ b/v3/example-code/closures/closure2.txt @@ -1,12 +1,12 @@ def foo(y): - def bar(x): - return x + y - return bar + def bar(x): + return x + y + return bar def foo_deux(y): - def bar_deux(x): - return x + y - return bar_deux + def bar_deux(x): + return x + y + return bar_deux b = foo(1) b_deux = foo_deux(1000) diff --git a/v3/example-code/closures/closure3.golden b/v3/example-code/closures/closure3.golden index 1f347f420..43b4b2ecb 100644 --- a/v3/example-code/closures/closure3.golden +++ b/v3/example-code/closures/closure3.golden @@ -1,5 +1,5 @@ { - "code": "def foo(x):\n def bar(y):\n def baz(z):\n return len(x) + len(y) + len(z)\n return baz\n return bar([4,5,6,7])\n\nl = [1,2,3]\nx = foo(l)\nx([8,9,10,11,12])\n", + "code": "def foo(x):\n def bar(y):\n def baz(z):\n return len(x) + len(y) + len(z)\n return baz\n return bar([4,5,6,7])\n\nl = [1,2,3]\nx = foo(l)\nx([8,9,10,11,12])\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/closures/closure3.txt b/v3/example-code/closures/closure3.txt index 7e3eb523a..9a34ed2d1 100644 --- a/v3/example-code/closures/closure3.txt +++ b/v3/example-code/closures/closure3.txt @@ -1,9 +1,9 @@ def foo(x): - def bar(y): - def baz(z): - return len(x) + len(y) + len(z) - return baz - return bar([4,5,6,7]) + def bar(y): + def baz(z): + return len(x) + len(y) + len(z) + return baz + return bar([4,5,6,7]) l = [1,2,3] x = foo(l) diff --git a/v3/example-code/closures/closure4.golden b/v3/example-code/closures/closure4.golden index 268bc8945..3b39773ee 100644 --- a/v3/example-code/closures/closure4.golden +++ b/v3/example-code/closures/closure4.golden @@ -1,5 +1,5 @@ { - "code": "def f(x):\n def g(y):\n return x + y\n return g\n\ng1 = f(1)\ng2 = f(2)\ng1(3) + g2(4)\n", + "code": "def f(x):\n def g(y):\n return x + y\n return g\n\ng1 = f(1)\ng2 = f(2)\ng1(3) + g2(4)\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/closures/closure4.txt b/v3/example-code/closures/closure4.txt index 2947e96be..664625712 100644 --- a/v3/example-code/closures/closure4.txt +++ b/v3/example-code/closures/closure4.txt @@ -1,7 +1,7 @@ def f(x): - def g(y): - return x + y - return g + def g(y): + return x + y + return g g1 = f(1) g2 = f(2) diff --git a/v3/example-code/closures/closure5.golden b/v3/example-code/closures/closure5.golden index 22e743525..549e7897d 100644 --- a/v3/example-code/closures/closure5.golden +++ b/v3/example-code/closures/closure5.golden @@ -1,5 +1,5 @@ { - "code": "def f(x):\n def g(y, z):\n if z == 0:\n return y\n return g(x+y+z, z-1)\n return lambda: g(0, x)\n\nfoo = f(3)\nbar = f(4)\nbaz = foo() + bar()\n", + "code": "def f(x):\n def g(y, z):\n if z == 0:\n return y\n return g(x+y+z, z-1)\n return lambda: g(0, x)\n\nfoo = f(3)\nbar = f(4)\nbaz = foo() + bar()\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/closures/closure5.txt b/v3/example-code/closures/closure5.txt index 9484abcb0..df094d247 100644 --- a/v3/example-code/closures/closure5.txt +++ b/v3/example-code/closures/closure5.txt @@ -1,9 +1,9 @@ def f(x): - def g(y, z): - if z == 0: - return y - return g(x+y+z, z-1) - return lambda: g(0, x) + def g(y, z): + if z == 0: + return y + return g(x+y+z, z-1) + return lambda: g(0, x) foo = f(3) bar = f(4) From a31307764ebdeca728c08fb16b19e9229787fa19 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 4 Sep 2012 13:20:00 -0700 Subject: [PATCH 227/502] getting ready for demo release --- v3/js/opt-frontend.js | 23 ++++++++++++++++++++++- v3/tutor.html | 13 +++++-------- v3/web_exec.py | 2 +- 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 2911beb62..45867224b 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -29,7 +29,14 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // Pre-reqs: pytutor.js and jquery.ba-bbq.min.js should be imported BEFORE this file -var backend_script = 'exec'; // URL of backend script, which must eventually call pg_logger.py + +// backend scripts to execute (Python 2 and 3 variants, if available) +var python2_backend_script = 'web_exec_py2.py'; +var python3_backend_script = 'web_exec_py3.py'; + +// uncomment below if you're running on Google App Engine using the built-in app.yaml +//var python2_backend_script = 'exec'; +//var python3_backend_script = null; var appMode = 'edit'; // 'edit' or 'visualize' @@ -157,6 +164,20 @@ $(document).ready(function() { $("#executeBtn").attr('disabled', false); $("#executeBtn").click(function() { + + var backend_script = null; + if ($('#pythonVersionSelector').val() == '2') { + backend_script = python2_backend_script; + } + else if ($('#pythonVersionSelector').val() == '3') { + backend_script = python3_backend_script; + } + + if (!backend_script) { + alert('Error: This server is not configured to run Python ' + $('#pythonVersionSelector').val()); + return; + } + $('#executeBtn').html("Please wait ... processing your code"); $('#executeBtn').attr('disabled', true); $("#pyOutputPane").hide(); diff --git a/v3/tutor.html b/v3/tutor.html index 2a1199807..5b748bf3c 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -164,9 +164,9 @@

-

To report a bug, click the 'Generate URL' button, paste the URL along -with a brief error description in an email, and then send an email to -philip@pgbovine.net

+

To report a bug (or suggestion), click the 'Generate URL' button, +paste the URL along with a brief error description in an email, and then +send an email to philip@pgbovine.net

@@ -174,14 +174,11 @@ href="http://www.python.org/doc/2.7/">Python 2.7 and Python 3.2 with limited module imports and no file I/O. It is designed for teaching programming, not -for running or debugging production code. +for running or debugging production code. The code is open source on GitHub.

-

-Check out the GitHub -repository and send bug reports, feedback, and suggestions to philip@pgbovine.net

Copyright © 2010-2012 Philip Guo. All rights reserved. diff --git a/v3/web_exec.py b/v3/web_exec.py index 4ee89a00d..229cb841b 100644 --- a/v3/web_exec.py +++ b/v3/web_exec.py @@ -19,7 +19,7 @@ # set to true if you want to log queries in DB_FILE -LOG_QUERIES = True +LOG_QUERIES = False if LOG_QUERIES: import os, datetime, create_log_db, sqlite3 From 9f2e299a93f3d8cf14fcd72b68ffde9d146bf662 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 4 Sep 2012 13:29:58 -0700 Subject: [PATCH 228/502] minor cosmetic --- v3/tutor.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/v3/tutor.html b/v3/tutor.html index 5b748bf3c..444078ab0 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -164,9 +164,10 @@

-

To report a bug (or suggestion), click the 'Generate URL' button, -paste the URL along with a brief error description in an email, and then -send an email to philip@pgbovine.net

+

To report a bug, click the 'Generate URL' button, paste the URL along +with a brief error description in an email, and send the email to +philip@pgbovine.net +

@@ -180,8 +181,9 @@

-

+

Copyright © 2010-2012 Philip Guo. All rights reserved. +

From 862cda9dc59ac755d97b2e3c9c4b13e583841af8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 4 Sep 2012 13:40:34 -0700 Subject: [PATCH 229/502] tiny update for Py3k compatibility --- v3/example-code/for-else.golden | 2 +- v3/example-code/for-else.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/example-code/for-else.golden b/v3/example-code/for-else.golden index 6d0d7606a..479a67f6f 100644 --- a/v3/example-code/for-else.golden +++ b/v3/example-code/for-else.golden @@ -1,5 +1,5 @@ { - "code": "# find primes using a for-else construct\nfor n in range(2, 10):\n x_range = range(2, n)\n for x in x_range:\n if n % x == 0:\n break\n else:\n # loop fell through without finding a factor\n print n\n", + "code": "# find primes using a for-else construct\nfor n in range(2, 10):\n x_range = range(2, n)\n for x in x_range:\n if n % x == 0:\n break\n else:\n # loop fell through without finding a factor\n print(n)\n", "trace": [ { "ordered_globals": [], diff --git a/v3/example-code/for-else.txt b/v3/example-code/for-else.txt index b59907689..1eaf5fff7 100644 --- a/v3/example-code/for-else.txt +++ b/v3/example-code/for-else.txt @@ -6,4 +6,4 @@ for n in range(2, 10): break else: # loop fell through without finding a factor - print n + print(n) From c7a0ab8ad7f0b2daf2555e52205b60f4d7ea54ca Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 4 Sep 2012 14:15:14 -0700 Subject: [PATCH 230/502] added genexpr test --- v3/example-code/genexpr.golden | 2170 ++++++++++++++++++++++++++++++++ v3/example-code/genexpr.txt | 4 + v3/js/opt-frontend.js | 5 + v3/tutor.html | 1 + 4 files changed, 2180 insertions(+) create mode 100644 v3/example-code/genexpr.golden create mode 100644 v3/example-code/genexpr.txt diff --git a/v3/example-code/genexpr.golden b/v3/example-code/genexpr.golden new file mode 100644 index 000000000..85931e7a5 --- /dev/null +++ b/v3/example-code/genexpr.golden @@ -0,0 +1,2170 @@ +{ + "code": "x = (i for i in range(10))\n\nfor e in x:\n print(e)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0, + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1, + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2, + "__return__": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3, + "__return__": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4, + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5, + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6, + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7, + "__return__": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8, + "__return__": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9, + "__return__": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ], + "2": [ + "listiterator", + "" + ] + }, + "line": 1, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "generator", + " at 0xADDR>" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/example-code/genexpr.txt b/v3/example-code/genexpr.txt new file mode 100644 index 000000000..5777d5f01 --- /dev/null +++ b/v3/example-code/genexpr.txt @@ -0,0 +1,4 @@ +x = (i for i in range(10)) + +for e in x: + print(e) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 45867224b..2727873a5 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -357,6 +357,11 @@ $(document).ready(function() { return false; }); + $("#genExprLink").click(function() { + $.get("example-code/genexpr.txt", setCodeMirrorVal); + return false; + }); + $('#closure1Link').click(function() { $.get("example-code/closures/closure1.txt", setCodeMirrorVal); diff --git a/v3/tutor.html b/v3/tutor.html index 444078ab0..5ec019fc8 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -147,6 +147,7 @@

More Python Tricks:
decorators | generators | +gen expr | varargs | exceptions | for-else From 39419be7c47c609fd78aade9b9cf633a99cf3f41 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 4 Sep 2012 14:22:22 -0700 Subject: [PATCH 231/502] added a thin border --- v3/css/opt-frontend.css | 1 + v3/tutor.html | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/v3/css/opt-frontend.css b/v3/css/opt-frontend.css index 465b24cc3..ae30640c8 100644 --- a/v3/css/opt-frontend.css +++ b/v3/css/opt-frontend.css @@ -54,6 +54,7 @@ table#pyOutputPane { #codeInputPane { margin-top: 5px; font-size: 12pt; + border: 1px solid #ddd; } button.smallBtn { diff --git a/v3/tutor.html b/v3/tutor.html index 5ec019fc8..f7e5d9298 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -65,7 +65,7 @@

-

+

Execute code using \ @@ -196,6 +199,9 @@ ExecutionVisualizer.prototype.render = function() { \ '); + this.domRoot.find('#legendDiv') + .append(lightArrowHTML + ' line that has just executed

' + darkArrowHTML + ' next line to be executed

') + if (this.params.editCodeBaseURL) { var urlStr = $.param.fragment(this.params.editCodeBaseURL, @@ -818,13 +824,23 @@ ExecutionVisualizer.prototype.updateOutput = function() { myViz.domRootD3.selectAll('#pyCodeOutputDiv td.gutter') .html(function (d) { - // arrow types: '\u21d2', '\u21f0', '\u2907' - return (d.lineNumber == arrowLineNumber) ? '\u21d2' : ''; + // arrow types: '\u21d2', '\u21f0', '\u2907' + if (d.lineNumber == arrowLineNumber) { + return darkArrowHTML; + } + else if (d.lineNumber == highlightLineNumber) { + return lightArrowHTML; + } + else { + return ''; + } }); myViz.domRootD3.selectAll('#pyCodeOutputDiv td.lineNo') .attr('id', function(d) {return 'lineNo' + d.lineNumber;}); + // optionally highlight previously-executed line ... + /* myViz.domRootD3.selectAll('#pyCodeOutputDiv td.cod') .style('background-color', function(d) { if (d.lineNumber == highlightLineNumber) { @@ -836,6 +852,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { return d.backgroundColor; }); + */ // returns True iff lineNo is visible in pyCodeOutputDiv From 59346a520c7a1c6f834442308ffb6ac98d589c76 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 6 Sep 2012 08:58:48 -0700 Subject: [PATCH 244/502] minor stylistic nits --- v3/example-code/genexpr.txt | 1 + v3/js/pytutor.js | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/v3/example-code/genexpr.txt b/v3/example-code/genexpr.txt index 5777d5f01..46bac3e62 100644 --- a/v3/example-code/genexpr.txt +++ b/v3/example-code/genexpr.txt @@ -1,3 +1,4 @@ +# NB: there's a known bug when frames of exited functions are displayed x = (i for i in range(10)) for e in x: diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index eca65a462..b16b6c08c 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -200,7 +200,7 @@ ExecutionVisualizer.prototype.render = function() { '); this.domRoot.find('#legendDiv') - .append(lightArrowHTML + ' line that has just executed

' + darkArrowHTML + ' next line to be executed

') + .append(lightArrowHTML + ' line that has just executed

' + darkArrowHTML + ' next line to be executed

') if (this.params.editCodeBaseURL) { From e6d977569d71e62628aac21090415e87ef044c5a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 6 Sep 2012 10:11:15 -0700 Subject: [PATCH 245/502] added sum-list example --- v3/example-code/sum-list.txt | 9 +++++++++ v3/js/opt-frontend.js | 4 ++++ v3/tutor.html | 3 ++- 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 v3/example-code/sum-list.txt diff --git a/v3/example-code/sum-list.txt b/v3/example-code/sum-list.txt new file mode 100644 index 000000000..9945a6a6b --- /dev/null +++ b/v3/example-code/sum-list.txt @@ -0,0 +1,9 @@ +myList = (1, (2, (3, (4, (5, None))))) + +def sumList(node, subtotal): + if not node: + return subtotal + else: + return sumList(node[1], subtotal + node[0]) + +total = sumList(myList, 0) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 2baa740eb..717df4cd3 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -454,6 +454,10 @@ $(document).ready(function() { $.get("example-code/linked-lists/ll2.txt", setCodeMirrorVal); return false; }); + $('#sumListLink').click(function() { + $.get("example-code/sum-list.txt", setCodeMirrorVal); + return false; + }); $('#varargsLink').click(function() { $.get("example-code/varargs.txt", setCodeMirrorVal); diff --git a/v3/tutor.html b/v3/tutor.html index f7e5d9298..2f6a96820 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -128,7 +128,8 @@

Linked Lists:
LL 1 | -LL 2 +LL 2 | +sum list

Pointer Aliasing:
From deaa7d1ab05ea058725ace2d76f6927e8105b3f6 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 6 Sep 2012 15:55:01 -0700 Subject: [PATCH 246/502] cleaned up some details of double-arrow implementation --- v3/js/pytutor.js | 52 ++++++++++++++++++------------------------------ 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index b16b6c08c..1e9f3a590 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -784,51 +784,39 @@ ExecutionVisualizer.prototype.updateOutput = function() { /* if instrLimitReached, then treat like a normal non-terminating line */ var isTerminated = (!myViz.instrLimitReached && isLastInstr); - // rules for highlighting lines: - // 1.) If there's an error, then highlight current line - // 2.) If the program has terminated, then highlight current line - // 3.) Otherwise highlight the previously-executed line - // (or the previous-previous line for most 'return' events) - var highlightColor = highlightedLineLighterColor; - var highlightLineNumber = null; + + var curLineNumber = null; + var prevLineNumber = null; if (myViz.curInstr > 0) { - highlightLineNumber = myViz.curTrace[myViz.curInstr - 1].line; + prevLineNumber = myViz.curTrace[myViz.curInstr - 1].line; // special-case for most 'return' events to prevent highlighting // and arrow on the same line ... if ((curEntry.event == 'return') && - (highlightLineNumber == curEntry.line) && + (prevLineNumber == curEntry.line) && (myViz.curInstr > 1)) { - highlightLineNumber = myViz.curTrace[myViz.curInstr - 2].line; + prevLineNumber = myViz.curTrace[myViz.curInstr - 2].line; } } - else { - highlightLineNumber = null; // at first instruction, don't highlight - // anything (unless hasError or isTerminated) - } - - if (hasError || isTerminated) { - highlightLineNumber = curEntry.line; - } - if (hasError) { - highlightColor = errorColor; + if (isTerminated) { + // must do this AFTER the assignment to prevLineNumber above (order matters!) + prevLineNumber = curEntry.line; } - - - var arrowLineNumber = null; - if (!isTerminated) { - arrowLineNumber = curEntry.line; + else { + curLineNumber = curEntry.line; } myViz.domRootD3.selectAll('#pyCodeOutputDiv td.gutter') .html(function (d) { - // arrow types: '\u21d2', '\u21f0', '\u2907' - if (d.lineNumber == arrowLineNumber) { + // arrow types: '\u21d2', '\u21f0', '\u2907' + + // give curLineNumber priority over prevLineNumber ... + if (d.lineNumber == curLineNumber) { return darkArrowHTML; } - else if (d.lineNumber == highlightLineNumber) { + else if (d.lineNumber == prevLineNumber) { return lightArrowHTML; } else { @@ -839,12 +827,11 @@ ExecutionVisualizer.prototype.updateOutput = function() { myViz.domRootD3.selectAll('#pyCodeOutputDiv td.lineNo') .attr('id', function(d) {return 'lineNo' + d.lineNumber;}); - // optionally highlight previously-executed line ... - /* + myViz.domRootD3.selectAll('#pyCodeOutputDiv td.cod') .style('background-color', function(d) { - if (d.lineNumber == highlightLineNumber) { - d.backgroundColor = highlightColor; + if (hasError && (d.lineNumber == curEntry.line)) { + d.backgroundColor = errorColor; } else { d.backgroundColor = null; @@ -852,7 +839,6 @@ ExecutionVisualizer.prototype.updateOutput = function() { return d.backgroundColor; }); - */ // returns True iff lineNo is visible in pyCodeOutputDiv From 2eb16a2e64cb319a410c9ab340d1f7a50f87b710 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 6 Sep 2012 22:17:32 -0700 Subject: [PATCH 247/502] minor tweaks and added arrow fades --- v3/css/pytutor.css | 8 ++------ v3/js/pytutor.js | 48 ++++++++++++++++++++++++++++++---------------- 2 files changed, 33 insertions(+), 23 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 760cd806a..ab924841a 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -100,15 +100,11 @@ div.ExecutionVisualizer table#pyCodeOutput td { div.ExecutionVisualizer table#pyCodeOutput .gutter { width: 1.2em; text-align: right; -} - -div.ExecutionVisualizer .darkArrow { - color: #d03939; /* darkRed in ../js/pytutor.js */ font-size: 16pt; + color: white; /* start white by default and then fade into color as needed */ } -div.ExecutionVisualizer .lightArrow { - color: #bbb; +div.ExecutionVisualizer .arrow { font-size: 16pt; } diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 1e9f3a590..0a26bb3b9 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -42,9 +42,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -var darkArrowHTML = '\u21d2'; -var lightArrowHTML = '\u21d2'; - var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer instance @@ -72,7 +69,7 @@ function ExecutionVisualizer(domRootID, dat, params) { // because each one contains IDENTICAL state information as the // 'step_line' entry immediately following it. this filtering allows the // visualization to not show as much redundancy. - //this.curTrace = this.curTrace.filter(function(e) {return e.event != 'call';}); + this.curTrace = this.curTrace.filter(function(e) {return e.event != 'call';}); this.curInstr = 0; @@ -199,8 +196,16 @@ ExecutionVisualizer.prototype.render = function() { \ '); - this.domRoot.find('#legendDiv') - .append(lightArrowHTML + ' line that has just executed

' + darkArrowHTML + ' next line to be executed

') + + this.domRoot + .find('#legendDiv') + .append(arrowHTML + ' line that has just executed') + .find('.arrow:last') + .css('color', lightArrowColor) + .end() + .append('

' + arrowHTML + ' next line to be executed

') + .find('.arrow:last') + .css('color', darkArrowColor); if (this.params.editCodeBaseURL) { @@ -642,9 +647,14 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { return 'cod'; } }) + .attr('id', function(d, i) { + if (i == 1) { + return 'lineNo' + d.lineNumber; + } + }) .html(function(d, i) { if (i == 0) { - return ''; + return '\u21d2'; } else if (i == 1) { return d.lineNumber; @@ -809,24 +819,21 @@ ExecutionVisualizer.prototype.updateOutput = function() { myViz.domRootD3.selectAll('#pyCodeOutputDiv td.gutter') - .html(function (d) { - // arrow types: '\u21d2', '\u21f0', '\u2907' - + .transition() + .duration(300) + .style('color', function (d) { // give curLineNumber priority over prevLineNumber ... if (d.lineNumber == curLineNumber) { - return darkArrowHTML; + return darkArrowColor; } else if (d.lineNumber == prevLineNumber) { - return lightArrowHTML; + return lightArrowColor; } else { - return ''; + return 'white'; } }); - myViz.domRootD3.selectAll('#pyCodeOutputDiv td.lineNo') - .attr('id', function(d) {return 'lineNo' + d.lineNumber;}); - myViz.domRootD3.selectAll('#pyCodeOutputDiv td.cod') .style('background-color', function(d) { @@ -852,7 +859,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { var H = codeOutputDiv.height(); // add a few pixels of fudge factor on the bottom end due to bottom scrollbar - return (PO <= LO) && (LO < (PO + H - 25)); + return (PO <= LO) && (LO < (PO + H - 30)); } @@ -1951,6 +1958,13 @@ var breakpointColor = darkRed; var hoverBreakpointColor = connectorBaseColor; +// Unicode arrow types: '\u21d2', '\u21f0', '\u2907' +var darkArrowColor = darkRed; +var lightArrowColor = '#bbb'; + +var arrowHTML = '\u21d2'; + + function assert(cond) { if (!cond) { alert("Assertion Failure (see console log for backtrace)"); From 6ab8a57e79eb510961369640ce0b34275e238bd3 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 6 Sep 2012 23:32:35 -0700 Subject: [PATCH 248/502] render a special floating red arrow for 'return' instructions --- v3/css/pytutor.css | 7 +++++ v3/example-code/happy.txt | 12 ++++++++ v3/js/opt-frontend.js | 5 ++++ v3/js/pytutor.js | 59 ++++++++++++++++++++++++++------------- v3/tutor.html | 1 + 5 files changed, 65 insertions(+), 19 deletions(-) create mode 100644 v3/example-code/happy.txt diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index ab924841a..75f2408d1 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -108,6 +108,13 @@ div.ExecutionVisualizer .arrow { font-size: 16pt; } +div.ExecutionVisualizer .arrowFloater { + width: 1.2em; + text-align: right; + font-size: 16pt; + position: absolute; +} + div.ExecutionVisualizer table#pyCodeOutput .lineNo { color: #aaa; padding: 0.2em; diff --git a/v3/example-code/happy.txt b/v3/example-code/happy.txt new file mode 100644 index 000000000..c2dd73280 --- /dev/null +++ b/v3/example-code/happy.txt @@ -0,0 +1,12 @@ +# From "Teaching with Python" by John Zelle +def happy(): + print("Happy Birthday to you!") + +def sing(P): + happy() + happy() + print("Happy Birthday dear " + P + "!") + happy() + +# main +sing("Fred") diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 717df4cd3..7171d347e 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -310,6 +310,11 @@ $(document).ready(function() { return false; }); + $("#happyExampleLink").click(function() { + $.get("example-code/happy.txt", setCodeMirrorVal); + return false; + }); + $("#newtonExampleLink").click(function() { $.get("example-code/sqrt.txt", setCodeMirrorVal); return false; diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 0a26bb3b9..a3af3cfe7 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -648,7 +648,10 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { } }) .attr('id', function(d, i) { - if (i == 1) { + if (i == 0) { + return 'gutterNo' + d.lineNumber; + } + else if (i == 1) { return 'lineNo' + d.lineNumber; } }) @@ -793,6 +796,11 @@ ExecutionVisualizer.prototype.updateOutput = function() { function highlightCodeLine() { /* if instrLimitReached, then treat like a normal non-terminating line */ var isTerminated = (!myViz.instrLimitReached && isLastInstr); + var isReturn = (curEntry.event == 'return'); + + var pcod = myViz.domRoot.find('#pyCodeOutputDiv'); + // reset first + pcod.find('.arrowFloater').remove(); var curLineNumber = null; @@ -800,13 +808,6 @@ ExecutionVisualizer.prototype.updateOutput = function() { if (myViz.curInstr > 0) { prevLineNumber = myViz.curTrace[myViz.curInstr - 1].line; - // special-case for most 'return' events to prevent highlighting - // and arrow on the same line ... - if ((curEntry.event == 'return') && - (prevLineNumber == curEntry.line) && - (myViz.curInstr > 1)) { - prevLineNumber = myViz.curTrace[myViz.curInstr - 2].line; - } } if (isTerminated) { @@ -817,12 +818,15 @@ ExecutionVisualizer.prototype.updateOutput = function() { curLineNumber = curEntry.line; } + // special-case rendering of floating arrow for returns + if (isReturn) { + curLineNumber = null; + } myViz.domRootD3.selectAll('#pyCodeOutputDiv td.gutter') .transition() .duration(300) .style('color', function (d) { - // give curLineNumber priority over prevLineNumber ... if (d.lineNumber == curLineNumber) { return darkArrowColor; } @@ -853,10 +857,9 @@ ExecutionVisualizer.prototype.updateOutput = function() { var lineNoTd = myViz.domRoot.find('#lineNo' + lineNo); var LO = lineNoTd.offset().top; - var codeOutputDiv = myViz.domRoot.find('#pyCodeOutputDiv'); - var PO = codeOutputDiv.offset().top; - var ST = codeOutputDiv.scrollTop(); - var H = codeOutputDiv.height(); + var PO = pcod.offset().top; + var ST = pcod.scrollTop(); + var H = pcod.height(); // add a few pixels of fudge factor on the bottom end due to bottom scrollbar return (PO <= LO) && (LO < (PO + H - 30)); @@ -868,13 +871,12 @@ ExecutionVisualizer.prototype.updateOutput = function() { var lineNoTd = myViz.domRoot.find('#lineNo' + lineNo); var LO = lineNoTd.offset().top; - var codeOutputDiv = myViz.domRoot.find('#pyCodeOutputDiv'); - var PO = codeOutputDiv.offset().top; - var ST = codeOutputDiv.scrollTop(); - var H = codeOutputDiv.height(); + var PO = pcod.offset().top; + var ST = pcod.scrollTop(); + var H = pcod.height(); - codeOutputDiv.stop(); // first stop all previously-queued animations - codeOutputDiv.animate({scrollTop: (ST + (LO - PO - (Math.round(H / 2))))}, 300); + pcod.stop(); // first stop all previously-queued animations + pcod.animate({scrollTop: (ST + (LO - PO - (Math.round(H / 2))))}, 300); } @@ -882,6 +884,25 @@ ExecutionVisualizer.prototype.updateOutput = function() { if (!isOutputLineVisible(curEntry.line)) { scrollCodeOutputToLine(curEntry.line); } + + + // do this AFTER scrolling is done, since we want the position to be final ... + + // for a return instruction that's about to be executed, + // render a "floating" arrow a half-line down to signify + // pointing slightly below a line ... + if (isReturn && !isTerminated) { + // position() returns the position relative to its parent, + // which is HOPEFULLY pcod + var curLinePos = pcod.find('#gutterNo' + curEntry.line).position(); + console.log(curLinePos.top, curLinePos.left); + + pcod.append('
' + arrowHTML + '
'); + pcod.find('.arrowFloater') + .css('color', darkArrowColor) + .offset({top: curLinePos.top + 5, left: curLinePos.left + 1, at: pcod}); + } + } diff --git a/v3/tutor.html b/v3/tutor.html index 2f6a96820..1a463b480 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -86,6 +86,7 @@

Basic Examples:
hello | +happy | intro | filter | tokenize | From da68b051e20eaca57a01436970bf13784bcb1a9e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 6 Sep 2012 23:37:40 -0700 Subject: [PATCH 249/502] minor --- v3/js/pytutor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index a3af3cfe7..f89c759db 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -900,7 +900,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { pcod.append('

' + arrowHTML + '
'); pcod.find('.arrowFloater') .css('color', darkArrowColor) - .offset({top: curLinePos.top + 5, left: curLinePos.left + 1, at: pcod}); + .offset({top: curLinePos.top + 4, left: curLinePos.left + 1, at: pcod}); } } From 35fbdbbf36a821d318b8467aa95aee7c6e7e66c8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 00:30:10 -0700 Subject: [PATCH 250/502] a simpler and more robust red bar for returning from functions (still not perfect yet, though) --- v3/js/pytutor.js | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index f89c759db..a5383aee1 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -838,6 +838,15 @@ ExecutionVisualizer.prototype.updateOutput = function() { } }); + myViz.domRootD3.selectAll('#pyCodeOutputDiv td.lineNo') + .style('border-bottom', function(d) { + if (isReturn && (d.lineNumber == curEntry.line)) { + return '2px solid ' + darkArrowColor; + } + else { + return ''; + } + }); myViz.domRootD3.selectAll('#pyCodeOutputDiv td.cod') .style('background-color', function(d) { @@ -884,25 +893,6 @@ ExecutionVisualizer.prototype.updateOutput = function() { if (!isOutputLineVisible(curEntry.line)) { scrollCodeOutputToLine(curEntry.line); } - - - // do this AFTER scrolling is done, since we want the position to be final ... - - // for a return instruction that's about to be executed, - // render a "floating" arrow a half-line down to signify - // pointing slightly below a line ... - if (isReturn && !isTerminated) { - // position() returns the position relative to its parent, - // which is HOPEFULLY pcod - var curLinePos = pcod.find('#gutterNo' + curEntry.line).position(); - console.log(curLinePos.top, curLinePos.left); - - pcod.append('
' + arrowHTML + '
'); - pcod.find('.arrowFloater') - .css('color', darkArrowColor) - .offset({top: curLinePos.top + 4, left: curLinePos.left + 1, at: pcod}); - } - } From d885230740734154fdbf716d095be7b4a8a1b05e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 18:22:21 -0700 Subject: [PATCH 251/502] got first version of svg-based double-arrows working :) --- v3/css/pytutor.css | 14 +---- v3/js/pytutor.js | 131 +++++++++++++++++++++++++++++---------------- 2 files changed, 87 insertions(+), 58 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 75f2408d1..49c055048 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -97,24 +97,14 @@ div.ExecutionVisualizer table#pyCodeOutput td { white-space: nowrap; } -div.ExecutionVisualizer table#pyCodeOutput .gutter { - width: 1.2em; - text-align: right; - font-size: 16pt; - color: white; /* start white by default and then fade into color as needed */ +div.ExecutionVisualizer #leftCodeGutterSVG { + width: 18px; } div.ExecutionVisualizer .arrow { font-size: 16pt; } -div.ExecutionVisualizer .arrowFloater { - width: 1.2em; - text-align: right; - font-size: 16pt; - position: absolute; -} - div.ExecutionVisualizer table#pyCodeOutput .lineNo { color: #aaa; padding: 0.2em; diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index a5383aee1..4e4b9d4a5 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -43,6 +43,18 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/* Coding gotchas: + +- NEVER use naked $(__) or d3.select(__) statements to select DOM elements. + + ALWAYS use myViz.domRoot or myViz.domRootD3 for jQuery and D3, respectively. + + Otherwise things will break in weird ways when you have more than one visualization + embedded within a webpage, due to multiple matches in the global namespace. + +*/ + + var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer instance // domRootID is the string ID of the root element where to render this instance @@ -104,6 +116,8 @@ function ExecutionVisualizer(domRootID, dat, params) { var instrLimitReached = false; + // the root elements for jQuery and D3 selections, respectively. + // ALWAYS use these and never use naked $(__) or d3.select(__) this.domRoot = $('#' + domRootID); this.domRootD3 = d3.select('#' + domRootID); @@ -338,7 +352,7 @@ ExecutionVisualizer.prototype.render = function() { this.updateOutput(); this.hasRendered = true; -}; +} // find the previous/next breakpoint to c or return -1 if it doesn't exist @@ -634,13 +648,10 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { .data(this.codeOutputLines) .enter().append('tr') .selectAll('td') - .data(function(d, i){return [d, d, d] /* map full data item down all three columns */;}) + .data(function(d, i){return [d, d] /* map full data item down both columns */;}) .enter().append('td') .attr('class', function(d, i) { if (i == 0) { - return 'gutter'; - } - else if (i == 1) { return 'lineNo'; } else { @@ -649,17 +660,11 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { }) .attr('id', function(d, i) { if (i == 0) { - return 'gutterNo' + d.lineNumber; - } - else if (i == 1) { return 'lineNo' + d.lineNumber; } }) .html(function(d, i) { if (i == 0) { - return '\u21d2'; - } - else if (i == 1) { return d.lineNumber; } else { @@ -667,6 +672,24 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { } }); + // create a left-most gutter td that spans ALL rows ... + myViz.domRoot.find('#pyCodeOutput tr:first') + .prepend(''); + + // create prevLineArrow and curLineArrow, but don't fill them in with colors just yet ... + myViz.domRootD3.select('svg#leftCodeGutterSVG') + .append('polygon') + .attr('id', 'prevLineArrow') + .attr('points', '0,3 12,3 12,0 18,5 12,10 12,7 0,7') + .attr('fill', 'white'); + + myViz.domRootD3.select('svg#leftCodeGutterSVG') + .append('polygon') + .attr('id', 'curLineArrow') + .attr('points', '0,3 12,3 12,0 18,5 12,10 12,7 0,7') + .attr('fill', 'white'); + + // 2012-09-05: Disable breakpoints for now to simplify UX /* if (!this.params.embeddedMode) { @@ -719,6 +742,18 @@ ExecutionVisualizer.prototype.updateOutput = function() { assert(this.curTrace); + // set the gutter's height to match that of its parent + // (we often can't do this earlier since the entire pane + // might be invisible and hence return a height of zero) + var gutterSVG = myViz.domRoot.find('svg#leftCodeGutterSVG'); + if (!gutterSVG.height()) { + gutterSVG.height(gutterSVG.parent().height()); + } + + var tableTop = 6; // manually adjust this so that it looks good :) + var rowHeight = myViz.domRoot.find('table#pyCodeOutput tr').first().height(); + + // call the callback if necessary (BEFORE rendering) if (this.params.updateOutputCallback) { this.params.updateOutputCallback(this); @@ -796,57 +831,61 @@ ExecutionVisualizer.prototype.updateOutput = function() { function highlightCodeLine() { /* if instrLimitReached, then treat like a normal non-terminating line */ var isTerminated = (!myViz.instrLimitReached && isLastInstr); - var isReturn = (curEntry.event == 'return'); var pcod = myViz.domRoot.find('#pyCodeOutputDiv'); - // reset first - pcod.find('.arrowFloater').remove(); - var curLineNumber = null; var prevLineNumber = null; + var curIsReturn = (curEntry.event == 'return'); + var prevIsReturn = false; + + if (myViz.curInstr > 0) { prevLineNumber = myViz.curTrace[myViz.curInstr - 1].line; + prevIsReturn = (myViz.curTrace[myViz.curInstr - 1].event == 'return'); } + curLineNumber = curEntry.line; + + // on 'return' events, give a bit more of a vertical nudge to show that + // the arrow is aligned with the 'bottom' of the line ... + var prevVerticalNudge = prevIsReturn ? 10 : 0; + var curVerticalNudge = curIsReturn ? 10 : 0; + + + // edge case for the final instruction :0 if (isTerminated) { - // must do this AFTER the assignment to prevLineNumber above (order matters!) - prevLineNumber = curEntry.line; + // don't show redundant arrows on the same line when terminated ... + if (prevLineNumber == curLineNumber) { + curLineNumber = null; + } + // otherwise have a smaller vertical nudge (to fit at bottom of display table) + else { + curVerticalNudge = 8; + } + } + + if (prevLineNumber) { + gutterSVG.find('#prevLineArrow') + .show() + .attr('fill', lightArrowColor) + .attr('transform', 'translate(0, ' + (((prevLineNumber - 1) * rowHeight) + tableTop + prevVerticalNudge) + ')'); } else { - curLineNumber = curEntry.line; + gutterSVG.find('#prevLineArrow').hide(); } - // special-case rendering of floating arrow for returns - if (isReturn) { - curLineNumber = null; + if (curLineNumber) { + gutterSVG.find('#curLineArrow') + .show() + .attr('fill', darkArrowColor) + .attr('transform', 'translate(0, ' + (((curLineNumber - 1) * rowHeight) + tableTop + curVerticalNudge) + ')'); + } + else { + gutterSVG.find('#curLineArrow').hide(); } - myViz.domRootD3.selectAll('#pyCodeOutputDiv td.gutter') - .transition() - .duration(300) - .style('color', function (d) { - if (d.lineNumber == curLineNumber) { - return darkArrowColor; - } - else if (d.lineNumber == prevLineNumber) { - return lightArrowColor; - } - else { - return 'white'; - } - }); - - myViz.domRootD3.selectAll('#pyCodeOutputDiv td.lineNo') - .style('border-bottom', function(d) { - if (isReturn && (d.lineNumber == curEntry.line)) { - return '2px solid ' + darkArrowColor; - } - else { - return ''; - } - }); myViz.domRootD3.selectAll('#pyCodeOutputDiv td.cod') .style('background-color', function(d) { @@ -1971,7 +2010,7 @@ var hoverBreakpointColor = connectorBaseColor; // Unicode arrow types: '\u21d2', '\u21f0', '\u2907' var darkArrowColor = darkRed; -var lightArrowColor = '#bbb'; +var lightArrowColor = '#ccc'; var arrowHTML = '\u21d2'; From 697f8d397a15792c983917216d7e97bf60792948 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 18:25:34 -0700 Subject: [PATCH 252/502] ugh IE!!! --- v3/js/pytutor.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 4e4b9d4a5..3685abdaf 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -673,8 +673,9 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { }); // create a left-most gutter td that spans ALL rows ... + // (NB: valign="top" is CRUCIAL for this to work in IE) myViz.domRoot.find('#pyCodeOutput tr:first') - .prepend(''); + .prepend(''); // create prevLineArrow and curLineArrow, but don't fill them in with colors just yet ... myViz.domRootD3.select('svg#leftCodeGutterSVG') From c3b02d59448e48503575441f15a412ba98ae79c0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 18:50:33 -0700 Subject: [PATCH 253/502] H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh H#*(U@#NWF:^@#:ORWOFH:!OPR3 Internet Explorer *!^#(J@#LJSDFh --- v3/js/pytutor.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 3685abdaf..c33354600 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -752,8 +752,14 @@ ExecutionVisualizer.prototype.updateOutput = function() { } var tableTop = 6; // manually adjust this so that it looks good :) - var rowHeight = myViz.domRoot.find('table#pyCodeOutput tr').first().height(); + // this weird contortion is necessary to get the accurate row height on Internet Explorer + // (simpler methods work on all other major browsers, erghhhhhh!!!) + var rowHeight = 0; + if (this.codeOutputLines && this.codeOutputLines.length > 1) { + rowHeight = (myViz.domRoot.find('table#pyCodeOutput tr:nth-child(2)').offset().top - + myViz.domRoot.find('table#pyCodeOutput tr:first').offset().top); + } // call the callback if necessary (BEFORE rendering) if (this.params.updateOutputCallback) { From 62916436ec2b67d1804f841fd8639ffb918dec2e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 18:56:10 -0700 Subject: [PATCH 254/502] sorry imran ... after almost three years, your suggestion gets canned --- v3/js/pytutor.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index c33354600..6f53da1a2 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -304,12 +304,6 @@ ExecutionVisualizer.prototype.render = function() { myViz.domRoot.find("#errorOutput").html(htmlspecialchars(warningMsg)); myViz.domRoot.find("#errorOutput").show(); } - // as imran suggests, for a (non-error) one-liner, SNIP off the - // first instruction so that we start after the FIRST instruction - // has been executed ... - else if (this.curTrace.length == 2) { - this.curTrace.shift(); - } // set up slider after postprocessing curTrace From c4643674b33a0e33ed6ea1cf05be9df776180fa2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 19:16:40 -0700 Subject: [PATCH 255/502] more grossly hacks for IE --- v3/css/pytutor.css | 2 ++ v3/js/pytutor.js | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 49c055048..0442d261e 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -99,6 +99,8 @@ div.ExecutionVisualizer table#pyCodeOutput td { div.ExecutionVisualizer #leftCodeGutterSVG { width: 18px; + height: 0px; /* programmatically set this later ... IE needs this to + be 0 or it defaults to something arbitrary and gross */ } div.ExecutionVisualizer .arrow { diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 6f53da1a2..c5569b552 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -736,6 +736,10 @@ ExecutionVisualizer.prototype.updateOutput = function() { assert(this.curTrace); + // there's no point in re-rendering if this pane isn't even visible in the first place! + if (!myViz.domRoot.is(':visible')) { + return; + } // set the gutter's height to match that of its parent // (we often can't do this earlier since the entire pane @@ -749,7 +753,10 @@ ExecutionVisualizer.prototype.updateOutput = function() { // this weird contortion is necessary to get the accurate row height on Internet Explorer // (simpler methods work on all other major browsers, erghhhhhh!!!) - var rowHeight = 0; + + // first take care of edge case when there's only one line ... + var rowHeight = myViz.domRoot.find('table#pyCodeOutput td.cod:first').height(); + // ... then handle the (much more common) multi-line case ... if (this.codeOutputLines && this.codeOutputLines.length > 1) { rowHeight = (myViz.domRoot.find('table#pyCodeOutput tr:nth-child(2)').offset().top - myViz.domRoot.find('table#pyCodeOutput tr:first').offset().top); From 4bd4730cc4e482655259335e58a00264c956ed10 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 19:20:42 -0700 Subject: [PATCH 256/502] teeny --- v3/css/pytutor.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 0442d261e..8c82432ff 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -159,8 +159,8 @@ div.ExecutionVisualizer #vcrControls { } div.ExecutionVisualizer #vcrControls button { - margin-left: 5px; - margin-right: 5px; + margin-left: 4px; + margin-right: 4px; } div.ExecutionVisualizer #pyStdout { From c98dcf66f0c8334f5014ec15e302ff23575e3d34 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 19:21:49 -0700 Subject: [PATCH 257/502] teeny2 --- v3/css/pytutor.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 8c82432ff..5ad55713f 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -159,8 +159,8 @@ div.ExecutionVisualizer #vcrControls { } div.ExecutionVisualizer #vcrControls button { - margin-left: 4px; - margin-right: 4px; + margin-left: 3px; + margin-right: 3px; } div.ExecutionVisualizer #pyStdout { From ca150f4c2ae436b16abc4305d092dd53ef3e8c2b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 19:32:06 -0700 Subject: [PATCH 258/502] some cleanups --- v3/css/pytutor.css | 9 +++++++++ v3/js/pytutor.js | 28 +++++++++++++++++----------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 5ad55713f..61f81f9e0 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -103,6 +103,12 @@ div.ExecutionVisualizer #leftCodeGutterSVG { be 0 or it defaults to something arbitrary and gross */ } +div.ExecutionVisualizer #prevLegendArrowSVG, +div.ExecutionVisualizer #curLegendArrowSVG { + width: 18px; + height: 10px; +} + div.ExecutionVisualizer .arrow { font-size: 16pt; } @@ -124,8 +130,11 @@ div.ExecutionVisualizer table#pyCodeOutput .cod { div.ExecutionVisualizer div#legendDiv { margin: 0px; + margin-top: 10px; + margin-bottom: 5px; padding: 0px; text-align: left; + color: #888; } div.ExecutionVisualizer div#editCodeLinkDiv { diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index c5569b552..d48b2a016 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -55,6 +55,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +var svgArrowPolygon = '0,3 12,3 12,0 18,5 12,10 12,7 0,7'; + var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer instance // domRootID is the string ID of the root element where to render this instance @@ -211,15 +213,19 @@ ExecutionVisualizer.prototype.render = function() { '); - this.domRoot - .find('#legendDiv') - .append(arrowHTML + ' line that has just executed') - .find('.arrow:last') - .css('color', lightArrowColor) - .end() - .append('

' + arrowHTML + ' next line to be executed

') - .find('.arrow:last') - .css('color', darkArrowColor); + this.domRoot.find('#legendDiv') + .append(' line that has just executed') + .append('

next line to be executed

'); + + myViz.domRootD3.select('svg#prevLegendArrowSVG') + .append('polygon') + .attr('points', svgArrowPolygon) + .attr('fill', lightArrowColor); + + myViz.domRootD3.select('svg#curLegendArrowSVG') + .append('polygon') + .attr('points', svgArrowPolygon) + .attr('fill', darkArrowColor); if (this.params.editCodeBaseURL) { @@ -675,13 +681,13 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { myViz.domRootD3.select('svg#leftCodeGutterSVG') .append('polygon') .attr('id', 'prevLineArrow') - .attr('points', '0,3 12,3 12,0 18,5 12,10 12,7 0,7') + .attr('points', svgArrowPolygon) .attr('fill', 'white'); myViz.domRootD3.select('svg#leftCodeGutterSVG') .append('polygon') .attr('id', 'curLineArrow') - .attr('points', '0,3 12,3 12,0 18,5 12,10 12,7 0,7') + .attr('points', svgArrowPolygon) .attr('fill', 'white'); From 8cc383f03c20207112b585a825f2bb1769f4c85a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 19:35:48 -0700 Subject: [PATCH 259/502] teeny3 --- v3/css/pytutor.css | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 61f81f9e0..07fa354d6 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -129,12 +129,12 @@ div.ExecutionVisualizer table#pyCodeOutput .cod { } div.ExecutionVisualizer div#legendDiv { - margin: 0px; - margin-top: 10px; - margin-bottom: 5px; + margin-top: 25px; + margin-bottom: 20px; padding: 0px; text-align: left; - color: #888; + color: #666; + font-size: 9pt; } div.ExecutionVisualizer div#editCodeLinkDiv { From 223594c517d43ea64ef5393827b4928a774773a3 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 19:38:45 -0700 Subject: [PATCH 260/502] teeny4 --- v3/css/pytutor.css | 3 +-- v3/js/pytutor.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 07fa354d6..c70bbd2ea 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -129,8 +129,7 @@ div.ExecutionVisualizer table#pyCodeOutput .cod { } div.ExecutionVisualizer div#legendDiv { - margin-top: 25px; - margin-bottom: 20px; + margin-top: 20px; padding: 0px; text-align: left; color: #666; diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index d48b2a016..6089bf60d 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -215,7 +215,7 @@ ExecutionVisualizer.prototype.render = function() { this.domRoot.find('#legendDiv') .append(' line that has just executed') - .append('

next line to be executed

'); + .append('

next line to be executed

'); myViz.domRootD3.select('svg#prevLegendArrowSVG') .append('polygon') From 048c69a8998cae33de389f369f98b20d14b7a690 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 7 Sep 2012 19:44:38 -0700 Subject: [PATCH 261/502] bah --- v3/js/pytutor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 6089bf60d..b5f8e36ec 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -215,7 +215,7 @@ ExecutionVisualizer.prototype.render = function() { this.domRoot.find('#legendDiv') .append(' line that has just executed') - .append('

next line to be executed

'); + .append('

next line to execute

'); myViz.domRootD3.select('svg#prevLegendArrowSVG') .append('polygon') From 2e158d963e975f4d3389ef7f5b3838ef9dda9ef4 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 9 Sep 2012 11:17:08 -0700 Subject: [PATCH 262/502] keep return values around for zombie frames but NOT for subsequent generator calls --- v3/pg_logger.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 2b3688fc1..0e470f1d6 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -239,6 +239,14 @@ def user_call(self, frame, argument_list): if self._wait_for_mainpyfile: return if self.stop_here(frame): + # delete __return__ so that on subsequent calls to + # a generator function, the OLD yielded (returned) + # value gets deleted from the frame ... + try: + del frame.f_locals['__return__'] + except KeyError: + pass + self.interaction(frame, None, 'call') def user_line(self, frame): @@ -254,12 +262,6 @@ def user_return(self, frame, return_value): """This function is called when a return trap is set here.""" frame.f_locals['__return__'] = return_value self.interaction(frame, None, 'return') - # delete __return__ so that on subsequent calls to - # a generator function, the OLD yielded (returned) - # value gets deleted from the frame ... - # (this also clears away crufty obsolete return values in other - # kinds of examples as well, most notably those involving closures) - del frame.f_locals['__return__'] def user_exception(self, frame, exc_info): exc_type, exc_value, exc_traceback = exc_info From 68767c0a1e5fc8857e43d9756d3304aaf66a3395 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 9 Sep 2012 12:48:57 -0700 Subject: [PATCH 263/502] update tests to reflect keeping return values for closure zombie frames --- v3/example-code/closures/closure1.golden | 35 +- v3/example-code/closures/closure2.golden | 161 +- v3/example-code/closures/closure3.golden | 77 +- v3/example-code/closures/closure4.golden | 147 +- v3/example-code/closures/closure5.golden | 651 +++- v3/example-code/closures/lambda-param.golden | 4 +- v3/example-code/decorators.golden | 175 +- v3/example-code/genexpr.golden | 114 +- v3/example-code/happy.golden | 952 +++++ v3/example-code/linked-lists/ll2.golden | 829 ++++- v3/example-code/map.golden | 7 +- v3/example-code/oop_1.golden | 595 ++- v3/example-code/oop_2.golden | 504 ++- v3/example-code/oop_inherit.golden | 820 ++++- v3/example-code/oop_small.golden | 351 +- v3/example-code/sqrt.golden | 20 +- v3/example-code/sum-list.golden | 3466 ++++++++++++++++++ v3/example-code/sum.golden | 4 +- v3/tests/backend-tests/class_test.golden | 532 ++- v3/tests/backend-tests/john-compose.golden | 77 +- v3/tests/backend-tests/lambda_1.golden | 4 +- v3/tests/backend-tests/ling-scheme-2.golden | 7 +- v3/tests/backend-tests/ling-scheme-3.golden | 7 +- v3/tests/backend-tests/newstyle_class.golden | 308 +- 24 files changed, 9356 insertions(+), 491 deletions(-) create mode 100644 v3/example-code/happy.golden create mode 100644 v3/example-code/sum-list.golden diff --git a/v3/example-code/closures/closure1.golden b/v3/example-code/closures/closure1.golden index 72c708a07..60defd48b 100644 --- a/v3/example-code/closures/closure1.golden +++ b/v3/example-code/closures/closure1.golden @@ -227,6 +227,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 2 + ], "bar": [ "REF", 2 @@ -240,7 +244,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] } ], @@ -281,6 +286,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 2 + ], "bar": [ "REF", 2 @@ -294,7 +303,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { @@ -352,6 +362,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 2 + ], "bar": [ "REF", 2 @@ -365,7 +379,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { @@ -423,6 +438,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 2 + ], "bar": [ "REF", 2 @@ -436,7 +455,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { @@ -496,6 +516,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 2 + ], "bar": [ "REF", 2 @@ -509,7 +533,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] } ], diff --git a/v3/example-code/closures/closure2.golden b/v3/example-code/closures/closure2.golden index 37b206be9..57084967a 100644 --- a/v3/example-code/closures/closure2.golden +++ b/v3/example-code/closures/closure2.golden @@ -301,6 +301,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -314,7 +318,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] } ], @@ -365,6 +370,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -378,7 +387,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { @@ -444,6 +454,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -457,7 +471,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { @@ -523,6 +538,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -536,7 +555,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { @@ -612,6 +632,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -625,7 +649,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { @@ -707,6 +732,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -720,13 +749,18 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, + "__return__": [ + "REF", + 4 + ], "bar_deux": [ "REF", 4 @@ -740,7 +774,8 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux" + "bar_deux", + "__return__" ] } ], @@ -801,6 +836,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -814,13 +853,18 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, + "__return__": [ + "REF", + 4 + ], "bar_deux": [ "REF", 4 @@ -834,7 +878,8 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux" + "bar_deux", + "__return__" ] }, { @@ -912,6 +957,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -925,13 +974,18 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, + "__return__": [ + "REF", + 4 + ], "bar_deux": [ "REF", 4 @@ -945,7 +999,8 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux" + "bar_deux", + "__return__" ] }, { @@ -1023,6 +1078,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -1036,13 +1095,18 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, + "__return__": [ + "REF", + 4 + ], "bar_deux": [ "REF", 4 @@ -1056,7 +1120,8 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux" + "bar_deux", + "__return__" ] }, { @@ -1136,6 +1201,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -1149,13 +1218,18 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, + "__return__": [ + "REF", + 4 + ], "bar_deux": [ "REF", 4 @@ -1169,7 +1243,8 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux" + "bar_deux", + "__return__" ] } ], @@ -1230,6 +1305,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -1243,13 +1322,18 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, + "__return__": [ + "REF", + 4 + ], "bar_deux": [ "REF", 4 @@ -1263,7 +1347,8 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux" + "bar_deux", + "__return__" ] }, { @@ -1341,6 +1426,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -1354,13 +1443,18 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, + "__return__": [ + "REF", + 4 + ], "bar_deux": [ "REF", 4 @@ -1374,7 +1468,8 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux" + "bar_deux", + "__return__" ] }, { @@ -1452,6 +1547,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -1465,13 +1564,18 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, + "__return__": [ + "REF", + 4 + ], "bar_deux": [ "REF", 4 @@ -1485,7 +1589,8 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux" + "bar_deux", + "__return__" ] }, { @@ -1565,6 +1670,10 @@ "frame_id": 1, "encoded_locals": { "y": 1, + "__return__": [ + "REF", + 3 + ], "bar": [ "REF", 3 @@ -1578,13 +1687,18 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "y", - "bar" + "bar", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "y": 1000, + "__return__": [ + "REF", + 4 + ], "bar_deux": [ "REF", 4 @@ -1598,7 +1712,8 @@ "unique_hash": "foo_deux_f2_p_z", "ordered_varnames": [ "y", - "bar_deux" + "bar_deux", + "__return__" ] } ], diff --git a/v3/example-code/closures/closure3.golden b/v3/example-code/closures/closure3.golden index 43b4b2ecb..7a968114d 100644 --- a/v3/example-code/closures/closure3.golden +++ b/v3/example-code/closures/closure3.golden @@ -665,6 +665,10 @@ "REF", 4 ], + "__return__": [ + "REF", + 5 + ], "baz": [ "REF", 5 @@ -680,7 +684,8 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz" + "baz", + "__return__" ] } ], @@ -739,6 +744,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": [ "REF", 2 @@ -756,7 +765,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar" + "bar", + "__return__" ] }, { @@ -766,6 +776,10 @@ "REF", 4 ], + "__return__": [ + "REF", + 5 + ], "baz": [ "REF", 5 @@ -781,7 +795,8 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz" + "baz", + "__return__" ] } ], @@ -844,6 +859,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": [ "REF", 2 @@ -861,7 +880,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar" + "bar", + "__return__" ] }, { @@ -871,6 +891,10 @@ "REF", 4 ], + "__return__": [ + "REF", + 5 + ], "baz": [ "REF", 5 @@ -886,7 +910,8 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz" + "baz", + "__return__" ] }, { @@ -978,6 +1003,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": [ "REF", 2 @@ -995,7 +1024,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar" + "bar", + "__return__" ] }, { @@ -1005,6 +1035,10 @@ "REF", 4 ], + "__return__": [ + "REF", + 5 + ], "baz": [ "REF", 5 @@ -1020,7 +1054,8 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz" + "baz", + "__return__" ] }, { @@ -1112,6 +1147,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": [ "REF", 2 @@ -1129,7 +1168,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar" + "bar", + "__return__" ] }, { @@ -1139,6 +1179,10 @@ "REF", 4 ], + "__return__": [ + "REF", + 5 + ], "baz": [ "REF", 5 @@ -1154,7 +1198,8 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz" + "baz", + "__return__" ] }, { @@ -1248,6 +1293,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": [ "REF", 2 @@ -1265,7 +1314,8 @@ "unique_hash": "foo_f1_p_z", "ordered_varnames": [ "x", - "bar" + "bar", + "__return__" ] }, { @@ -1275,6 +1325,10 @@ "REF", 4 ], + "__return__": [ + "REF", + 5 + ], "baz": [ "REF", 5 @@ -1290,7 +1344,8 @@ "unique_hash": "bar_f2_p_z", "ordered_varnames": [ "y", - "baz" + "baz", + "__return__" ] } ], diff --git a/v3/example-code/closures/closure4.golden b/v3/example-code/closures/closure4.golden index 3b39773ee..d26bb55af 100644 --- a/v3/example-code/closures/closure4.golden +++ b/v3/example-code/closures/closure4.golden @@ -226,6 +226,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -240,7 +244,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] } ], @@ -280,6 +285,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -294,7 +303,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -349,6 +359,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -363,7 +377,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -418,6 +433,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -432,7 +451,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -497,6 +517,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -511,7 +535,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -582,6 +607,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -596,12 +625,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 2, "g": [ "REF", @@ -616,7 +650,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] } ], @@ -666,6 +701,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -680,12 +719,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 2, "g": [ "REF", @@ -700,7 +744,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -767,6 +812,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -781,12 +830,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 2, "g": [ "REF", @@ -801,7 +855,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -868,6 +923,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -882,12 +941,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 2, "g": [ "REF", @@ -902,7 +966,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -971,6 +1036,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -985,12 +1054,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 2, "g": [ "REF", @@ -1005,7 +1079,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1072,6 +1147,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -1086,12 +1165,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 2, "g": [ "REF", @@ -1106,7 +1190,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1173,6 +1258,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -1187,12 +1276,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 2, "g": [ "REF", @@ -1207,7 +1301,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1276,6 +1371,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": 1, "g": [ "REF", @@ -1290,12 +1389,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 2, "g": [ "REF", @@ -1310,7 +1414,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] } ], diff --git a/v3/example-code/closures/closure5.golden b/v3/example-code/closures/closure5.golden index 549e7897d..3251000b6 100644 --- a/v3/example-code/closures/closure5.golden +++ b/v3/example-code/closures/closure5.golden @@ -231,6 +231,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -245,7 +249,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] } ], @@ -290,6 +295,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -304,7 +313,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -364,6 +374,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -378,7 +392,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -438,6 +453,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -452,7 +471,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -522,6 +542,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -536,7 +560,8 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -617,6 +642,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -631,12 +660,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -651,7 +685,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] } ], @@ -711,6 +746,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -725,12 +764,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -745,7 +789,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -818,6 +863,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -832,12 +881,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -852,7 +906,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -925,6 +980,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -939,12 +998,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -959,7 +1023,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1051,6 +1116,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -1065,12 +1134,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -1085,7 +1159,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1177,6 +1252,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -1191,12 +1270,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -1211,7 +1295,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1303,6 +1388,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -1317,12 +1406,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -1337,7 +1431,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1448,6 +1543,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -1462,12 +1561,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -1482,7 +1586,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1593,6 +1698,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -1607,12 +1716,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -1627,7 +1741,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1738,6 +1853,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -1752,12 +1871,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -1772,7 +1896,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -1902,6 +2027,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -1916,12 +2045,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -1936,7 +2070,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -2066,6 +2201,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -2080,12 +2219,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -2100,7 +2244,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -2230,6 +2375,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -2244,12 +2393,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -2264,7 +2418,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -2413,6 +2568,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -2427,12 +2586,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -2447,7 +2611,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -2596,6 +2761,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -2610,12 +2779,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -2630,7 +2804,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -2779,6 +2954,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -2793,12 +2972,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -2813,7 +2997,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -2964,6 +3149,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -2978,12 +3167,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -2998,7 +3192,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -3130,6 +3325,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -3144,12 +3343,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -3164,7 +3368,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -3277,6 +3482,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -3291,12 +3500,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -3311,7 +3525,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -3405,6 +3620,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -3419,12 +3638,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -3439,7 +3663,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -3516,6 +3741,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -3530,12 +3759,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -3550,7 +3784,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -3623,6 +3858,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -3637,12 +3876,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -3657,7 +3901,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -3730,6 +3975,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -3744,12 +3993,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -3764,7 +4018,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -3856,6 +4111,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -3870,12 +4129,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -3890,7 +4154,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -3982,6 +4247,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -3996,12 +4265,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -4016,7 +4290,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -4108,6 +4383,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -4122,12 +4401,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -4142,7 +4426,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -4253,6 +4538,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -4267,12 +4556,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -4287,7 +4581,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -4398,6 +4693,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -4412,12 +4711,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -4432,7 +4736,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -4543,6 +4848,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -4557,12 +4866,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -4577,7 +4891,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -4707,6 +5022,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -4721,12 +5040,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -4741,7 +5065,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -4871,6 +5196,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -4885,12 +5214,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -4905,7 +5239,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -5035,6 +5370,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -5049,12 +5388,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -5069,7 +5413,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -5218,6 +5563,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -5232,12 +5581,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -5252,7 +5606,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -5401,6 +5756,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -5415,12 +5774,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -5435,7 +5799,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -5584,6 +5949,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -5598,12 +5967,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -5618,7 +5992,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -5786,6 +6161,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -5800,12 +6179,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -5820,7 +6204,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -5988,6 +6373,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -6002,12 +6391,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -6022,7 +6416,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -6190,6 +6585,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -6204,12 +6603,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -6224,7 +6628,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -6394,6 +6799,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -6408,12 +6817,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -6428,7 +6842,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -6579,6 +6994,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -6593,12 +7012,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -6613,7 +7037,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -6745,6 +7170,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -6759,12 +7188,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -6779,7 +7213,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -6892,6 +7327,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -6906,12 +7345,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -6926,7 +7370,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -7020,6 +7465,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -7034,12 +7483,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -7054,7 +7508,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { @@ -7132,6 +7587,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 3 + ], "x": 3, "g": [ "REF", @@ -7146,12 +7605,17 @@ "unique_hash": "f_f1_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "x": 4, "g": [ "REF", @@ -7166,7 +7630,8 @@ "unique_hash": "f_f2_p_z", "ordered_varnames": [ "x", - "g" + "g", + "__return__" ] } ], diff --git a/v3/example-code/closures/lambda-param.golden b/v3/example-code/closures/lambda-param.golden index 3bf4753ae..981686dd2 100644 --- a/v3/example-code/closures/lambda-param.golden +++ b/v3/example-code/closures/lambda-param.golden @@ -714,6 +714,7 @@ { "frame_id": 1, "encoded_locals": { + "__return__": null, "x": 10 }, "is_highlighted": false, @@ -723,7 +724,8 @@ "parent_frame_id_list": [], "unique_hash": "foo_f1_p_z", "ordered_varnames": [ - "x" + "x", + "__return__" ] } ], diff --git a/v3/example-code/decorators.golden b/v3/example-code/decorators.golden index f2723f388..67355fc21 100644 --- a/v3/example-code/decorators.golden +++ b/v3/example-code/decorators.golden @@ -292,6 +292,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -304,7 +308,8 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -372,6 +377,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -384,7 +393,8 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -452,6 +462,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -464,7 +478,8 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -543,6 +558,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -555,12 +574,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -573,7 +597,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] } ], @@ -633,6 +658,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -645,12 +674,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -663,7 +697,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -736,6 +771,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -748,12 +787,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -766,7 +810,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -839,6 +884,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -851,12 +900,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -869,7 +923,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -955,6 +1010,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -967,12 +1026,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -985,7 +1049,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -1071,6 +1136,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -1083,12 +1152,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -1101,7 +1175,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -1198,6 +1273,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -1210,12 +1289,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -1228,7 +1312,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -1325,6 +1410,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -1337,12 +1426,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -1355,7 +1449,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -1456,6 +1551,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -1468,12 +1567,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -1486,7 +1590,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -1576,6 +1681,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -1588,12 +1697,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -1606,7 +1720,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { @@ -1684,6 +1799,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "fn": [ "REF", 3 @@ -1696,12 +1815,17 @@ "parent_frame_id_list": [], "unique_hash": "make_italic_f1_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { + "__return__": [ + "REF", + 5 + ], "fn": [ "REF", 4 @@ -1714,7 +1838,8 @@ "parent_frame_id_list": [], "unique_hash": "make_bold_f2_p_z", "ordered_varnames": [ - "fn" + "fn", + "__return__" ] } ], diff --git a/v3/example-code/genexpr.golden b/v3/example-code/genexpr.golden index 85931e7a5..aebc24d6d 100644 --- a/v3/example-code/genexpr.golden +++ b/v3/example-code/genexpr.golden @@ -1,5 +1,5 @@ { - "code": "x = (i for i in range(10))\n\nfor e in x:\n print(e)\n", + "code": "# NB: there's a known bug when frames of exited functions are displayed\nx = (i for i in range(10))\n\nfor e in x:\n print(e)\n", "trace": [ { "ordered_globals": [], @@ -8,7 +8,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -30,7 +30,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -75,7 +75,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -120,7 +120,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -169,7 +169,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -193,7 +193,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -217,7 +217,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -266,7 +266,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -315,7 +315,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -366,7 +366,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -390,7 +390,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -414,7 +414,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -463,7 +463,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -512,7 +512,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -563,7 +563,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -587,7 +587,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -611,7 +611,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -660,7 +660,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -709,7 +709,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -760,7 +760,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -784,7 +784,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -808,7 +808,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -857,7 +857,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -906,7 +906,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -957,7 +957,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -981,7 +981,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -1005,7 +1005,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -1054,7 +1054,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -1103,7 +1103,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1154,7 +1154,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -1178,7 +1178,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -1202,7 +1202,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -1251,7 +1251,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -1300,7 +1300,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1351,7 +1351,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -1375,7 +1375,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -1399,7 +1399,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -1448,7 +1448,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -1497,7 +1497,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1548,7 +1548,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -1572,7 +1572,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -1596,7 +1596,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -1645,7 +1645,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -1694,7 +1694,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1745,7 +1745,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -1769,7 +1769,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -1793,7 +1793,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -1842,7 +1842,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -1891,7 +1891,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1942,7 +1942,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -1966,7 +1966,7 @@ " at 0xADDR>" ] }, - "line": 4, + "line": 5, "event": "step_line" }, { @@ -1990,7 +1990,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "step_line" }, { @@ -2039,7 +2039,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "call" }, { @@ -2088,7 +2088,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2139,7 +2139,7 @@ "" ] }, - "line": 1, + "line": 2, "event": "return" }, { @@ -2163,7 +2163,7 @@ " at 0xADDR>" ] }, - "line": 3, + "line": 4, "event": "return" } ] diff --git a/v3/example-code/happy.golden b/v3/example-code/happy.golden new file mode 100644 index 000000000..ea1a6a7e0 --- /dev/null +++ b/v3/example-code/happy.golden @@ -0,0 +1,952 @@ +{ + "code": "# From \"Teaching with Python\" by John Zelle\ndef happy():\n print(\"Happy Birthday to you!\")\n\ndef sing(P):\n happy()\n happy()\n print(\"Happy Birthday dear \" + P + \"!\")\n happy()\n\n# main\nsing(\"Fred\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P", + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/example-code/linked-lists/ll2.golden b/v3/example-code/linked-lists/ll2.golden index 3e52ba4a4..6437333ed 100644 --- a/v3/example-code/linked-lists/ll2.golden +++ b/v3/example-code/linked-lists/ll2.golden @@ -1324,6 +1324,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -1336,7 +1340,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -1433,6 +1438,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -1467,6 +1486,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -1479,7 +1502,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -1577,6 +1601,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -1611,6 +1649,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -1623,7 +1665,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -1721,6 +1764,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -1755,6 +1812,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -1767,7 +1828,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -1889,6 +1951,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -1927,6 +2003,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -1939,7 +2019,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -2061,6 +2142,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2099,6 +2194,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -2111,7 +2210,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -2233,6 +2333,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2275,6 +2389,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -2287,7 +2405,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -2411,6 +2530,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2457,6 +2590,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -2469,7 +2606,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -2570,6 +2708,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2616,6 +2768,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -2628,7 +2784,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -2729,6 +2886,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2775,6 +2946,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -2787,7 +2962,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -2915,6 +3091,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -2965,6 +3155,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -2977,7 +3171,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -3105,6 +3300,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3155,6 +3364,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -3167,7 +3380,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -3295,6 +3509,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3349,6 +3577,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -3361,7 +3593,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -3491,6 +3724,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3552,6 +3799,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -3564,7 +3815,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -3665,6 +3917,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3726,6 +3992,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -3738,7 +4008,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -3839,6 +4110,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -3900,6 +4185,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -3912,7 +4201,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -4040,6 +4330,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -4105,6 +4409,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -4117,7 +4425,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -4245,6 +4554,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -4310,6 +4633,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -4322,7 +4649,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -4450,6 +4778,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -4519,6 +4861,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -4531,7 +4877,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -4661,6 +5008,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -4737,6 +5098,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -4749,7 +5114,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -4850,6 +5216,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -4926,6 +5306,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -4938,7 +5322,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -5039,6 +5424,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -5115,6 +5514,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -5127,7 +5530,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -5255,6 +5659,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -5335,6 +5753,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -5347,7 +5769,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -5475,6 +5898,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -5555,6 +5992,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -5567,7 +6008,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -5695,6 +6137,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -5779,6 +6235,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -5791,7 +6251,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -5921,6 +6382,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -6012,6 +6487,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -6024,7 +6503,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -6111,17 +6591,31 @@ ] ] ], - "6": [ + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ "DICT", [ - "data", - 1 + "__doc__", + null ], [ - "next", + "__init__", [ "REF", - 5 + 8 ] ] ], @@ -6216,6 +6710,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -6228,7 +6726,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -6329,6 +6828,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -6420,6 +6933,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -6432,7 +6949,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -6560,6 +7078,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -6655,6 +7187,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -6667,7 +7203,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -6795,6 +7332,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -6890,6 +7441,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -6902,7 +7457,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -7030,6 +7586,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -7129,6 +7699,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -7141,7 +7715,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -7271,6 +7846,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -7377,6 +7966,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -7389,7 +7982,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -7490,6 +8084,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -7596,6 +8204,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -7608,7 +8220,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -7709,6 +8322,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -7815,6 +8442,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -7827,7 +8458,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -7955,6 +8587,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -8065,6 +8711,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -8077,7 +8727,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -8205,6 +8856,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -8315,6 +8980,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -8327,7 +8996,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -8455,6 +9125,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -8569,6 +9253,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -8581,7 +9269,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] }, { @@ -8711,6 +9400,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -8832,6 +9535,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -8844,7 +9551,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -8945,6 +9653,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", @@ -9066,6 +9788,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 7 + ], "__init__": [ "REF", 8 @@ -9078,7 +9804,8 @@ "parent_frame_id_list": [], "unique_hash": "Node_f1_p_z", "ordered_varnames": [ - "__init__" + "__init__", + "__return__" ] } ], @@ -9179,6 +9906,20 @@ ] ] ], + "7": [ + "DICT", + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], "8": [ "FUNCTION", "__init__(self, data, next)", diff --git a/v3/example-code/map.golden b/v3/example-code/map.golden index ea180d541..e0181c7ec 100644 --- a/v3/example-code/map.golden +++ b/v3/example-code/map.golden @@ -6879,6 +6879,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 15 + ], "lst": [ "REF", 3 @@ -6891,7 +6895,8 @@ "parent_frame_id_list": [], "unique_hash": "halveElements_f1_p_z", "ordered_varnames": [ - "lst" + "lst", + "__return__" ] } ], diff --git a/v3/example-code/oop_1.golden b/v3/example-code/oop_1.golden index 68e914e00..00c24716a 100644 --- a/v3/example-code/oop_1.golden +++ b/v3/example-code/oop_1.golden @@ -245,7 +245,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -257,7 +261,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -273,6 +278,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -318,7 +349,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -330,7 +365,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -350,6 +386,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -399,7 +461,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -411,7 +477,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -431,6 +498,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -480,7 +573,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -492,7 +589,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -512,6 +610,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -565,7 +689,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -577,7 +705,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -597,6 +726,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -654,7 +809,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -666,7 +825,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -686,6 +846,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -747,7 +933,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -759,7 +949,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -779,6 +970,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -840,7 +1057,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -852,7 +1073,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -872,6 +1094,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -937,7 +1185,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -949,7 +1201,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -969,6 +1222,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1034,7 +1313,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -1046,7 +1329,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1086,6 +1370,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1151,7 +1461,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -1163,7 +1477,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1203,6 +1518,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1268,7 +1609,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -1280,7 +1625,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1322,6 +1668,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1387,7 +1759,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -1399,7 +1775,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -1419,6 +1796,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1484,7 +1887,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -1496,7 +1903,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1536,6 +1944,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1601,7 +2035,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -1613,7 +2051,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1653,6 +2092,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1718,7 +2183,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -1730,7 +2199,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1772,6 +2242,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1837,7 +2333,11 @@ "REF", 1 ], - "room": 501 + "room": 501, + "__return__": [ + "REF", + 2 + ] }, "is_highlighted": false, "is_parent": true, @@ -1849,7 +2349,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -1869,6 +2370,32 @@ "salutation(self)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", diff --git a/v3/example-code/oop_2.golden b/v3/example-code/oop_2.golden index ea8435ae1..d7b8d5918 100644 --- a/v3/example-code/oop_2.golden +++ b/v3/example-code/oop_2.golden @@ -298,12 +298,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -320,7 +324,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -341,6 +346,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -387,12 +425,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -409,7 +451,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -458,6 +501,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -508,12 +584,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -530,7 +610,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -579,6 +660,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -629,12 +743,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -651,7 +769,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -700,6 +819,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -754,12 +906,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -776,7 +932,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -825,6 +982,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -883,12 +1073,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -905,7 +1099,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -954,6 +1149,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -1016,12 +1244,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -1038,7 +1270,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1089,6 +1322,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -1156,12 +1422,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -1178,7 +1448,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -1203,6 +1474,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -1270,12 +1574,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -1292,7 +1600,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1337,6 +1646,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -1404,12 +1746,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -1426,7 +1772,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1471,6 +1818,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -1538,12 +1918,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -1560,7 +1944,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] }, { @@ -1607,6 +1992,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", @@ -1674,12 +2092,16 @@ "frame_id": 1, "encoded_locals": { "building": 34, + "__return__": [ + "REF", + 3 + ], + "room": 501, "course": "6.01", "salutation": [ "REF", 2 ], - "room": 501, "__init__": [ "REF", 1 @@ -1696,7 +2118,8 @@ "building", "course", "room", - "salutation" + "salutation", + "__return__" ] } ], @@ -1721,6 +2144,39 @@ "salutation(self)", 1 ], + "3": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "4": [ "CLASS", "Staff601", diff --git a/v3/example-code/oop_inherit.golden b/v3/example-code/oop_inherit.golden index 50bd66a66..8b3640434 100644 --- a/v3/example-code/oop_inherit.golden +++ b/v3/example-code/oop_inherit.golden @@ -241,6 +241,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -257,7 +261,8 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] } ], @@ -273,6 +278,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -313,6 +344,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -329,7 +364,8 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { @@ -356,6 +392,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -396,6 +458,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -412,7 +478,8 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { @@ -439,6 +506,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -479,6 +572,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -495,7 +592,8 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { @@ -522,6 +620,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -562,6 +686,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -578,7 +706,8 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { @@ -609,6 +738,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -649,6 +804,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -665,7 +824,8 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { @@ -701,6 +861,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -746,6 +932,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -762,7 +952,8 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { @@ -808,6 +999,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -880,6 +1097,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -896,13 +1117,18 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, + "__return__": [ + "REF", + 6 + ], "salutation": [ "REF", 5 @@ -921,7 +1147,8 @@ "ordered_varnames": [ "__init__", "salary", - "salutation" + "salutation", + "__return__" ] } ], @@ -941,6 +1168,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -975,8 +1228,33 @@ "salutation(self)", 2 ], - "7": [ - "CLASS", + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], + "7": [ + "CLASS", "Prof601", [ "Staff601" @@ -1017,6 +1295,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -1033,13 +1315,18 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, + "__return__": [ + "REF", + 6 + ], "salutation": [ "REF", 5 @@ -1058,7 +1345,8 @@ "ordered_varnames": [ "__init__", "salary", - "salutation" + "salutation", + "__return__" ] }, { @@ -1102,6 +1390,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1136,6 +1450,31 @@ "salutation(self)", 2 ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], "7": [ "CLASS", "Prof601", @@ -1182,6 +1521,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -1198,13 +1541,18 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, + "__return__": [ + "REF", + 6 + ], "salutation": [ "REF", 5 @@ -1223,7 +1571,8 @@ "ordered_varnames": [ "__init__", "salary", - "salutation" + "salutation", + "__return__" ] }, { @@ -1267,6 +1616,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1301,6 +1676,31 @@ "salutation(self)", 2 ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], "7": [ "CLASS", "Prof601", @@ -1347,6 +1747,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -1363,13 +1767,18 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, + "__return__": [ + "REF", + 6 + ], "salutation": [ "REF", 5 @@ -1388,7 +1797,8 @@ "ordered_varnames": [ "__init__", "salary", - "salutation" + "salutation", + "__return__" ] }, { @@ -1432,6 +1842,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1466,6 +1902,31 @@ "salutation(self)", 2 ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], "7": [ "CLASS", "Prof601", @@ -1516,6 +1977,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -1532,13 +1997,18 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, + "__return__": [ + "REF", + 6 + ], "salutation": [ "REF", 5 @@ -1557,7 +2027,8 @@ "ordered_varnames": [ "__init__", "salary", - "salutation" + "salutation", + "__return__" ] }, { @@ -1623,6 +2094,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1657,6 +2154,31 @@ "salutation(self)", 2 ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], "7": [ "CLASS", "Prof601", @@ -1707,6 +2229,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -1723,13 +2249,18 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, + "__return__": [ + "REF", + 6 + ], "salutation": [ "REF", 5 @@ -1748,7 +2279,8 @@ "ordered_varnames": [ "__init__", "salary", - "salutation" + "salutation", + "__return__" ] }, { @@ -1814,6 +2346,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -1848,6 +2406,31 @@ "salutation(self)", 2 ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], "7": [ "CLASS", "Prof601", @@ -1898,6 +2481,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -1914,13 +2501,18 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, + "__return__": [ + "REF", + 6 + ], "salutation": [ "REF", 5 @@ -1939,7 +2531,8 @@ "ordered_varnames": [ "__init__", "salary", - "salutation" + "salutation", + "__return__" ] }, { @@ -2007,6 +2600,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -2041,6 +2660,31 @@ "salutation(self)", 2 ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], "7": [ "CLASS", "Prof601", @@ -2095,6 +2739,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -2111,13 +2759,18 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, + "__return__": [ + "REF", + 6 + ], "salutation": [ "REF", 5 @@ -2136,7 +2789,8 @@ "ordered_varnames": [ "__init__", "salary", - "salutation" + "salutation", + "__return__" ] }, { @@ -2182,6 +2836,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -2216,6 +2896,31 @@ "salutation(self)", 2 ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], "7": [ "CLASS", "Prof601", @@ -2271,6 +2976,10 @@ "encoded_locals": { "building": 34, "course": "6.01", + "__return__": [ + "REF", + 2 + ], "giveRaise": [ "REF", 1 @@ -2287,13 +2996,18 @@ "building", "course", "giveRaise", - "room" + "room", + "__return__" ] }, { "frame_id": 2, "encoded_locals": { "salary": 100000, + "__return__": [ + "REF", + 6 + ], "salutation": [ "REF", 5 @@ -2312,7 +3026,8 @@ "ordered_varnames": [ "__init__", "salary", - "salutation" + "salutation", + "__return__" ] } ], @@ -2336,6 +3051,32 @@ "giveRaise(self, percentage)", 1 ], + "2": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 1 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__doc__", + null + ] + ], "3": [ "CLASS", "Staff601", @@ -2370,6 +3111,31 @@ "salutation(self)", 2 ], + "6": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ], + [ + "__init__", + [ + "REF", + 4 + ] + ] + ], "7": [ "CLASS", "Prof601", diff --git a/v3/example-code/oop_small.golden b/v3/example-code/oop_small.golden index aa6ea12ec..44bf5c717 100644 --- a/v3/example-code/oop_small.golden +++ b/v3/example-code/oop_small.golden @@ -682,6 +682,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -691,7 +695,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] } ], @@ -737,6 +742,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -772,6 +791,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -781,7 +804,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] } ], @@ -804,10 +828,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C" - ], "2": [ "CLASS", "A", @@ -835,6 +855,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -849,6 +883,10 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C" ] }, "line": 13, @@ -870,6 +908,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -879,7 +921,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] }, { @@ -922,10 +965,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C" - ], "2": [ "CLASS", "A", @@ -953,6 +992,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -967,6 +1020,10 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C" ] }, "line": 9, @@ -988,6 +1045,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -997,7 +1058,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] }, { @@ -1040,10 +1102,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C" - ], "2": [ "CLASS", "A", @@ -1071,6 +1129,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -1085,6 +1157,10 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C" ] }, "line": 10, @@ -1106,6 +1182,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -1115,7 +1195,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] }, { @@ -1160,10 +1241,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C" - ], "2": [ "CLASS", "A", @@ -1191,6 +1268,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -1205,6 +1296,10 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C" ] }, "line": 10, @@ -1226,6 +1321,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -1235,7 +1334,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] } ], @@ -1258,10 +1358,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C" - ], "2": [ "CLASS", "A", @@ -1289,6 +1385,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -1303,6 +1413,10 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C" ] }, "line": 14, @@ -1324,6 +1438,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -1333,7 +1451,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] } ], @@ -1356,14 +1475,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] - ], "2": [ "CLASS", "A", @@ -1391,6 +1502,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -1405,6 +1530,14 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] ] }, "line": 15, @@ -1426,6 +1559,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -1435,7 +1572,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] }, { @@ -1478,14 +1616,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] - ], "2": [ "CLASS", "A", @@ -1513,6 +1643,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -1527,6 +1671,14 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] ] }, "line": 9, @@ -1548,6 +1700,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -1557,7 +1713,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] }, { @@ -1600,14 +1757,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] - ], "2": [ "CLASS", "A", @@ -1635,6 +1784,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -1649,6 +1812,14 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] ] }, "line": 10, @@ -1670,6 +1841,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -1679,7 +1854,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] }, { @@ -1724,14 +1900,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] - ], "2": [ "CLASS", "A", @@ -1759,6 +1927,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -1773,6 +1955,14 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] ] }, "line": 10, @@ -1794,6 +1984,10 @@ "salutation": [ "REF", 5 + ], + "__return__": [ + "REF", + 6 ] }, "is_highlighted": false, @@ -1803,7 +1997,8 @@ "parent_frame_id_list": [], "unique_hash": "C_f3_p_z", "ordered_varnames": [ - "salutation" + "salutation", + "__return__" ] } ], @@ -1826,14 +2021,6 @@ ] }, "heap": { - "8": [ - "INSTANCE", - "C", - [ - "x", - 100 - ] - ], "2": [ "CLASS", "A", @@ -1861,6 +2048,20 @@ "salutation(self)", 3 ], + "6": [ + "DICT", + [ + "salutation", + [ + "REF", + 5 + ] + ], + [ + "__doc__", + null + ] + ], "7": [ "CLASS", "C", @@ -1875,6 +2076,14 @@ 5 ] ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] ] }, "line": 15, diff --git a/v3/example-code/sqrt.golden b/v3/example-code/sqrt.golden index d062b58ee..f091f44c5 100644 --- a/v3/example-code/sqrt.golden +++ b/v3/example-code/sqrt.golden @@ -8853,6 +8853,15 @@ { "frame_id": 1, "encoded_locals": { + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "__return__": 3.0001, "x": 9, "average": [ "REF", @@ -8861,14 +8870,6 @@ "improve": [ "REF", 4 - ], - "sqrt_iter": [ - "REF", - 5 - ], - "is_good_enough": [ - "REF", - 3 ] }, "is_highlighted": false, @@ -8882,7 +8883,8 @@ "average", "improve", "is_good_enough", - "sqrt_iter" + "sqrt_iter", + "__return__" ] } ], diff --git a/v3/example-code/sum-list.golden b/v3/example-code/sum-list.golden new file mode 100644 index 000000000..c121417d9 --- /dev/null +++ b/v3/example-code/sum-list.golden @@ -0,0 +1,3466 @@ +{ + "code": "myList = (1, (2, (3, (4, (5, None)))))\n\ndef sumList(node, subtotal):\n if not node:\n return subtotal\n else:\n return sumList(node[1], subtotal + node[0])\n\ntotal = sumList(myList, 0)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "__return__": 15, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "__return__": 15, + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "__return__": 15, + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "__return__": 15, + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "__return__": 15, + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "__return__": 15, + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList", + "total" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "total": 15, + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/example-code/sum.golden b/v3/example-code/sum.golden index d70d98a11..0186b5dff 100644 --- a/v3/example-code/sum.golden +++ b/v3/example-code/sum.golden @@ -10118,6 +10118,7 @@ "frame_id": 1, "encoded_locals": { "high": 10, + "__return__": 385, "low": 1 }, "is_highlighted": false, @@ -10128,7 +10129,8 @@ "unique_hash": "sumsquares_f1_p_z", "ordered_varnames": [ "low", - "high" + "high", + "__return__" ] } ], diff --git a/v3/tests/backend-tests/class_test.golden b/v3/tests/backend-tests/class_test.golden index d0770d384..882d13ef9 100644 --- a/v3/tests/backend-tests/class_test.golden +++ b/v3/tests/backend-tests/class_test.golden @@ -189,6 +189,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -206,7 +210,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] } ], @@ -222,6 +227,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -260,6 +286,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -277,7 +307,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -317,6 +348,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -359,6 +411,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -376,7 +432,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -416,6 +473,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -458,6 +536,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -475,7 +557,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -515,6 +598,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -561,6 +665,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -578,7 +686,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -620,6 +729,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -671,6 +801,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -688,7 +822,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] } ], @@ -708,6 +843,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -759,6 +915,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -776,7 +936,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -816,6 +977,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -867,6 +1049,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -884,7 +1070,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -924,6 +1111,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -975,6 +1183,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -992,7 +1204,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -1034,6 +1247,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -1085,6 +1319,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -1102,7 +1340,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] } ], @@ -1122,6 +1361,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -1173,6 +1433,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -1190,7 +1454,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -1234,6 +1499,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -1289,6 +1575,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -1306,7 +1596,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -1350,6 +1641,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -1405,6 +1717,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -1422,7 +1738,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -1466,6 +1783,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -1525,6 +1863,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -1542,7 +1884,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -1588,6 +1931,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -1652,6 +2016,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -1669,7 +2037,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] } ], @@ -1693,6 +2062,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -1757,6 +2147,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -1774,7 +2168,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -1818,6 +2213,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -1882,6 +2298,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -1899,7 +2319,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -1943,6 +2364,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -2007,6 +2449,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -2024,7 +2470,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] }, { @@ -2070,6 +2517,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", @@ -2134,6 +2602,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "__str__": [ "REF", 3 @@ -2151,7 +2623,8 @@ "unique_hash": "Point_f1_p_z", "ordered_varnames": [ "__init__", - "__str__" + "__str__", + "__return__" ] } ], @@ -2175,6 +2648,27 @@ "__init__(self, x, y)", 1 ], + "2": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 1 + ] + ], + [ + "__doc__", + null + ] + ], "3": [ "FUNCTION", "__str__(self)", diff --git a/v3/tests/backend-tests/john-compose.golden b/v3/tests/backend-tests/john-compose.golden index 1272f090b..9acb62b04 100644 --- a/v3/tests/backend-tests/john-compose.golden +++ b/v3/tests/backend-tests/john-compose.golden @@ -226,6 +226,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -243,7 +247,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] } ], @@ -293,6 +298,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -310,7 +319,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] }, { @@ -377,6 +387,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -394,7 +408,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] }, { @@ -461,6 +476,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -478,7 +497,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] }, { @@ -560,6 +580,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -577,7 +601,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] }, { @@ -659,6 +684,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -676,7 +705,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] }, { @@ -760,6 +790,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -777,7 +811,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] }, { @@ -859,6 +894,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -876,7 +915,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] }, { @@ -958,6 +998,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -975,7 +1019,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] }, { @@ -1059,6 +1104,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -1076,7 +1125,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] }, { @@ -1146,6 +1196,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 4 + ], "g": [ "REF", 2 @@ -1163,7 +1217,8 @@ "unique_hash": "compose1_f1_p_z", "ordered_varnames": [ "f", - "g" + "g", + "__return__" ] } ], diff --git a/v3/tests/backend-tests/lambda_1.golden b/v3/tests/backend-tests/lambda_1.golden index dbc526b25..329be1475 100644 --- a/v3/tests/backend-tests/lambda_1.golden +++ b/v3/tests/backend-tests/lambda_1.golden @@ -5448,6 +5448,7 @@ "frame_id": 1, "encoded_locals": { "high": 5, + "__return__": 55, "low": 1 }, "is_highlighted": false, @@ -5458,7 +5459,8 @@ "unique_hash": "sumsquares_f1_p_z", "ordered_varnames": [ "low", - "high" + "high", + "__return__" ] } ], diff --git a/v3/tests/backend-tests/ling-scheme-2.golden b/v3/tests/backend-tests/ling-scheme-2.golden index c5c7075fa..add7f461f 100644 --- a/v3/tests/backend-tests/ling-scheme-2.golden +++ b/v3/tests/backend-tests/ling-scheme-2.golden @@ -3728,6 +3728,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 9 + ], "loop": [ "REF", 2 @@ -3742,7 +3746,8 @@ "unique_hash": "iota_f1_p_z", "ordered_varnames": [ "n", - "loop" + "loop", + "__return__" ] } ], diff --git a/v3/tests/backend-tests/ling-scheme-3.golden b/v3/tests/backend-tests/ling-scheme-3.golden index 2222c5742..be3b46e8e 100644 --- a/v3/tests/backend-tests/ling-scheme-3.golden +++ b/v3/tests/backend-tests/ling-scheme-3.golden @@ -8513,6 +8513,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 28 + ], "xs": [ "REF", 4 @@ -8525,7 +8529,8 @@ "parent_frame_id_list": [], "unique_hash": "pairs_f1_p_z", "ordered_varnames": [ - "xs" + "xs", + "__return__" ] } ], diff --git a/v3/tests/backend-tests/newstyle_class.golden b/v3/tests/backend-tests/newstyle_class.golden index 3718cc971..f428115c5 100644 --- a/v3/tests/backend-tests/newstyle_class.golden +++ b/v3/tests/backend-tests/newstyle_class.golden @@ -223,6 +223,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -242,7 +246,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] } ], @@ -258,6 +263,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -300,6 +326,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -319,7 +349,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] }, { @@ -355,6 +386,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -401,6 +453,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -420,7 +476,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] }, { @@ -456,6 +513,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -502,6 +580,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -521,7 +603,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] }, { @@ -559,6 +642,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -610,6 +714,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -629,7 +737,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] } ], @@ -649,6 +758,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -700,6 +830,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -719,7 +853,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] }, { @@ -759,6 +894,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -810,6 +966,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -829,7 +989,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] }, { @@ -869,6 +1030,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -920,6 +1102,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -939,7 +1125,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] }, { @@ -981,6 +1168,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -1036,6 +1244,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -1055,7 +1267,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] } ], @@ -1075,6 +1288,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -1130,6 +1364,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -1149,7 +1387,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] } ], @@ -1169,6 +1408,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", @@ -1224,6 +1484,10 @@ { "frame_id": 1, "encoded_locals": { + "__return__": [ + "REF", + 2 + ], "x": [ "REF", 3 @@ -1243,7 +1507,8 @@ "ordered_varnames": [ "__init__", "bla", - "x" + "x", + "__return__" ] } ], @@ -1263,6 +1528,27 @@ "__init__(self)", 1 ], + "2": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 1 + ] + ] + ], "3": [ "FUNCTION", "x(self)", From 8cfa9bf7eeea3176ac57a65229cfe86a7641d9dd Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 9 Sep 2012 23:45:42 -0700 Subject: [PATCH 264/502] color tweak --- v3/css/pytutor.css | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index c70bbd2ea..499569ad9 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -378,7 +378,9 @@ div.ExecutionVisualizer div.zombieStackFrame { } div.ExecutionVisualizer div.highlightedStackFrame { - background-color: #c5dfea; + background-color: #d7e7fb; + /*background-color: #c0daf8;*/ + /*background-color: #9eeaff #c5dfea;*/ } div.ExecutionVisualizer div.stackFrame, From 8d81aefa821fe682114f5aaa982818948a19fa92 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 00:33:06 -0700 Subject: [PATCH 265/502] nice color makeover --- v3/css/opt-frontend.css | 2 +- v3/css/pytutor.css | 2 +- v3/js/pytutor.js | 36 +++++++++++++++++++----------------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/v3/css/opt-frontend.css b/v3/css/opt-frontend.css index ae30640c8..bb02dace3 100644 --- a/v3/css/opt-frontend.css +++ b/v3/css/opt-frontend.css @@ -82,4 +82,4 @@ button.bigBtn { /* necessary for CodeMirror error line highlighting to work! */ -.CodeMirror .errorLine { background: #F89D99 !important; } +.CodeMirror .errorLine { background: #ffff3f !important; } diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 499569ad9..b538abadf 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -201,7 +201,7 @@ div.ExecutionVisualizer .funcObj { div.ExecutionVisualizer .retval { font-size: 9pt; - color: #d03939; /* dark red */ + color: #e93f34; /* should match brightRed JavaScript variable */ } diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index b5f8e36ec..bcea2aefd 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -470,7 +470,6 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { // 'text' - the text of the line of code // 'lineNumber' - one-indexed (always the array index + 1) // 'executionPoints' - an ordered array of zero-indexed execution points where this line was executed - // 'backgroundColor' - current code output line background color // 'breakpointHere' - has a breakpoint been set here? this.codeOutputLines = []; @@ -609,7 +608,6 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { n.text = cod; n.lineNumber = i + 1; n.executionPoints = []; - n.backgroundColor = null; n.breakpointHere = false; $.each(this.curTrace, function(j, elt) { @@ -869,7 +867,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { // edge case for the final instruction :0 - if (isTerminated) { + if (isTerminated && !hasError) { // don't show redundant arrows on the same line when terminated ... if (prevLineNumber == curLineNumber) { curLineNumber = null; @@ -902,18 +900,24 @@ ExecutionVisualizer.prototype.updateOutput = function() { myViz.domRootD3.selectAll('#pyCodeOutputDiv td.cod') - .style('background-color', function(d) { + .style('border-top', function(d) { if (hasError && (d.lineNumber == curEntry.line)) { - d.backgroundColor = errorColor; + return '1px solid ' + errorColor; } else { - d.backgroundColor = null; + return ''; + } + }) + .style('border-bottom', function(d) { + // COPY AND PASTE ALERT! + if (hasError && (d.lineNumber == curEntry.line)) { + return '1px solid ' + errorColor; + } + else { + return ''; } - - return d.backgroundColor; }); - // returns True iff lineNo is visible in pyCodeOutputDiv function isOutputLineVisible(lineNo) { var lineNoTd = myViz.domRoot.find('#lineNo' + lineNo); @@ -2010,23 +2014,21 @@ var highlightedLineLighterColor = '#e8fff0'; var funcCallLineColor = '#a2eebd'; -var darkRed = '#d03939'; +var brightRed = '#e93f34'; var connectorBaseColor = '#005583'; -var connectorHighlightColor = darkRed; +var connectorHighlightColor = brightRed; var connectorInactiveColor = '#cccccc'; -var errorColor = darkRed; +var errorColor = brightRed; -var breakpointColor = darkRed; +var breakpointColor = brightRed; var hoverBreakpointColor = connectorBaseColor; // Unicode arrow types: '\u21d2', '\u21f0', '\u2907' -var darkArrowColor = darkRed; -var lightArrowColor = '#ccc'; - -var arrowHTML = '\u21d2'; +var darkArrowColor = brightRed; +var lightArrowColor = '#c9e6ca'; function assert(cond) { From 070886bbe9f1ca28d2b05824bf85cd91fd3e2925 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 00:35:09 -0700 Subject: [PATCH 266/502] minor --- v3/css/pytutor.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index b538abadf..957bc4acf 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -385,7 +385,7 @@ div.ExecutionVisualizer div.highlightedStackFrame { div.ExecutionVisualizer div.stackFrame, div.ExecutionVisualizer div.highlightedStackFrame { - border-left: 2px solid #a6b3b6; + border-left: 1px solid #a6b3b6; } From aa77386fe5192549180ea0c92dff52f44e5b51de Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 00:40:19 -0700 Subject: [PATCH 267/502] tiny --- v3/js/pytutor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index bcea2aefd..d8ca7c927 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -753,7 +753,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { gutterSVG.height(gutterSVG.parent().height()); } - var tableTop = 6; // manually adjust this so that it looks good :) + var tableTop = 5; // manually adjust this so that it looks good :) // this weird contortion is necessary to get the accurate row height on Internet Explorer // (simpler methods work on all other major browsers, erghhhhhh!!!) From a487d9873d614bcba6da07936d443ff84ffc2cf7 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 09:01:39 -0700 Subject: [PATCH 268/502] scroll to top on certain actions to make frontend UI more usable --- v3/js/opt-frontend.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 7171d347e..f278aee77 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -58,6 +58,9 @@ var pyInputCodeMirror; // CodeMirror object that contains the input text function setCodeMirrorVal(dat) { pyInputCodeMirror.setValue(dat.rtrim() /* kill trailing spaces */); $('#urlOutput').val(''); + + // also scroll to top to make the UI more usable on smaller monitors + $('body').scrollTop(0); } @@ -255,6 +258,9 @@ $(document).ready(function() { }); + // also scroll to top to make the UI more usable on smaller monitors + $('body').scrollTop(0); + $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); } }, From 417c0016eaae74c0c96fbcfd72dfc5d24992b62c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 09:16:17 -0700 Subject: [PATCH 269/502] teeny --- v3/embedding-examples.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/v3/embedding-examples.js b/v3/embedding-examples.js index d03022cd8..a80fb5fb4 100644 --- a/v3/embedding-examples.js +++ b/v3/embedding-examples.js @@ -17,9 +17,9 @@ var aliasing5Viz = null; var hanoiViz = null; $(document).ready(function() { - stuffViz = new ExecutionVisualizer('stuffDiv', stuff, {hideOutput: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); - aliasing5Viz = new ExecutionVisualizer('aliasing5Div', aliasing5, {hideOutput: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); - hanoiViz = new ExecutionVisualizer('hanoiDiv', hanoi, {startingInstruction: 45, hideOutput: true, editCodeBaseURL: 'http://localhost:8080/'}); + stuffViz = new ExecutionVisualizer('stuffDiv', stuff, {embeddedMode: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); + aliasing5Viz = new ExecutionVisualizer('aliasing5Div', aliasing5, {embeddedMode: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); + hanoiViz = new ExecutionVisualizer('hanoiDiv', hanoi, {startingInstruction: 45, embeddedMode: true, editCodeBaseURL: 'http://localhost:8080/'}); // redraw connector arrows on window resize $(window).resize(function() { From 3b3f085bc1133cea592de3d14ac91d9b27aa15c9 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 09:31:53 -0700 Subject: [PATCH 270/502] minor css cleanups --- v3/css/pytutor.css | 32 ++------------------------------ 1 file changed, 2 insertions(+), 30 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 957bc4acf..364c79822 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -48,30 +48,6 @@ div.ExecutionVisualizer #dataViz { margin-left: 30px; } -div.ExecutionVisualizer table.frameDataViz { - border-spacing: 0px; - font-size: 12pt; - margin-top: 5px; - margin-left: 15px; - background-color: #dddddd; - padding: 5px; -} - -div.ExecutionVisualizer table.frameDataViz td.varname { - text-align: right; - padding: 5px; - padding-right: 8px; - border-right: 1px dashed #888888; -} - -div.ExecutionVisualizer table.frameDataViz td.val { - padding-left: 8px; - padding-right: 5px; - - padding-top: 8px; - padding-bottom: 8px; -} - div.ExecutionVisualizer div#pyCodeOutputDiv { max-width: 550px; max-height: 450px; @@ -146,8 +122,7 @@ div.ExecutionVisualizer div#editCodeLinkDiv { } div.ExecutionVisualizer #errorOutput { - color: #d03939; - /*background-color: #F87D76;*/ + color: #e93f34; /* should match brightRed JavaScript variable */ font-size: 12pt; padding: 2px; line-height: 1.5em; @@ -157,10 +132,6 @@ div.ExecutionVisualizer #errorOutput { /* VCR control buttons for stepping through execution */ div.ExecutionVisualizer #vcrControls { - /* - margin-top: 15px; - margin-bottom: 15px; - */ margin: 15px auto; width: 100%; text-align: center; @@ -379,6 +350,7 @@ div.ExecutionVisualizer div.zombieStackFrame { div.ExecutionVisualizer div.highlightedStackFrame { background-color: #d7e7fb; + /*background-color: #c0daf8;*/ /*background-color: #9eeaff #c5dfea;*/ } From 84c04b8151615b613a44eee3658d94c982d64096 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 11:02:13 -0700 Subject: [PATCH 271/502] left margin arrows work on Firefox 15 now --- v3/js/pytutor.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index d8ca7c927..77e1891ca 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -747,11 +747,10 @@ ExecutionVisualizer.prototype.updateOutput = function() { // set the gutter's height to match that of its parent // (we often can't do this earlier since the entire pane - // might be invisible and hence return a height of zero) + // might be invisible and hence returns a height of zero or NaN -- the exact format depends on browser) var gutterSVG = myViz.domRoot.find('svg#leftCodeGutterSVG'); - if (!gutterSVG.height()) { - gutterSVG.height(gutterSVG.parent().height()); - } + gutterSVG.height(gutterSVG.parent().height()); + var tableTop = 5; // manually adjust this so that it looks good :) From b75d0eb2b39ab05342d705fe26b3a88c36a1f990 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 11:21:02 -0700 Subject: [PATCH 272/502] minor tweak --- v3/js/opt-frontend.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index f278aee77..5d09c2bfa 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -60,7 +60,7 @@ function setCodeMirrorVal(dat) { $('#urlOutput').val(''); // also scroll to top to make the UI more usable on smaller monitors - $('body').scrollTop(0); + $('html').scrollTop(0); } @@ -259,7 +259,7 @@ $(document).ready(function() { // also scroll to top to make the UI more usable on smaller monitors - $('body').scrollTop(0); + $('html').scrollTop(0); $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); } From 92f72a2b753f727343bca54abca972c1caa2564f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 14:50:01 -0700 Subject: [PATCH 273/502] eliminate magic numbers in aligning arrows, so that it now works on different browsers --- v3/js/pytutor.js | 81 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 26 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 77e1891ca..913507931 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -55,7 +55,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -var svgArrowPolygon = '0,3 12,3 12,0 18,5 12,10 12,7 0,7'; +var SVG_ARROW_POLYGON = '0,3 12,3 12,0 18,5 12,10 12,7 0,7'; +var SVG_ARROW_HEIGHT = 10; // must match height of SVG_ARROW_POLYGON var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer instance @@ -94,6 +95,11 @@ function ExecutionVisualizer(domRootID, dat, params) { curVisualizerID++; + this.leftGutterSvgInitialized = false; + this.arrowOffsetY = undefined; + this.codeRowHeight = undefined; + + // cool, we can create a separate jsPlumb instance for each visualization: this.jsPlumbInstance = jsPlumb.getInstance({ Endpoint: ["Dot", {radius:3}], @@ -219,12 +225,12 @@ ExecutionVisualizer.prototype.render = function() { myViz.domRootD3.select('svg#prevLegendArrowSVG') .append('polygon') - .attr('points', svgArrowPolygon) + .attr('points', SVG_ARROW_POLYGON) .attr('fill', lightArrowColor); myViz.domRootD3.select('svg#curLegendArrowSVG') .append('polygon') - .attr('points', svgArrowPolygon) + .attr('points', SVG_ARROW_POLYGON) .attr('fill', darkArrowColor); @@ -679,13 +685,13 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { myViz.domRootD3.select('svg#leftCodeGutterSVG') .append('polygon') .attr('id', 'prevLineArrow') - .attr('points', svgArrowPolygon) + .attr('points', SVG_ARROW_POLYGON) .attr('fill', 'white'); myViz.domRootD3.select('svg#leftCodeGutterSVG') .append('polygon') .attr('id', 'curLineArrow') - .attr('points', svgArrowPolygon) + .attr('points', SVG_ARROW_POLYGON) .attr('fill', 'white'); @@ -736,35 +742,58 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { // This function is called every time the display needs to be updated ExecutionVisualizer.prototype.updateOutput = function() { - var myViz = this; // to prevent confusion of 'this' inside of nested functions - assert(this.curTrace); + var myViz = this; // to prevent confusion of 'this' inside of nested functions + // there's no point in re-rendering if this pane isn't even visible in the first place! if (!myViz.domRoot.is(':visible')) { return; } - // set the gutter's height to match that of its parent - // (we often can't do this earlier since the entire pane - // might be invisible and hence returns a height of zero or NaN -- the exact format depends on browser) + var gutterSVG = myViz.domRoot.find('svg#leftCodeGutterSVG'); - gutterSVG.height(gutterSVG.parent().height()); + // one-time initialization of the left gutter + // (we often can't do this earlier since the entire pane + // might be invisible and hence returns a height of zero or NaN + // -- the exact format depends on browser) + if (!myViz.leftGutterSvgInitialized) { + // set the gutter's height to match that of its parent + gutterSVG.height(gutterSVG.parent().height()); - var tableTop = 5; // manually adjust this so that it looks good :) + var firstRowOffsetY = myViz.domRoot.find('table#pyCodeOutput tr:first').offset().top; + + // first take care of edge case when there's only one line ... + myViz.codeRowHeight = myViz.domRoot.find('table#pyCodeOutput td.cod:first').height(); + + // ... then handle the (much more common) multi-line case ... + // this weird contortion is necessary to get the accurate row height on Internet Explorer + // (simpler methods work on all other major browsers, erghhhhhh!!!) + if (this.codeOutputLines && this.codeOutputLines.length > 1) { + var secondRowOffsetY = myViz.domRoot.find('table#pyCodeOutput tr:nth-child(2)').offset().top; + myViz.codeRowHeight = secondRowOffsetY - firstRowOffsetY; + } - // this weird contortion is necessary to get the accurate row height on Internet Explorer - // (simpler methods work on all other major browsers, erghhhhhh!!!) - - // first take care of edge case when there's only one line ... - var rowHeight = myViz.domRoot.find('table#pyCodeOutput td.cod:first').height(); - // ... then handle the (much more common) multi-line case ... - if (this.codeOutputLines && this.codeOutputLines.length > 1) { - rowHeight = (myViz.domRoot.find('table#pyCodeOutput tr:nth-child(2)').offset().top - - myViz.domRoot.find('table#pyCodeOutput tr:first').offset().top); + assert(myViz.codeRowHeight > 0); + + var gutterOffsetY = gutterSVG.offset().top; + var teenyAdjustment = gutterOffsetY - firstRowOffsetY; + + // super-picky detail to adjust the vertical alignment of arrows so that they line up + // well with the pointed-to code text ... + // (if you want to manually adjust tableTop, then ~5 is a reasonable number) + myViz.arrowOffsetY = Math.floor((myViz.codeRowHeight / 2) - (SVG_ARROW_HEIGHT / 2)) - teenyAdjustment; + + myViz.leftGutterSvgInitialized = true; + + console.log(myViz.codeRowHeight); } + assert(myViz.arrowOffsetY !== undefined); + assert(myViz.codeRowHeight !== undefined); + assert(0 <= myViz.arrowOffsetY && myViz.arrowOffsetY <= myViz.codeRowHeight); + // call the callback if necessary (BEFORE rendering) if (this.params.updateOutputCallback) { this.params.updateOutputCallback(this); @@ -861,8 +890,8 @@ ExecutionVisualizer.prototype.updateOutput = function() { // on 'return' events, give a bit more of a vertical nudge to show that // the arrow is aligned with the 'bottom' of the line ... - var prevVerticalNudge = prevIsReturn ? 10 : 0; - var curVerticalNudge = curIsReturn ? 10 : 0; + var prevVerticalNudge = prevIsReturn ? Math.floor(myViz.codeRowHeight / 2) : 0; + var curVerticalNudge = curIsReturn ? Math.floor(myViz.codeRowHeight / 2) : 0; // edge case for the final instruction :0 @@ -873,7 +902,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { } // otherwise have a smaller vertical nudge (to fit at bottom of display table) else { - curVerticalNudge = 8; + curVerticalNudge = curVerticalNudge - 2; } } @@ -881,7 +910,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { gutterSVG.find('#prevLineArrow') .show() .attr('fill', lightArrowColor) - .attr('transform', 'translate(0, ' + (((prevLineNumber - 1) * rowHeight) + tableTop + prevVerticalNudge) + ')'); + .attr('transform', 'translate(0, ' + (((prevLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + prevVerticalNudge) + ')'); } else { gutterSVG.find('#prevLineArrow').hide(); @@ -891,7 +920,7 @@ ExecutionVisualizer.prototype.updateOutput = function() { gutterSVG.find('#curLineArrow') .show() .attr('fill', darkArrowColor) - .attr('transform', 'translate(0, ' + (((curLineNumber - 1) * rowHeight) + tableTop + curVerticalNudge) + ')'); + .attr('transform', 'translate(0, ' + (((curLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + curVerticalNudge) + ')'); } else { gutterSVG.find('#curLineArrow').hide(); From 15eee3d0f9474ca73f5b6f287b19d257af73cd19 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 14:50:26 -0700 Subject: [PATCH 274/502] tiny --- v3/tutor.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/tutor.html b/v3/tutor.html index 1a463b480..607ebfb61 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -164,7 +164,7 @@ From b8c6700b4b5de6f4a163418a705221cb8fb24874 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 15:10:24 -0700 Subject: [PATCH 278/502] tiny --- v3/example-code/nonlocal.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v3/example-code/nonlocal.txt b/v3/example-code/nonlocal.txt index c52db1f09..4bd156762 100644 --- a/v3/example-code/nonlocal.txt +++ b/v3/example-code/nonlocal.txt @@ -4,7 +4,8 @@ def outer(): def inner(): nonlocal x x = 2 - print("inner:", x) + y = x + print("inner:", x, y) inner() print("outer:", x) From d17ac78cff52c44a320b7e10b286a35406c13560 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 15:45:57 -0700 Subject: [PATCH 279/502] added simple animation for left gutter arrows --- v3/js/pytutor.js | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 913507931..ab2cfa0f1 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -681,18 +681,18 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { myViz.domRoot.find('#pyCodeOutput tr:first') .prepend(''); - // create prevLineArrow and curLineArrow, but don't fill them in with colors just yet ... + // create prevLineArrow and curLineArrow myViz.domRootD3.select('svg#leftCodeGutterSVG') .append('polygon') .attr('id', 'prevLineArrow') .attr('points', SVG_ARROW_POLYGON) - .attr('fill', 'white'); + .attr('fill', lightArrowColor); myViz.domRootD3.select('svg#leftCodeGutterSVG') .append('polygon') .attr('id', 'curLineArrow') .attr('points', SVG_ARROW_POLYGON) - .attr('fill', 'white'); + .attr('fill', darkArrowColor); // 2012-09-05: Disable breakpoints for now to simplify UX @@ -786,8 +786,6 @@ ExecutionVisualizer.prototype.updateOutput = function() { myViz.arrowOffsetY = Math.floor((myViz.codeRowHeight / 2) - (SVG_ARROW_HEIGHT / 2)) - teenyAdjustment; myViz.leftGutterSvgInitialized = true; - - console.log(myViz.codeRowHeight); } assert(myViz.arrowOffsetY !== undefined); @@ -907,9 +905,11 @@ ExecutionVisualizer.prototype.updateOutput = function() { } if (prevLineNumber) { - gutterSVG.find('#prevLineArrow') - .show() - .attr('fill', lightArrowColor) + gutterSVG.find('#prevLineArrow').show(); + + myViz.domRootD3.select('#prevLineArrow') + .transition() + .duration(300) .attr('transform', 'translate(0, ' + (((prevLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + prevVerticalNudge) + ')'); } else { @@ -917,9 +917,11 @@ ExecutionVisualizer.prototype.updateOutput = function() { } if (curLineNumber) { - gutterSVG.find('#curLineArrow') - .show() - .attr('fill', darkArrowColor) + gutterSVG.find('#curLineArrow').show(); + + myViz.domRootD3.select('#curLineArrow') + .transition() + .duration(300) .attr('transform', 'translate(0, ' + (((curLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + curVerticalNudge) + ')'); } else { From e443ad4891c572610a93f3793ba90677bd16d2ff Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 16:16:44 -0700 Subject: [PATCH 280/502] make smooth transitions optional, only when pressing "Forward >" button --- v3/js/pytutor.js | 48 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 36 insertions(+), 12 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index ab2cfa0f1..37b735eee 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -432,7 +432,7 @@ ExecutionVisualizer.prototype.stepForward = function() { else { myViz.curInstr += 1; } - myViz.updateOutput(); + myViz.updateOutput(true); return true; } @@ -741,7 +741,8 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { // This function is called every time the display needs to be updated -ExecutionVisualizer.prototype.updateOutput = function() { +// smoothTransition is OPTIONAL! +ExecutionVisualizer.prototype.updateOutput = function(smoothTransition) { assert(this.curTrace); var myViz = this; // to prevent confusion of 'this' inside of nested functions @@ -905,24 +906,47 @@ ExecutionVisualizer.prototype.updateOutput = function() { } if (prevLineNumber) { - gutterSVG.find('#prevLineArrow').show(); + var pla = myViz.domRootD3.select('#prevLineArrow'); + var translatePrevCmd = 'translate(0, ' + (((prevLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + prevVerticalNudge) + ')'; + + if (smoothTransition) { + pla + .transition() + .duration(200) + .attr('fill', 'white') + .each('end', function() { + pla + .attr('transform', translatePrevCmd) + .attr('fill', lightArrowColor); + + }); + } + else { + pla.attr('transform', translatePrevCmd) + } - myViz.domRootD3.select('#prevLineArrow') - .transition() - .duration(300) - .attr('transform', 'translate(0, ' + (((prevLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + prevVerticalNudge) + ')'); + gutterSVG.find('#prevLineArrow').show(); } else { gutterSVG.find('#prevLineArrow').hide(); } if (curLineNumber) { - gutterSVG.find('#curLineArrow').show(); + var cla = myViz.domRootD3.select('#curLineArrow'); + var translateCurCmd = 'translate(0, ' + (((curLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + curVerticalNudge) + ')'; - myViz.domRootD3.select('#curLineArrow') - .transition() - .duration(300) - .attr('transform', 'translate(0, ' + (((curLineNumber - 1) * myViz.codeRowHeight) + myViz.arrowOffsetY + curVerticalNudge) + ')'); + if (smoothTransition) { + cla + .transition() + .delay(200) + .duration(300) + .attr('transform', translateCurCmd); + } + else { + cla.attr('transform', translateCurCmd); + } + + gutterSVG.find('#curLineArrow').show(); } else { gutterSVG.find('#curLineArrow').hide(); From 34f108e11e8666c6dc313a1308ebf30ca7f298fd Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 16:23:05 -0700 Subject: [PATCH 281/502] teeny --- v3/js/pytutor.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 37b735eee..5f9db48ae 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -919,13 +919,14 @@ ExecutionVisualizer.prototype.updateOutput = function(smoothTransition) { .attr('transform', translatePrevCmd) .attr('fill', lightArrowColor); + gutterSVG.find('#prevLineArrow').show(); // show at the end to avoid flickering }); } else { pla.attr('transform', translatePrevCmd) + gutterSVG.find('#prevLineArrow').show(); } - gutterSVG.find('#prevLineArrow').show(); } else { gutterSVG.find('#prevLineArrow').hide(); From 9eb2789e14c088a3b33a79dd0e5f3c2b9e9d452d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 16:27:04 -0700 Subject: [PATCH 282/502] minor --- v3/js/pytutor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 5f9db48ae..a7990285d 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -940,7 +940,7 @@ ExecutionVisualizer.prototype.updateOutput = function(smoothTransition) { cla .transition() .delay(200) - .duration(300) + .duration(250) .attr('transform', translateCurCmd); } else { From 44abc87d265274dc9204d9a26ebe42c4e801e96d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 10 Sep 2012 22:41:45 -0700 Subject: [PATCH 283/502] added beginnings of demo site --- v3/css/pytutor-title.css | 91 ++++++++++++++ v3/index.html | 199 +++++++++++++++++++++++++++++++ v3/js/jquery.corner.js | 249 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 539 insertions(+) create mode 100644 v3/css/pytutor-title.css create mode 100644 v3/index.html create mode 100644 v3/js/jquery.corner.js diff --git a/v3/css/pytutor-title.css b/v3/css/pytutor-title.css new file mode 100644 index 000000000..3a4cd2005 --- /dev/null +++ b/v3/css/pytutor-title.css @@ -0,0 +1,91 @@ +/* CSS accompanying ../index.html */ + +body { + background-color: white; + + line-height: 1.5; /* slightly more than single spacing, for prose text */ + font-family: Georgia, Palatino, Times, serif; + + font-size: 12pt; + max-width: 900px; + margin-left: auto; + margin-right: auto; +} + + +h1 { + font-weight: normal; + font-size: 20pt; + line-height: 1em; /* enforce single spacing so that Georgia works */ + + margin-top: 0px; + margin-bottom: 8px; +} + +h2 { + font-size: 12pt; + font-weight: normal; + + margin-top: 2px; + margin-bottom: 20px; +} + +.titlePane { + margin-left: auto; + margin-right: auto; + margin-bottom: 25px; + text-align: center; +} + +.titlePane h2 { + margin-top: 8px; +} + +div.mainBodyPane { + width: 100%; + margin-left: auto; + margin-right: auto; +} + +div.activityPane { + /* TOP RIGHT BOTTOM LEFT */ + padding: 15px 20px 5px 20px; + margin-top: 30px; + text-align: left; + border: 3px solid #005583; +} + + +ul { + padding-left: 18px; +} + +li { + margin-bottom: 6px; + font-size: 11pt; +} + +a, +a:visited, +a:hover { + color: #3D58A2; +} + +#footer { + color: #666666; + font-size: 9pt; + border-top: 1px solid #bbbbbb; + padding-top: 5px; + margin-top: 15px; + + max-width: 100%; + /* center align */ + margin-left: auto; + margin-right: auto; + + font-family: verdana, arial, helvetica, sans-serif; +} + + +/* necessary for CodeMirror error line highlighting to work! */ +.CodeMirror .errorLine { background: #ffff3f !important; } diff --git a/v3/index.html b/v3/index.html new file mode 100644 index 000000000..04781cdd3 --- /dev/null +++ b/v3/index.html @@ -0,0 +1,199 @@ + + + + + + + + + +Online Python Tutor: Learn and practice Python programming in your web browser + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Online Python Tutor

+

Learn and practice Python programming in your web browser

+ +
+ +
+ +
+ +

Learn

+

Python by writing code and visualizing execution

+ +

This free educational application allows teachers and students to +write Python scripts directly in the web browser, execute those scripts, +single-step forwards and backwards through execution, and view +the run-time state of all data structures.

+ +

Rather than displaying a bland text-based console, the Online Python +Tutor provides a rich visualization of variables, heap objects, and +stack frames. For example, the following code:

+ +
+x = ["Alice", "Bob", "Charlie"]
+y = x
+z = ["Alice", "Bob", "Charlie"]
+
+ +

will be visualized as the following HTML diagram, which properly shows +aliasing relationships:

+ + +

Go play with the Online Python Tutor!

+ +
+ +
+ +

Solve

+

programming problems by writing Python code

+ +

The Online Python Tutor also allows students to practice solving +programming problems like those they would receive for class assignments +or technical job interviews.

+ +

It provides web-based interfaces for writing solution and test code, +executing on a series of graded test inputs, and showing what tests +passed and failed.

+ +

The above screenshot shows passed and failed tests. The user can +click on the "Debug me" button besides one of the sad faces to debug why +the program failed on a particular test.

+ +

Here are some sample practice problems:

+ + + +
+ +
+ +

Debug

+

existing programs that almost work properly

+ +

Using the Online Python Tutor's bidirectional single-stepping and +data structure visualization capabilities, students can practice +debugging, an important skill which is rarely covered in web-based +programming problems.

+ +

They can work on problems like, "Change at most 2 lines of code to +make this almost-correct Python program work properly." Here are +some sample debugging problems:

+ + + +
+ +
+ + + + + + + diff --git a/v3/js/jquery.corner.js b/v3/js/jquery.corner.js new file mode 100644 index 000000000..c416613fd --- /dev/null +++ b/v3/js/jquery.corner.js @@ -0,0 +1,249 @@ +/*! + * jQuery corner plugin: simple corner rounding + * Examples and documentation at: http://jquery.malsup.com/corner/ + * version 2.12 (23-MAY-2011) + * Requires jQuery v1.3.2 or later + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * Authors: Dave Methvin and Mike Alsup + */ + +/** + * corner() takes a single string argument: $('#myDiv').corner("effect corners width") + * + * effect: name of the effect to apply, such as round, bevel, notch, bite, etc (default is round). + * corners: one or more of: top, bottom, tr, tl, br, or bl. (default is all corners) + * width: width of the effect; in the case of rounded corners this is the radius. + * specify this value using the px suffix such as 10px (yes, it must be pixels). + */ +;(function($) { + +var style = document.createElement('div').style, + moz = style['MozBorderRadius'] !== undefined, + webkit = style['WebkitBorderRadius'] !== undefined, + radius = style['borderRadius'] !== undefined || style['BorderRadius'] !== undefined, + mode = document.documentMode || 0, + noBottomFold = $.browser.msie && (($.browser.version < 8 && !mode) || mode < 8), + + expr = $.browser.msie && (function() { + var div = document.createElement('div'); + try { div.style.setExpression('width','0+0'); div.style.removeExpression('width'); } + catch(e) { return false; } + return true; + })(); + +$.support = $.support || {}; +$.support.borderRadius = moz || webkit || radius; // so you can do: if (!$.support.borderRadius) $('#myDiv').corner(); + +function sz(el, p) { + return parseInt($.css(el,p))||0; +}; +function hex2(s) { + s = parseInt(s).toString(16); + return ( s.length < 2 ) ? '0'+s : s; +}; +function gpc(node) { + while(node) { + var v = $.css(node,'backgroundColor'), rgb; + if (v && v != 'transparent' && v != 'rgba(0, 0, 0, 0)') { + if (v.indexOf('rgb') >= 0) { + rgb = v.match(/\d+/g); + return '#'+ hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]); + } + return v; + } + if (node.nodeName.toLowerCase() == 'html') + break; + node = node.parentNode; // keep walking if transparent + } + return '#ffffff'; +}; + +function getWidth(fx, i, width) { + switch(fx) { + case 'round': return Math.round(width*(1-Math.cos(Math.asin(i/width)))); + case 'cool': return Math.round(width*(1+Math.cos(Math.asin(i/width)))); + case 'sharp': return width-i; + case 'bite': return Math.round(width*(Math.cos(Math.asin((width-i-1)/width)))); + case 'slide': return Math.round(width*(Math.atan2(i,width/i))); + case 'jut': return Math.round(width*(Math.atan2(width,(width-i-1)))); + case 'curl': return Math.round(width*(Math.atan(i))); + case 'tear': return Math.round(width*(Math.cos(i))); + case 'wicked': return Math.round(width*(Math.tan(i))); + case 'long': return Math.round(width*(Math.sqrt(i))); + case 'sculpt': return Math.round(width*(Math.log((width-i-1),width))); + case 'dogfold': + case 'dog': return (i&1) ? (i+1) : width; + case 'dog2': return (i&2) ? (i+1) : width; + case 'dog3': return (i&3) ? (i+1) : width; + case 'fray': return (i%2)*width; + case 'notch': return width; + case 'bevelfold': + case 'bevel': return i+1; + case 'steep': return i/2 + 1; + case 'invsteep':return (width-i)/2+1; + } +}; + +$.fn.corner = function(options) { + // in 1.3+ we can fix mistakes with the ready state + if (this.length == 0) { + if (!$.isReady && this.selector) { + var s = this.selector, c = this.context; + $(function() { + $(s,c).corner(options); + }); + } + return this; + } + + return this.each(function(index){ + var $this = $(this), + // meta values override options + o = [$this.attr($.fn.corner.defaults.metaAttr) || '', options || ''].join(' ').toLowerCase(), + keep = /keep/.test(o), // keep borders? + cc = ((o.match(/cc:(#[0-9a-f]+)/)||[])[1]), // corner color + sc = ((o.match(/sc:(#[0-9a-f]+)/)||[])[1]), // strip color + width = parseInt((o.match(/(\d+)px/)||[])[1]) || 10, // corner width + re = /round|bevelfold|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dogfold|dog|invsteep|steep/, + fx = ((o.match(re)||['round'])[0]), + fold = /dogfold|bevelfold/.test(o), + edges = { T:0, B:1 }, + opts = { + TL: /top|tl|left/.test(o), TR: /top|tr|right/.test(o), + BL: /bottom|bl|left/.test(o), BR: /bottom|br|right/.test(o) + }, + // vars used in func later + strip, pad, cssHeight, j, bot, d, ds, bw, i, w, e, c, common, $horz; + + if ( !opts.TL && !opts.TR && !opts.BL && !opts.BR ) + opts = { TL:1, TR:1, BL:1, BR:1 }; + + // support native rounding + if ($.fn.corner.defaults.useNative && fx == 'round' && (radius || moz || webkit) && !cc && !sc) { + if (opts.TL) + $this.css(radius ? 'border-top-left-radius' : moz ? '-moz-border-radius-topleft' : '-webkit-border-top-left-radius', width + 'px'); + if (opts.TR) + $this.css(radius ? 'border-top-right-radius' : moz ? '-moz-border-radius-topright' : '-webkit-border-top-right-radius', width + 'px'); + if (opts.BL) + $this.css(radius ? 'border-bottom-left-radius' : moz ? '-moz-border-radius-bottomleft' : '-webkit-border-bottom-left-radius', width + 'px'); + if (opts.BR) + $this.css(radius ? 'border-bottom-right-radius' : moz ? '-moz-border-radius-bottomright' : '-webkit-border-bottom-right-radius', width + 'px'); + return; + } + + strip = document.createElement('div'); + $(strip).css({ + overflow: 'hidden', + height: '1px', + minHeight: '1px', + fontSize: '1px', + backgroundColor: sc || 'transparent', + borderStyle: 'solid' + }); + + pad = { + T: parseInt($.css(this,'paddingTop'))||0, R: parseInt($.css(this,'paddingRight'))||0, + B: parseInt($.css(this,'paddingBottom'))||0, L: parseInt($.css(this,'paddingLeft'))||0 + }; + + if (typeof this.style.zoom != undefined) this.style.zoom = 1; // force 'hasLayout' in IE + if (!keep) this.style.border = 'none'; + strip.style.borderColor = cc || gpc(this.parentNode); + cssHeight = $(this).outerHeight(); + + for (j in edges) { + bot = edges[j]; + // only add stips if needed + if ((bot && (opts.BL || opts.BR)) || (!bot && (opts.TL || opts.TR))) { + strip.style.borderStyle = 'none '+(opts[j+'R']?'solid':'none')+' none '+(opts[j+'L']?'solid':'none'); + d = document.createElement('div'); + $(d).addClass('jquery-corner'); + ds = d.style; + + bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild); + + if (bot && cssHeight != 'auto') { + if ($.css(this,'position') == 'static') + this.style.position = 'relative'; + ds.position = 'absolute'; + ds.bottom = ds.left = ds.padding = ds.margin = '0'; + if (expr) + ds.setExpression('width', 'this.parentNode.offsetWidth'); + else + ds.width = '100%'; + } + else if (!bot && $.browser.msie) { + if ($.css(this,'position') == 'static') + this.style.position = 'relative'; + ds.position = 'absolute'; + ds.top = ds.left = ds.right = ds.padding = ds.margin = '0'; + + // fix ie6 problem when blocked element has a border width + if (expr) { + bw = sz(this,'borderLeftWidth') + sz(this,'borderRightWidth'); + ds.setExpression('width', 'this.parentNode.offsetWidth - '+bw+'+ "px"'); + } + else + ds.width = '100%'; + } + else { + ds.position = 'relative'; + ds.margin = !bot ? '-'+pad.T+'px -'+pad.R+'px '+(pad.T-width)+'px -'+pad.L+'px' : + (pad.B-width)+'px -'+pad.R+'px -'+pad.B+'px -'+pad.L+'px'; + } + + for (i=0; i < width; i++) { + w = Math.max(0,getWidth(fx,i, width)); + e = strip.cloneNode(false); + e.style.borderWidth = '0 '+(opts[j+'R']?w:0)+'px 0 '+(opts[j+'L']?w:0)+'px'; + bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild); + } + + if (fold && $.support.boxModel) { + if (bot && noBottomFold) continue; + for (c in opts) { + if (!opts[c]) continue; + if (bot && (c == 'TL' || c == 'TR')) continue; + if (!bot && (c == 'BL' || c == 'BR')) continue; + + common = { position: 'absolute', border: 'none', margin: 0, padding: 0, overflow: 'hidden', backgroundColor: strip.style.borderColor }; + $horz = $('
').css(common).css({ width: width + 'px', height: '1px' }); + switch(c) { + case 'TL': $horz.css({ bottom: 0, left: 0 }); break; + case 'TR': $horz.css({ bottom: 0, right: 0 }); break; + case 'BL': $horz.css({ top: 0, left: 0 }); break; + case 'BR': $horz.css({ top: 0, right: 0 }); break; + } + d.appendChild($horz[0]); + + var $vert = $('
').css(common).css({ top: 0, bottom: 0, width: '1px', height: width + 'px' }); + switch(c) { + case 'TL': $vert.css({ left: width }); break; + case 'TR': $vert.css({ right: width }); break; + case 'BL': $vert.css({ left: width }); break; + case 'BR': $vert.css({ right: width }); break; + } + d.appendChild($vert[0]); + } + } + } + } + }); +}; + +$.fn.uncorner = function() { + if (radius || moz || webkit) + this.css(radius ? 'border-radius' : moz ? '-moz-border-radius' : '-webkit-border-radius', 0); + $('div.jquery-corner', this).remove(); + return this; +}; + +// expose options +$.fn.corner.defaults = { + useNative: true, // true if plugin should attempt to use native browser support for border radius rounding + metaAttr: 'data-corner' // name of meta attribute to use for options +}; + +})(jQuery); From 56d833093031b60205a4e1ce11c9082425921438 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 10:38:56 -0700 Subject: [PATCH 284/502] bah --- v3/css/{pytutor-title.css => index.css} | 0 v3/index.html | 20 +++++--------------- v3/js/index.js | 17 +++++++++++++++++ 3 files changed, 22 insertions(+), 15 deletions(-) rename v3/css/{pytutor-title.css => index.css} (100%) create mode 100644 v3/js/index.js diff --git a/v3/css/pytutor-title.css b/v3/css/index.css similarity index 100% rename from v3/css/pytutor-title.css rename to v3/css/index.css diff --git a/v3/index.html b/v3/index.html index 04781cdd3..b6f784ee0 100644 --- a/v3/index.html +++ b/v3/index.html @@ -73,14 +73,9 @@ - + - + @@ -109,15 +104,8 @@

Python by writing code and visualizing execution

Tutor provides a rich visualization of variables, heap objects, and stack frames. For example, the following code:

-
-x = ["Alice", "Bob", "Charlie"]
-y = x
-z = ["Alice", "Bob", "Charlie"]
-
- -

will be visualized as the following HTML diagram, which properly shows -aliasing relationships:

+

Go play with the Online Python Tutor!

@@ -185,6 +173,8 @@

existing programs that almost work properly

href="https://github.com/pgbovine/OnlinePythonTutor/">GitHub repository.

+

Join ___ (low-traffic) Google Group to receive project announcements.

+

Copyright © 2010-2012 Philip Guo (philip@pgbovine.net). All rights reserved. diff --git a/v3/js/index.js b/v3/js/index.js new file mode 100644 index 000000000..5c23683b2 --- /dev/null +++ b/v3/js/index.js @@ -0,0 +1,17 @@ +var demoTrace = {"code": "myList = (1, (2, (3, None)))\n\ndef sumList(n):\n if not n:\n return 0\n else:\n return n[0] + sumList(n[1])\n\ntotal = sumList(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 1]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "n": null}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f4", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 5, "event": "return"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "sumList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 9, "event": "return"}]}; + + +$(document).ready(function() { + // for rounded corners + $(".activityPane").corner('15px'); + + var demoViz = new ExecutionVisualizer('demoViz', demoTrace, {startingInstruction: 1, + embeddedMode: true, + editCodeBaseURL: 'http://pythontutor.com/'}); + + // redraw connector arrows on window resize + $(window).resize(function() { + demoViz.redrawConnectors(); + }); +}); + From fd1d7835f219cb31abd3b4a6ff078c0d93e85fb9 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 12:36:46 -0700 Subject: [PATCH 285/502] bammmm --- v3/css/index.css | 67 +++++++++++++++-- v3/index.html | 191 +++++++++++++++++++++++++++-------------------- v3/js/index.js | 4 + v3/tutor.html | 2 +- 4 files changed, 173 insertions(+), 91 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index 3a4cd2005..e629d001b 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -7,7 +7,7 @@ body { font-family: Georgia, Palatino, Times, serif; font-size: 12pt; - max-width: 900px; + max-width: 1000px; margin-left: auto; margin-right: auto; } @@ -23,20 +23,29 @@ h1 { } h2 { - font-size: 12pt; + font-size: 14pt; font-weight: normal; margin-top: 2px; - margin-bottom: 20px; + margin-bottom: 0px; +} + +.smallH1 { + font-size: 14pt; } + .titlePane { margin-left: auto; margin-right: auto; - margin-bottom: 25px; + margin-bottom: 20px; text-align: center; } +.titlePane h1 { + font-size: 24pt; +} + .titlePane h2 { margin-top: 8px; } @@ -49,12 +58,17 @@ div.mainBodyPane { div.activityPane { /* TOP RIGHT BOTTOM LEFT */ - padding: 15px 20px 5px 20px; - margin-top: 30px; + padding: 15px 25px 5px 20px; text-align: left; border: 3px solid #005583; } +div.activityPane h1 { + font-size: 22pt; + margin-bottom: 20pt; +} + + ul { padding-left: 18px; @@ -71,12 +85,49 @@ a:hover { color: #3D58A2; } +div#learnPane { + margin-bottom: 10pt; +} + +div#learnPane p { + padding-right: 80px; +} + +div#learnPane h3 { + font-size: 16pt; + font-weight: normal; + margin-top: 3px; + margin-bottom: 8px; +} + +div#embedPane { + margin-right: 5px; +} + +div#sharePane { + margin-left: 5px; +} + +div#detailsPane { + margin-top: 15px; + margin-left: 5px; +} + +table#embedShareTable { + border: 0px; + width: 100%; +} + +table#embedShareTable td { + vertical-align: top; +} + #footer { color: #666666; font-size: 9pt; - border-top: 1px solid #bbbbbb; + /*border-top: 1px solid #bbbbbb;*/ padding-top: 5px; - margin-top: 15px; + margin-top: 10px; max-width: 100%; /* center align */ diff --git a/v3/index.html b/v3/index.html index b6f784ee0..66d57f040 100644 --- a/v3/index.html +++ b/v3/index.html @@ -29,35 +29,9 @@ --> - - -Online Python Tutor: Learn and practice Python programming in your web browser +Online Python Tutor: Visually learn Python programming @@ -84,106 +58,159 @@

Online Python Tutor

-

Learn and practice Python programming in your web browser

+

Visually learn Python programming

+
+ + + + -

It provides web-based interfaces for writing solution and test code, -executing on a series of graded test inputs, and showing what tests -passed and failed.

+ + + + + +
+
-

Learn

-

Python by writing code and visualizing execution

+

Learn to program in Python by writing code and visualizing execution

+ +

Online Python Tutor allows teachers and students to write Python +programs directly in the web browser, execute those programs, step +forwards and backwards through execution to view the run-time +state of data structures, and share their visualizations on the web.

-

This free educational application allows teachers and students to -write Python scripts directly in the web browser, execute those scripts, -single-step forwards and backwards through execution, and view -the run-time state of all data structures.

+

Rather than simply displaying a text-based console, Online Python +Tutor visualizes stack frames, variables, and heap objects. For example, +here is a recursive function that sums linked list elements:

-

Rather than displaying a bland text-based console, the Online Python -Tutor provides a rich visualization of variables, heap objects, and -stack frames. For example, the following code:

+
+

Since its inception in January 2010, over 100,000 people have used +Online Python Tutor to understand and debug their programs. In addition, +instructors in over a dozen universities including MIT, UC Berkeley, UC +Davis, Sonoma State University, the University of Washington, the +University of Waterloo, the University of Toronto, Luther College, and +Swarthmore College have adopted it for teaching introductory computer +science courses.

- -
-

Solve

-

programming problems by writing Python code

-

The Online Python Tutor also allows students to practice solving -programming problems like those they would receive for class assignments -or technical job interviews.

+
-

The above screenshot shows passed and failed tests. The user can -click on the "Debug me" button besides one of the sad faces to debug why -the program failed on a particular test.

+
-

Here are some sample practice problems:

+

Embed visualizations in digital textbooks and course lessons

-
    +

    Using just one line of JavaScript code, you can embed an Online +Python Tutor visualization within your web page. For example, the +HTML textbook for the introductory CS course at UC Berkeley (CS61A) contains +dozens of embedded visualizations: -

  • Two-sum
  • -
  • Reverse list
  • -
  • Remove duplicate characters
  • +

    -
+ + + +

+ +These visualizations have also been embedded within two other web-based +digital Python textbook projects: How +to Think Like a Computer Scientist: Interactive Edition and Computer Science Circles. +These textbooks collectively attract around 16,000 unique viewers per +month and are being used in at least 25 universities around the world. + +

+ +
+ + + -
-

Debug

-

existing programs that almost work properly

+
-

Using the Online Python Tutor's bidirectional single-stepping and -data structure visualization capabilities, students can practice -debugging, an important skill which is rarely covered in web-based -programming problems.

+
-

They can work on problems like, "Change at most 2 lines of code to -make this almost-correct Python program work properly." Here are -some sample debugging problems:

+

Share visualizations online

-
    +

    To share your current visualization, click the “Generate +URL” button and send that URL link in an email, social networking +post, or forum thread. When recipients click on that link, they will see +exactly what you are looking at. This is a more effective way for +students to seek assistance than simply copying-and-pasting code.

    -
  • In-place reverse
  • -
  • Binary search
  • -
  • Mergesort
  • +

    For example, clicking this +link brings you directly to step 44 of 57 in a program to find prime +numbers using the Python for-else construct.

    -
+

In the future, we plan to create an authoring environment where you +can add annotations, discussion threads, and even interactive activities +on top of your visualizations.

- +
- + + +
+ diff --git a/v3/js/index.js b/v3/js/index.js index 5c23683b2..3396929ee 100644 --- a/v3/js/index.js +++ b/v3/js/index.js @@ -9,6 +9,10 @@ $(document).ready(function() { embeddedMode: true, editCodeBaseURL: 'http://pythontutor.com/'}); + // customize size a bit: + demoViz.domRoot.find('#pyCodeOutputDiv').css('max-width', '400px'); + demoViz.redrawConnectors(); // don't forget to redraw after resize! + // redraw connector arrows on window resize $(window).resize(function() { demoViz.redrawConnectors(); diff --git a/v3/tutor.html b/v3/tutor.html index c6188dcc8..ce7020296 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -170,7 +170,7 @@

To report a bug, click the 'Generate URL' button, paste the URL along with a brief error description in an email, and send the email to -philip@pgbovine.net +bugs@pythontutor.com

From 78f248880dcd527bede67146e16c57d59a9b4b76 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 12:36:58 -0700 Subject: [PATCH 286/502] bammy --- v3/opt-v3-cs61a-embed.png | Bin 0 -> 131722 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 v3/opt-v3-cs61a-embed.png diff --git a/v3/opt-v3-cs61a-embed.png b/v3/opt-v3-cs61a-embed.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ffcbd547992a2381a5d2ee71ca5363e317265d GIT binary patch literal 131722 zcmY&AJgS)#22yVgM-5=k*>;8B@ zdS=>Ydb(>>SMS;tuA(G^iiD2@008PISxGejfawMR*!LjVx00r|lDoGXjEkC#I8ZT8 zxc`=U?5YhFMq7>rtdt^)ys8kP{0sy4ICrL4N&&8uQ4^RC8 zzf+;@%$l~-JhMpwvEQFD=v3R91vCk1ZU|_a+K1Zc=9(PR>PtK-_TJi7bln_H7M6yw*)Is*# zD>dywC&FNrc=oG!uF>;A45+GfJlT$yEJzeOc!eMr4Tc3&hCM%gV)r`qowVhO5q#*4 z?06{9%qN40_Zk!=C93KSgJ99H(KS@=RC;Ksip?|GkpQ?apD^IX6jOSwKas1{uj54y z5M<0A*5b?A@F#S&>RQ#>Uhk-fI@6nRlEDI`;``cXgBg$G*Dd^L$LR(5K@wncF|a2T zUA&dl5f?5w+u7?~_9n04KRyr{%NZ`kcSlG2FB9!>6@9qhb(qQpuqiPf&5RA~eDir{xsJh&%|_v!sgIIZAJvr>iIA3GAGy~d|n9o8u44V%^>WzH8#Ud z5|3PkCVtIis@uc`j)qN?pTcQ~0RX;d@{!n6GG7%AkYq!RBL&d|qLdit-a=_mYc7Iq z^Q+!-OesaZD9Nj)P=uXl$eAYd{X;enoO)$gRf3E%B=-{m@qL%W2hG_;W!D@Bybp;V z4`Yr*#5|+MY@v|+4;f7j4NJB)Aqk_uus2rIig6e9`~7{sRH$UZ6K3iunDTYi;@@ty z66!V1PZIOYXyNu5lP|a*NP<$47}KL`2J{ejkuHzu#Q;j7dGA_3oWDs+VUN=6@jtoJ zrzTY>v(*l3LE?}<-QBPQPIRhRQmW-@Fu;|!gv`LZx=sQ`YC|wsdPD@*OpNL~U7T8Q zB0_O+cNm^@LZ1G=GEM^56a)zqBL@fejXqqKFmWIdN{Nk=WL=wnL?u_uI8x2{SuQd% zk^o=Ri4YNxjle?^v(ORq`%EOm!RJ+=dOG?Aclq^B#<$!@Ir=`LBqLP0Jv>t*W6q&B z5)($lpNV*Bg`G(DhXz*xG#1thFJW5uo8pMtBvue03fbv@yd`eeR>>4uox_X_quG%- zd0|$@XHrlO1sR$1umj5yLPTcB*inbf*@DcWh%&+aNtsuO`6z*sg2cms0;Z|1LZObT zlfAJ&Ii*_7Cp0<$VC_G0f83jIoH*pbhc0;hCAfMQLIs_)rc6h5;akJ)!7b&|l@i0o z5*`%=d1Wj2OT@{lP(xMvap8f{@h0?c1_^RNls{`|gyD~EvUwsKwE=mSQe+;j1tk!u zTRwHBuQw8coJ9fe*e9i#{aNw0zP0%fHHAfzEZsw~FisQ?%GfMn!@lCuZh@n|Ta0Q+ zK>=?vJ`-R+uxfU*p$7S#E`tI{e;@y1)KP3>Zru6fBLd=pX)$L$lnn`8=JR=CY8;(e zVu>q$(vKZ73zTUELBfxGP*NbbDb7a3s_11h1Qg1Mg+d|bpq?*P$s(c6&4MxXbH;XN z|0+#^|1p|Asbo-x@sqP4PHv(&NNco2tUtBOIC~rKL zPbkf%*l7fr1ORlB_#6p$iyoKEaAzZS`$gR?>9O={ml!ii=gYW7i+`vI zjEsy@*Yue?ZtZ9!rp%~o0d!1OveSiQ?{I4RevL8FGdc0g%V)mxYHH%H(JVy(etsTW zu3i+ZQ5x$)0i)=CK(=j@9(&)+ReG4&cmI7Z8EYFG3w!?S&Bcaq%UD0&QPTL+a%<+( zvVN&*N=k~^I1}5(UntL>E59NFk$7W?(^m<%_hDR3?)lP1Jou=D19o+~hX1PDocmK} zOlNJm007EnhC)Uue=!P`XL1ae>^86J{E}=Cyn8Q6{yr%0ClV5gEhUnjX8H7C)Hlq} zG|HJ@MB3K!b}Q0@cR*ypx>`rBQ}Q*t(4e8>PY8dUN#WlEfiTv!{7}t-Z5j|Ypa1|M zqLPqzDrG|xb?p7a^z;B=nLtM{{ARCN1~JMR~wy$>Na{8C2j-&z}kTW zoSj`@-k#F`yQE;D>!fF8)6$lYj#a^QUe&`20l*#+EP%7Ap%eSn%=WJ>0QB>g<}Tb$ zFwp)XP>9Esh;5{%c~|FcAqg_3Py1^Nxormjr`9-d&2-CGf6cuo)H2lnyWrek0mom? zzhq^gsm2_KMKD)3Tf+4w8a@*y4cj~Om7EBBdKCl(SUcO;08o9rUhz>N?=9itMdSknozY<`~@9NdkF`-z%wTs(g@ z5SML#=GJ~`c4d-YT1b$bq3&IK`|}){$OUVh#hFpvvTs2|$8ILS+wiG@XXWSIHz92Q z#)j})MNP9<^&HBE0Q9GB-ly>y&F}WV85np}0Bb6UMOJNR%Ky)6M4|;E$-<+V9@fMq zIM>5oMoet|8R;9CZFqH+*h6ket|}NL)4FL&E?R)4Nl@;^6};H_DgKJPWzGQ^L}vWO zxlB1Zyn0UUt(yn|C^hlZTxCh5*9!0WiA6>`Ii-|fvr`RlU$>{LrrDXhVP zQ%{4+$+qFWTgxs3i+Cq)BRz1%GR}W7a*@S#np4sCKY!1LmqWZy%UC{6Pp7v!Gz36U z0+%qz2RAtE+ONn*jI7dxrKZ?`PHgsc4bgZIVvLBD-`zx&bcbtFRT9T%aJQ$R(t9pk z)Hy#TUCU#a+PO$}EPO9ri-H$;uip_ozrYaDWXjR^I-kQOVF6K)7zht#WLBG<&X(mX zqIMd$^huSJx-JU zv~W(qWmyA0PO}%^Y_#}w7=ZiN8flo?XM<yK0!8EFIZg_6cym}Bvu@?2dp_;c+mYQ`v% z%KhA4%JPJm(kID<|6BCOGy?)%2RR573iG=fUFmXTy#ym2`^;8JHZPG*sTVfB+SrT@ zIVmVAT2-=k{)<2Z%d|y)%u!OZ-)##hO^OBv*9P&$e^mzTJ&HW+-{$;p>hOCV2#X=! zEUWX*m|m)HD`{6R;DYN+)_vQrD1Tu}5Pf-R?F@sNh%5ev!WzN!`v`s9czl+Zj)E%w z)2K;55C~DliR`~Zc)qw%1Enc+hC2n5`Taup#J(WV%PA-=Jv{HGi^`o*UQwY`ITx8X zKRKzYt_}|XfhefaIJ<{RIlL*52bvsT>(`sP^6k>It)>L@B@*AO^F_5V58E@-R~7BQ zz6S|thP>4S*y|!UJ|rYU4;PNzDq8V}dRLT^Gc>}_xM)ADT0M4;BoT14eJ{?VHyxVu zyREW)Js+n!G&EUR9%wElkFaB-Do!+} z_Ged)HNx!&cRzJ5n^PvUZ) zQ{}CfH0vspR_|rwZqZh<@u7IScgg>*s%p0O{UsvpcBq*Gk%;r0|McaX)N6=)+X@*b z`N;3Wc78nlR8$NFOmbFEbw0~}#O^p1MZcuA-HC~sF$Jjf)GvFDEQc~0*;@QbksKUb zdU^3n`z~V!Mn-jHUhMY@jP4(Icz-yUBkas#FZtCl)9*#Wey8lMzPM0VGgr?{ca8ag zs#i9<(Omdv3+%v3fEp^b7QDLds@r(d&L&?WQP@~ZE5ge`pK%#Hjp?00mlpTV(5x;^ zo1JraZZ>geOfl*gQ%7@aBMri%j(_QG^FrrEXnt~imOJOoC8i8O@#kHoG0*tP z{p`8&gKW$!Xhb)l2($2%m-AiMM zHp|oGw>6#9bZIs5L|=cu*)GHZ!2$K%_olz9(`G(S+-t5>(Xp<6WFD^3RRD?gYqNrj=~?7tooy}WNz9}p z%SHQ~FOW1`zP|rdbEGyGa-8;Q0p5;y`n

oHpyHCo@>D%lN zt_()*d`rjPETdIY{ia~ub&sqgV>9-&o#fM1@44OAGY)z(tB|(s*#7jXUDxX$98uI-kFM%cMtuW#~imgqiZm$Wk-!J&w=Z%m?58@DXp&do;D6$nqzuXHiXO!`>?)gKn6j2!!}{Y zo=xo=KTdw2nmBFJCg$fF1Q*WZsFkMr;dDf}AgT9eqz^37QY5XFCjHyh)|_BbDBJLd zLsBSdEN&0T44$ep_D5kF*1J)b4K8|Cgk))D_$Xn}zGpmIY482XH z`9RhS5<{pOZr>j7f0^`GGqh{KCzG@-=f)m+V3Y(?h!tQMBiO#f-moB-pzMXaJU%wl zEuEBd?X$2kEXVLP%%9QXTD95gQdx3>ut{P`h|-M>vWtJ;bTrvUXbZ?~xmOo^#wU{8 zZW8yH4FY^0rl01g!r#QVB$y84NOoS^|J~Z1{lDqlj)w;bd z7*#!c3>PxJpGaxr=;(O7SO@MdE-v;Itam%aX%_D#HK)@=8VeYviXknZpI+9l*|+;N zu=Y7V2srz0wD4S%I6F7z|8g0Sx)Lry$Hc(YZtD$*e}6qc?Z|wNMAy-)k}LG~`WX|d zHaa^95u~1fXGLVCzc@=bQcd}ZaA1f%7b*rib{Aj)rF6`Y0f~K>RYPE6fV6dn6>J>NzV*%S8qV;IO!iz5vQ$9R6#4A%Az& zODcn>eBVY`ab`C6CeltzE0fQ!x}~M#%k#IY+|7ZEma^;H?GS+vMww8A-2rN9UYGNO z^y-RfD-?u^qQ?zK?c2TyVYXHOEd}|M{AS@3v>6SYu4N6otLz$P&$aaUl_ev$KJ6;v zyx<2U3clYSYp#%4Elr4wGQsei;soPrz-uy(;oWs_YeQkKe_4x!ykav|Q~)0;B; zH))4bN<}qYKtxEIv&pOJo|02&JF=J$a;=$wUnrTko;LRp>q=8&QKaeLoZhii$W7Xi z%{Mw3l(D8|WbYP=1gtUXu5D+wt}PWR_Vg)Vq0}_u7&9NgDldP_VN8mdq<1y;4sLE5 zj{c^LZ9m3}|4=StX8)f2f^@(0eyDMUII7EZn`0WrR&8j|I4s_}E`3LzBU86>gO3Z1 zFG~lt_h;EuF`u2GaF~jpMqJ&G{<2MqI8XZuiGQ8*{~T$@Z0R#4gxbhqEKzrL^c4!H zW?Nxl$m1_2yd`YgX6(64KtxhEK^6OT1O&B#qm2g0mxgBcL7@@~7*tB7aCww_J;<2k zf3UD|Cij9_;-OOC*k^IDcg{h}JB;Psk15++`)N>kGEi7gnnM4Z#Xn}*zqj#}*q5B} z6^S*JQk}jy8`o-wG`PAKB#u$a zcf$E-FthV*y)TVnD#+2capZQ?BeLU~kXsipRv2d$PqsR!fdqF+3a$^1HOZycNI&K7 z?SEoN-;jK-UF&Fuu4j~oeMg0NJ*tHF^<7iQb~WSe)z#khLxHyc>x#$Pb9?%yYem$| zeZtqhB9V$_9oY^M^9H?Sp5PTthx5?SyHIM3Pf1D>E5TIc)M_dPn2imdWe&FA8Omx_ zN0mkCj}Q@B5RCkU@X`rxhf3|_R@+e8m!pO)SC;lHYUJf%I){t%^-3j%`PfJV5fBja zCTZUg-b7hSSN@fBE;~|qIHG}(63y~2$t7_QG8`fzT1%H}GXd`8E=Lqkm_`u+`^q%J zw;fplX?f(@wivl|DJ=oUluK#Ui8vp(D@!W38ySR&wHQ5v!LZUZT#8<=rygVzRSE|e z*YX{BW>B^)!^-J>-s}nYU9F16ATWPfzcQ{3d5<}gI^o|^(!jmyUH}0d9&jYoGBV0h zDyo@$Lo>VN^iJWR(RpFSMwKKi-lSZhp4dUuPYl#~>C94jtL zFe#*Gy-b1}1XFOem>q`X^l@i=)xvNs=g6=3B9{B77}y}2AUO8T^4ut6>^Kq*SCiYH zso<{Ycrr{fy2E*I0kt6FGh$#)c?ls5Q(VSYt)9a(^Zv%Smr=8uYz(c_E!Qmdt8{q@ z{dG-!jeY7Sl)QFt@T^kt+ufz7;m&$=W!Yp#uNAd&YMHY+xZ5Z4t-aC3tR=S**I zS9Rf^Ra8_wQ%pLO^^EIwG4CU0#t1uwYG09$1F{up$RK#>Y`>r#D_07bwy|BupQZ!q zpuzGh8b5jARaI2(Sc2HR%h8nkaS{21ii{Q(Vn*1~h8mV?wwN;@^quDY$@T4y-#5W2 z)M*}mWfRHsEjvxkL5qJymM599^^zD|&G^s|c7 z6G!5uwM{Hzv}@#%A;elyHu)-!6ZF0J#FR6U20n-U-TxgXB#l*>{Sv0 z6J&I8;=#ZQB8&R5$3WdOX3j87{qm!zO@uf4%_+io+SE^oa8zvqVQW?0sHu1YwpdL8 z(eIwwa9UsZ&7na@$mESj{UL1qVCg`ZQ77Pc!IM{Mo<-hwgonR=LM2Da4h^=mOe#n< z@1;OYU*QmAHygi*8ApFJwz=HX*tbG4h6v{FeHKuTtX80tIvu4UGedC_)IBHd#|;Eg zd}j??SBo}W{QK&j1Iw1U>$K%1ue9$>*3RkVNY5Wh77B793`5stZrw&{I^qmu>&Fda z(_Z8mBkd*(<|)Y}9B{gec!*{4fSwoFsK*+d4dcSS!E>zrrzD6mNT&?RAEz!k7Y-IV z(mo)d?`&LN-dra5MfMQxZ2vnNm)JEQHifxe&$p5aq$7h&xz5jd=W;Nry*UsPlIoDf zDP>w84FjHeSWYwFM}Sz}pslvAP8FQDhWS ztH;BWLSnxke_XO^H36BBb9UGb+!%yqNXf-~4KU$;Z&jpE?C>vr$nPI&UwgC5o}Cr6 z^z|Y{pre|BDnf^gMl#u=8+XL=CEf!pO=kuHlaD~aI>~ru3xY%09)YZLFAp5MyB6>) z_pm{<>_U$2j{av+ySGt=@F?%F9#}O%A17%kxuIB^%YiI_Gs5|rQ)_+- z7&*GYOClK$16PU8!K9N(Qplv#?MYVUiJ&8YAFEj+co-LeGBx+3W%CoHkdeWQF8b%T zwRpg@Qey_Q33=Y#_5NinKv~uu5nb=;**wcQ~8m< zJ8szd`4q4di{sgH#v}CtwgTf>%8to0#LKMgSr4TFccYgge%Y_j6ExC`24vOiYOH8=XW< z0LOEaA7}Y5%_m|Dt50Tf+OD>Yo-IzhvOd;zZ$NLuebOIf4ERe?&1P4ey}5&s9pf7k zaw{~4bZhFD+w~hwt^H5qb_7oR{zyLAH+Y!T3Q4-6tp@C>j1-4A#qw7=y8AlX+Dbc& zX}xa^-8FzC@;gznQEWqsJ3-#{L3APZ-ZB*O*CP(Z7XDF|xoZLhda_?`2MBQ1fW<(p zoq#cWt{!n~%k`g^3a{3tew>(4cI|<_f#@uPtNW*yg&|VrMk_NNJw3F3Q0Gy+N+2tV zE^Y^JqvLKUe+viuV4 zPUf3!41~sHqcR$P7A@72*d_3Nbu4q?ANGVM`(BDd{<)>Y5r#f0K?NI1IWiN2TDPXc zRhn5OQU%okPCBf_fVUv5h zQVt%<^EIYLkw6i;!|ar6PuA_l$?T?I{^Aq9neo3ontat#=uO_&Qe+x^37O_^OWf)) zD5wzt9B>rkW{Ks<(hr7!%wmZu1J4$jxy?r7B1;ZK7B$2bg(falO1~}m+jI($m7@3& z!KMAto}a9pwK*SCY?5%Q%l9|%ulDO5F=|54{&(&WWAw!>m*p#0fK$zWY0j^*VUAN< zyf^pd*D!ZvjSP~d`dKdF)XzI=!2x;Who0?4V`gyKJmsXaCPN72$yoqR@3H-0_ z6V@p-FubyYL5&N)9E9B&$$}P9^-34!_uIi93!kmmFv~aQ$1Z8%YAte6S;n&=z z%srzw%uut;MZB1XedALa8pPXzRy|W~yO!x!<1*7R^1+u7V@aXXrt2PdV6oa&? z1ZCKDb|UVty1h=e-@++3ZRjwSEnTI*eX8WZWAeJ!Op^XbhG|jJnCCuyFeS;z96`># zc*HMOI$gj~J!`z!=vMkZ;u0A-x9^>i8U~!prPz6dOCH_~jyl3X(d#aW{YyiK-><(Q z#=^{kRc0#5tfknVl9R@q1j)HOYw3apYe(|z!4HhOUo87=$i@JO?6SyqI4S7&YEV9N zeOQb6HzAn5ELXKm2e*MJm=PSXb_@H3BtZr{ZlvzBg>R>~gY+f>l6xoGK zCK;cbsq`*C&oE!ibeZHsL~-Kq0V_!V`C)93haZbl6ytJ)9{<2@B(pE%Lrvn4WH(tH zYmFGu#lS}U0%eHtP%aG^K1ek_-aJb;HqQSzU4uJeJlQVAqMNjScSqpz3jj!4yyme` zQ6thUL#NU{eH6WmAku^E$!k(k)4c3YH26ISESE;yBS+HH767c_8^PUqh}n0&p=zZL zU%-o5y7EawYaIVBxNjA;Go30oQZ4HEcRjRYuR&mrH;}20EHk$tM=%_7O@5EC~zid3|7jfjk*l&h% zaYzW&sA_8@lbm@5WkSz!zJ8fy*uNM}m;Z_HJh;3H@y?(|9& zatJCwDaD_wV42{+7%m~u^a_2PdT1SvkAKonST*NLW8!WD0#&sC4MKKkzWo?9`2m#h z#ede-N=>QUDM&ALvmJDHJ_hAZ9Xt%WvKTd=j}I^ZSw0I{Z;HAV*4|_+9W`O{tMOQA zoB6qc6!~_(DAm%EsH@0Z<`eqkFg|jL*rQ854l!|xHnCt}B$gRUoYkr445?$4r;R(l z;p`{H3iGhHEu-Zedv`8FqC4ljp*^fpU0#e&p>CjMQ;%EDcaPJvO?3_qmKFEC>HU+1 z+PCIYzF>nLO1(?6rhQP0cTqw>{*CFQw4cXvl}U4DPpj<`5w;g^8}Is<`rJ%9*TDwt zfTKqS$>OQ@bZwLH?PyaZzmJK9O`Osghg@r9WE0i4$8yWqiaY1v_G}9F{N+WtcUP>Q z{?4CTj~MKaI4ie#4a3f48$v7EBwO|tDLaQH>*JWo`r zl|-`E=BHLK+-mW;?pxLuf=V0xEHgH29F4zNjxyu=Z*)2VyY!P{9*^jE3=u?Wf4U`O zarjWQ%@|o&4ZiS+V0L+|R0(6ID(uOh>aS><%4Hp=msro=&CfpETr#m0Rx-1&r(Z_a zo!?9vPlxtTRd3wqj;pVR%FGE2F`;~>_4U-&hFe5n>QrD!?>bLNXaIa6#%08h<2g z`<+cXc98uWt{4J93K53@1q*ZzI@BPtegHlZ76MRRT?o657T5I?f@IzGgJDA1l>5{< zcfNsHXecr~N1crM&H>R*S~y&?H1KzDs3PeInNu_?Lcf9Udd`)fmx55Xd7*e=D6vmhEcF^V+7{is z(cfZ+*t-Z3Y2)a6a4A6VI;JfDsO!Cj-cmT)+7e+cwfo{TSAy=uNHW0)< z4D{l{NmGgQMSp{$_mj5hi>8#~OF~tl=ww(Xk`~piD~W8wrBM8D@BS1ZxYvWX%^7jf zoC#CDCL`?7M02BwJl*AM5+MRu@JH8-2PgmDL_8H&azFklr(C`SL!5Ly< z`qadJ4i*QkorYVXkoJ0-NG+26fFEY}Bsi4DGXsg`Yu35K;=loc+H&M`jDr3o@z191 z2jmdzkQRhMFoq{{!jMXT_3obeN6M8G6MiJ5Q)bo;kB&K;H|#{^jwtlfyY18s|BZ5r z<*zk(Gs)7VWf=%lcr^T9b)$u~tz|1uoNUk$Ax5y}H|aRlckkYX=vlbilgVIW!Gl-lgBGy;c5Ig z9u3bA9@h#ObZx#=RJmx8P{VEbmwF{9L%chWp0w6CB22)CM3{UWwrWnk7*Y`RzegGA zO3nI1&>CuzgVa0$h!PTO{u`#*r<(;Gc*g(SEw0Mbog7xwS}soN+({vwJiGS|St~0+qX(f8B+vd5y(D+%*(cM) z`|@bz-p($QQRQNwg;59%b^b%Texqyur+u4+;vO-3ZDrh~^=O(P>Q9#`M za{*j$UX9b){lJ{Crb7$;xsZ^V2ruspD~tbbcu7N=z}uvfsGRY%pGWDTWod-F%IQOY zb~~|w6F5uCL@Z*3u-}6hFco^^@r-!ifoIQXOBqtsV?rq28;Q@_!28xMvi1kATF)Cx z>{{i0z6_$QT+q#ED3|1-C3xL=dE-&X{S*~UAXA_)29f=s#8MuR#1rq-en4cYea@S{ z9o)en28es0sW$^uz>iLg>4A-Kl+Ie0d7gxg7td0TN7?)#b+pfwO1;7^uLm9NBBupA zY02oP-#j$-VBYslopY|Ub%TDv2O*y2x)r#?z+=Qq!c1&^m;DP{7?1VcN-|s=@cbar zryTl5-%9ZmL`QCh(c`B;ge8@0SSSty!_wW4@H7v^FPmvR5HVFKW*m0Z_Jxy;Mht{p zetVtde{FiS%V1HuSB}{~j>erkI9^19)bE5~*xTeOB@N zSxn#JCqpS<(58L;<@fh$19)R2lo2u&u1AN$L6u&E2xy}PBJK5#i`y(r6ENqE4Bam| zh^5%5Z{+9SPLD0AxYv-+TpA&0l?*dISK;eY&8FLQIE~He8w0Z`+*@{f10OjU?8Ty4 z2HEb~oa)jgcxLhCiifRVE>6pt!Zu=VZ+#?ekO1S0pqie_+xynItJsmtkxdE%IG4)W zrbT_REa|#o8#~4t-FFbuMcouDtW6OT zZtZ-y`4R~(BJ-<7v->Xx6pEJg(LQD~*nHcpHMe=CETmtV|J*1uMc+$Bjs>a>#r@EZ z%SV2s@H0ae&@DLkJbjWW^C~VEp|kR(N{@l>@m5LwEy^^Wa0oRt)q6x zUG>9-mF>u8?!QreE{&C8QL5#(w^_=%{Byd5;Ak|)3jFciU!Nc7EK=u)!Yg-T28z+9$qRYj~91tnPP}_ z0#Pu=leUcbxpPF+u$35RzND(=?Bt#LFYw0I3V7OHoP0ncZ08$WSnYjl!~m%J#p!mg z0nL6%v!hCd;d8QEHCnRT2Rv=(+X=ISNUN8Jp_c5&?q+WkIAA?@uC*8f2I7@+h%!&F`{fCxGYkz5IT4@OcN3eF5j?#?d6JK0mokcXe(9M0f5b{u`DFoDg z5GpQ=PLdW$je)1k*yHqT+@@yV6O@~%bgT5ROs8o)$%U298Vrc)$W7cOsKyz~_K=UU z6<;fy7%A*?m2fqscP%(#IF@EDO$ zdRk19dga#KGZIH@CiMX>p8W-jfjifzb@FgV`}H)RszoX43SmpxzPz~leUPJC>D;ek z&e~KphjVQu=?QlumAprCEDAkDIEbDqraO|=m(YKaA}6^%akqC|}t~c1%ZIeh{jPYbI*;JPJ3P zq?I_c_unS?Wp!-q#~giOUhaQ6&qU&1!Ef8WfcXDfBpwj*{I_zXQ;?MO+vu@Y(IcSr zw6wIX6#r{Dc*@YS|BodStz!N^)&)`S;Q#-E-s7RYI)4TGgN3aUzyUjZr6MEI!mfej zlBo5@d7Om3I|)Dte4bfOK46jzV&8ggS(eF;aSrbm*Ahg)+$SCk^m51z<=(Z3diSLmd3pzQ;w!d7iBTqaDf+NL1Rt6kIANkjZ z6S6D05lA7c*=9aBS*rnsOmL))8#SYv>Ca=z0q-1q;SafrgTdWdEJv}Lcl>R|%jLdN z2@`%D3@Bs}Fm=FP{>O?#Vloc@gBeS-)>(?#f|!*8h`ImM^v6nG!pC7mqpWC!yrMcU zYSNW|ZZ+H0{n3Y7nRUVGtgHGFTFlv3Qg920PH z;U+SoWuUXq8KqMFxNQIyzYD^gT5?~?biY-=Z}2-jZTDPjyWP^B@!Lf^7W|ueSSE{L zbz>ip#PF;75VD%^7FWXf>*v{vP)n$l6a~ri_JpD1?A&(JjCDedfRPWAtZTu2^PJHV z$NUNv(kv{4$CtI6{4t5~lKAZCRkuTY4cOf@4mi!(9piYfS4%F=-qG&==L0C8--K1<6De~S_+z)t!!@#iMR zLxE+gI-c+c8+E9zG8)SG{q!ZAm0oCDlEt`Wr{7uUdi3gf`BJ^LXT{~+xZha*wZ-g; zfZ@6Mm4=ecS`$UsM2wQMvc@d$1j*{OAghsv&c(xLqy1DkX$m`mRRu*UDb0%e`Su-Q z4=JzvyCxoG6h%8!zQV1$xsK~MzkoHpE3uGcb6H94>tB=P&yMSV?3g6lha)hEDfqJT z@LhZx3*4LwxAi@8C9Wfj0-zW8oZ;ash{}4G@{08Pf9zOzZhh48mEiIO{2%p1xVDkf zk}n6wqomVIBDP(hj^c!@d{(fNwm&n4F^~4;_{qXhTR?2ANc^#`1KW_>87+o-t@7ph(V%9d@EY}b zz~k{RRqlcl#Q1if=R@5G>=ccI8A3osPU^$y3fsn*ddhZdQ^)SXHevb}Cd9BkW`zO3EXM+nrjp>HCBtSw5LM(07GU~h9e>aBUWD50z zf`^e3KeSf4JSw0NBw%L2Bm|8%+>G{gnyc)}j$Ius`)KbvE~4%Yj;D;Hda=f4q-z%K zHos1Ipd=Z@{iN14gqGDL26 zq0y)OGdzbmIc>YEK7jFyaamq(wbj7k3f!g&Qfu?BwUWt#`dm1VQvHyvUiSOi+Nia< zD&O0ik1`)^bg~ONuD7}pnDBZVNY;3Arc&n52rAn+k0`d^)xXS|g(=mA{9465c^sec z_%eUiJGylzk%<+^!!v5RIOswpU2LuHA09a$Y?+psl<` zD>x|6sT`g=u~q)*ckif2JC|1~Djbl8?e$M_+Gt9!_fXaoMQF?VNQL2ZfA6Q5F_&p~ z==+r0U*um6M=sp)(>d>Yu*~Yr;pN1K3cJtYWNF6hW-Co+WQX0keIx~Ge4tPLrd0du zRJNV{tt+AL*V7m76qbF0=V7gOgTJo3|JJRdZ{O_mtZ&E6wtc zWftE8rIyj$4O~6yq#+m8`a;7t+8PE8&67?yQ7d6Lt=xps9bUByD=yri$P5&-HLrCP zfRtN=YtJzASa`bKSXa;P6xUH>rozt}^>xNUSkG9hvenCUt|Nd#-&eVb%)KiAIH%+M zd08WaCPw6PIH2>~Wtx5XPLL8?4}=y-3lx4y+<-|>Jqu9-J7HBIt3_F3dDh=TM)WL`~Q zbJp)fT{=FHx~OZzd;REW-KyQp+WYUcpR+Lb%H>1QelkyVokyFOf9JTq(Mu5tzr6F! z@mj~T%-Yq?mj&JYoJdh1u*7lf;9zma!qS%3uz~7GM z#PLfh$L7+NaQVK!YnCo%kK{2d;At+eP~hQ%kc(+28o+zL+^{^$WXJHeCHv*3@7FV$ zu=g&<+N0&^)fZAM%$1KzMS1i|fBZZLXkCPx`vuVlk%E2q_H_7&Z0s}Wxg_0hsb078 zxkT|s%dA?lm()O#x9srnc}<92YqCPf1zDb&z?)o z*Hb{Znl2#>Q!ScQnvjaTh|*>)`Ln&#zG(jNy5Mtq*BIgA=ezS3_Aa|r$51|8;vw&R zx)Nyf{yinxHg(7Haz=(v$B<%BEc_I55G4E0SH}Td550N|9nC85Q@@t_%KFo6?l8u=CjCI|OpDm|JW55%;Ryzn zpO)w6jVhG-jjcaLY0w^uK6zDWCY!V3I!dzWs20Z+X=v>9#7=L~z(4@9&Y8lERfD=@ zqgRjZG?y%lVp_6K3G1{SwgsR*008%lltxGiq7%4C@v*~xo1(-UVdV{lLD8!=g+Yuo z)Bj{RgO5tXwpoO;YlUT1@*d@_OXu%Kv}vrLLsXGCOn4^*@)L4NMaddJg5nzfj|*TP zzR5;1p0ce`Cc7RV7=kN}mGaTBmS)ktk+5KHl1%e4Hna{!4PmpLg62r54TtT z*FhmP?rqHU3*9Ew>R)n8* zQK@IbilzSZ{{i(t3cv9DQBg`V&K4|QD`F%0rFj}pDCtaDGu2am;T98DSl~YvhVFH8&9DO2iNqF5i*_!f9E0 znM|IV#A5&e2&<|p6YzMPu+7eh@`~~+OY+!w+~|m|E=es^OQZ4y>d0WXm0pw{u`n88 z%$AVl=#+|_tc+>1Z{@0-%z}lfl1m3rm`JY3&Cgv}T0ljkGv1h5B@+@{03bjR006kD zX_#yGIqReUSzgo7FA?(-QoWo&`IRd~AO-*!nR0Gio133kLdKazi;86G9D|thl8`SD zP!#0g5QD(#2$z-{RE8ya%8Rp)%ONm=$SBIuNfo8#g+gU27sgU_Iz^H&Rlv9t0Md~J z&Jp5R;j%4q7}lg}G#T0XCB+&MSDu8=B20i0h0C|dVMMLdXi`-=DW5_Z1ao8i|C%4Y zX*Y^!l0+DW6A*wE>z1}0-t&h){5q7gMbC-HNNTPKnTRnMJ~iCl)Y54SL}-LhwVmxZ zS!e{8EieA*BafU9%8KROP&5h{hNKue<~Viw?C8j3m|`L^5+DEoVi=mFXogC}DK;%v z_uP+uab|Fufgl=t?^`SPEiY4dUnhP8L*QM(VE490+v$B9!k#Za9W z&UX%3BqHvvr=N&G2mshvB0TFPN{g3-``XfqSKL!3IdC^iLl9+bg@=c+TDB@>4Zu8k$G5 z4Ek6+!Lk5gxF)S|`0R@hKlJ<;zH*PxVSDw7XIk8ZK_LYIYBMV5w93xU-E_x>-#z^B z>j%zqby*FsK0au-pR212L|FhK!Q+Yq%#%O+O`Cld5_nHbeS6;+Vo^LEM~IEZ%{^MyY?^w{=&C&Cnj05FJYZ9LU)w0WF<1OU$AdhHX_38|%ed)da-h9u~tB@cf6 zp4Wf#*dLyHnwz&_{o*CJt*Q9R*Z!^Pz>c;Fcd}3zk4B}srP*BTj(w+7Gc&0~EI~75 zB0J z!ZSOb`u!h%!z);u%!EnFg8PcGw+^2)JEF;qamSGs2mv7!*@ioMM@M2L&CqlV$<~(W z+gr~cKh;@SoEwWpSpcHZ7ytl3V#YGn+T1W?jYzmC7AFCjh{mbA?%VK-haWjI9?DFX z-&rMU2`hy`Dkp_Yq^!I>JF)BSlffwat^fM!-yVAO$)}#TNAbB~AWcl{t?5RHVaQm5 zLO$2{*|YU_rzgZ<$<*Z0&S?O^rczOjgHv3%Fh1O=D_n7JndoTssm@-rJ|hhP@TG5k z_1T9XdE&WO%hs){e*O7B{P8!5+}l^F*f(B$e%rZLh5@l?blvUiPQCi#laK#l)PHgK zMPqY4n4rl-JV615j#G?fxa-%CJ!(=`i2@eI zY5tFcaAidlo!UL5e9)+G!7w(y9e8+-2eAJLws{dL@s^J9$k8$Fi(LGDsZ0k zZx^$7+&a|mKd|hJ_X)15@QP{>0Pw;qzw~Z;?5<4wX63)X;Xcz?r^#QGPW^K0uD-^tl=FD4ee0Hr8&@~i zn{zLTZbsGly7HQ>zVYo>4(a)N`T7FiUo8S4=5w5`IlJi22UCR~*w!Do3qC=(HMy8R zpc8zu?Qp@$?j~Y%pmjJJ?t-fc<_rRAv$Gi26ftuKB2sdCk*~==@ZjdAk!r z=$RPkxB18GPmBiV*?vM84g1==2Csb;Aqe5Db?}8(-%8B?fQ1moA~Cz!+}zehUW`My zo^dX*v1$*#L&GZ;cQ8IXX$?$XI59kXg~AX*m%ZCM1VxflW7C(jv)+>mA%slpxg#eU2d^&{LKw79^^Tiq1m6{M z&0@gqwhxa^UzeV9S?g}dMZQdd!LETT&lj#J$uP|L@WhoCgb>10M~|>K|C$CuXly?_ z6?#t|MNyNZQ`csu-IyQ^A%utb9zYO66h3#MH5yBNaBZ$5971F<8>gqHYwKGP6Rxgl zdf(fn|C8*^Ta26A)I$iPo|!36fQw-grA~^)tafKC!Di*>;W!@iI;}nzS1c!D{t(SE z7&0V6K7a^=$UfsxD3mB*b^$dv?s9qpnw-+9{m*o#|L6Da$VG|S!BGpqaZOq#hi<)+bLw=KfYP=by=M{$lSia1!*Wp;<9GBs_P98Z!++UuF@+w!F_L6Ky&qhw2ZLCiHHE+q57RIU@>*U7}G;7C)JP>bxnIh37jjI zMMiei`hN1g2P8Z!;GLN^+eNC(%w#k)VaNHRY(s|IJQ+-|5?P8yf~G8X8u5yY^Kf|a zT}}7fPoE}NW+@_}P$XHcFVxFSQ={H6Dkv@zav%V#(`Ipbypoh05$o&gA75CKIy!Ab zke`>EVK+`k6A8!_Vu0ZbV z(*XcMx7F2K!vpGt^qLN~_aWs%%F+p-+rg~y{ zIEr|AS?Xv1^5mn>{?#`%$rTDDsfN^K!Nk}^db-v)JsqZSy-M)ftJ{A1*pD4{TY}+~ zl;j5-7GE%W@aXA{cioN1n9~(ZdAIePk@FWm=VytTWhyreAT9I*#TjV?772xjGE z*~a??+WdIHr&URYhsQ9!C{?5Mhnb92mESr+N>U;&V=#slmlb&@2c0x8H#1$t=K{da z%vd5Zfa83CB8?Y1S1v4w0|6d$m^~4(RAI=_!T)n%p0^w~O$ME+d;9I-h=$L!TxgN0 zWlo#5{n!qxxIAub_gIX_`&}uL$g3~BCDmzDb!rix9}3uO&bCcY8`HD0!)@Dkk0zO0 z4tWzmtkMSuYn`H!C50&=+iALp7oFz0w^al4Tg;`9PFg%Yt*Y=S^KLXYD`<0h$PEFLhnbsMRn zu4cq#UfNcjpQY$-xiDavK`aQG+Ph5jXlFemOxnNi*ouYO9bG*WBjff!0zr^xNCzOY zXV*I{PBvr7vG+S|PLsrCskW$9|OlN=`GopIaz z5h<75cd%y5`sDzykN@t;)a=Ze@eW&%Lq$B!8Pn^#Ybz_#CMS&tcO6Mm$x?H2Eqxu+ z{%F&Y=gv<_v*Achhso-333){I@tUQ}7D5nx>7^Y)iP&wM8aLbRc6W59r*#@QI*z#r zRrQhT)k}3h|LOC|>3W@lUwgW)urmL(=k_MC?omuzrcZw6@juEnNxcJ80jCK{JSr)QJ>V{N@dR>RcJpnEVx$U;86Lmc+msjq7=JyeaVsc~( z4~|~2i9P3c^s{MYSt&d&0RWnrv0(t6sA=A?y8NxZ2SYJ3D^s~`+kTB!IW^LQq?ziZ zTNbwQe*m|J49X(7aMijMD^~HsronMz@4&QL$+fw{91Z~hDp|H>)v|RDeql{-eckko z4*>uH#BrR%xTUbPNJ!QYM{H@>njSBEC2xGDKzO7d6_(c0N^;6%YhgyTDWY* z$`!yfW{ncdS8lxjOJ7dcr5n<;a#<4T>WL;V-mv9v4oZZ>keG2u8o~<z_&z!6K!7A?JPY4)@w0059DCmBjBL>O4S;f{sng*Y`k($h0K?UqV$ z1i9Iz6%q~}OOWm$dH2?>_ibA0F;DjoO;IEjA^AV}e_wHr^t3gd?-`%y>gXP|1?lMQ zrM71qvQpBs(zCKR-?3FjIy^Id^&KNa6ZS~J0|4;(ynVfG-CccDJQO4$PI~)B#=1MZ z$Lt|G7D&l7tlzv@z!R-nx=fC{S_VeDJG;khK{^)DWEj@0Un7osIBJ7loB54z+%F-0 zb*F2i0D!Q~%_uf*+`MJu663^VUfDv8L;wJ2Y^og_8TPuJp?IRNwZjvLKn$E~?B0Cu zU7I)DR+6RE=ap=_{Z2{L4gdgvQD)_>TDENIlDwX_uHpUxA0+@m8^Q?;LQzWEZMWZ+ zjDtLb((f7fi8erI>%de6Ns;C4h9?&fvtOY;>h0D!MZ7V}Qm^#1a@Wk+h81oF(u@u99cTSWt@ zd8O-1Bn|zhfu3HgD~RYg001L67=-Gy%(WZVh+|%kCOca#aJnoV?cJlcpwD4vaPh|V z>#K^iQAf|YjIou`d?s)JEpUYNq>QB}9*||Xl004-uTDN}Py0yzw)pF9= z6HZ#RVbh&Fj9t4(b*knZ(rlUTY0S({?;q;08pj6*hT~jKr99C!-aaF!5(fsG+WUu$ z-bBbFRcKbPSuPd5=Nu6L91Z~h@Q#g#X{Z#2>-(nryL-&eAWOwQZpZZrz)ibRE{}V7 z??Ll;htW@jW_`=oZ!%|(%pZ$C%C36+Y=14b1ntr;33brX=?wemZ;Cw z(La927d8xbjUgPkY-Rw!`Lnf)?s_0!M!Q_zy~mo@-1Yh7(BupQ000~H*c)Ss73IY< zP3Kf)n~LPb+Pl7xE9W7u2q1LHXQ_3PuBM)mmSY1>>U?8s_M&xK(rSr93;+y=h-Fv= z70LWaC@|2|RNLyD3$I5k%R&Kij&%2rbPXGE48t(Muq-A}3uC?st7*@lA8N6Zk$^WG zjS2M2!~F+_hB`x0S|CZnFu<~iU}oPs-n??_y|VDsxQ}$$ZR~r|GXNpPpo>A0kifl` z=_tcu7(fWZ$aJ%l|Al)uxlC3JBfK_Kgl2_2BAJJ^c6R*wiPz7bt6Ou=y%Na8W=(&4 ztK*(8ejY}{QmK0FZFg3t@S#BJb=ZQD1OR}A$Yn9J7{&qsAr!02mX+r&FUc0l)Bpfw zvNS8FV$1Ct0mDz?BbKkuP{`Kaaqj{(4+`ZFvMfLt23eK?e091)zV`OJD^hq+D8KkX zfEYkb%saXB(D|wjTU8OGjRHVyK#u-FqviC0cMN4qXo{Sp_pMmCs9?cztwt}74D`iP z*Dfjb&bZfCtH>XN3Z}uY|bPcYsZDAAyfU)GyJ4vuGX-sKs;$<0R{j9 z7!Fy60RZqc`QFA;vZAU|uD3ZLSevU$)|G$$-c57@69WKv`2t7Bu*JUTmA_5f~e2v4&WG+se}WagJW$+Iz34eNZ71n`~UJt z?Np2=X@NktcJpmjI-yjp6QD#}TSHy9XKs>|DTx|WWXnBwHT>}pMR(khmXvhSRw6lI zDU@7TqQKW~{hUD|0GzoH)VcV1z|NVGr6Vy`B9zYcU~-C%A;Uf07iwEu3U!)J$i)O{%Od>;hDZC{E`R>SD z(O1px(oMG)s5yO;(IO?W?#}yi6nwxHecV3klK^y+7&-CAtH*2J*n5~nDCC^jv-d5# zW4f(-%5IvpPK{5w!w8|lmeU7L)Ws4ELdZCJ;e}TZAttzg=i3v;;YnxIGTQUzuKi&W z#Y3*z)3tGg5DFdG@!GkLF^km_bQ|Az{j~v0@M3*ob7Rj`A{rU#>qiJ7(zo}G*II^b zF}Ky|3E2iZtPysuVE5T0hiZE#P19t^{noBGI>ud0A~-reIXXTWOHfh!(2#kyuj$k) zukU*3r@x-NWnyGB97}{}M)vMLFlKX@hWn>{af*x&4U8Z}o_Kp_!=N28(XRG}nuZRF zW@EnT-Fx=U1W4ah|MV;wi-ad8j8U)Y&26vsn*$NAYjkvkK?ot#*W6@rIbEJv(lyp= z3?PIMVj51K=;~~-hFPz3#^v?fhw8WQdB^Io+MK?o>f^Rh0wEL$IN#a7Zzd3@W6rmB z?QClA_XMM!>F(FJy=nH52*s=4*>$+SA0e{ke9e@}gAhuDJtyAYKVq4o5$bGdK?sfa zHts%jCP6bS%OZsQ_R$@0?lAe{@yP7RmYrD zeq#TQqm6@zicL>XlL&P*w^0n$*Lh)dcwqON+j^#b2q6|B#D?D4^?JjA4WY=ylsTGU z5JEH=J^9YgwjmQjXr%er;p#I(6K0Y{L(NCuK3*3I`lfA87NM@zR)i2j=Z^0`**b<0YZ@Dhu&B4Ai$Z9${p|juH8Bb~M=zXc>>3%FLJ0LY zoIG^4XLMo|A*TM+J2jn?2r&a44MwZ|?2&zk>Ut4E0hjsc(bG*W?H6lGcsu&XScKZo zoo5k3D0=*ot)`}93_@}Do;P0a7`4w8w-0p~Jt4DkibSZhxs77!zK%xg%*^S7yARj* zBZT@coO$*2oj-Z_*9aloc-OA|N5ctbX0XE=L3G4-_^qAILpH=vUCj*?LI|Oj`X&}3 z#K!uDM&cwx2F$y6?J;{I2%+xAQ(>C5P7JyIF@(@yWFGDfB2>F`n>i9gh;_M~4u_+odyr*fojoH7|4je5or!z)zVTY?kQE^`H;O*P z9PBgBj{1Wgb^GT2b=K{zIlk|v!|xpf&31WNrA{;-9p$ROHXhr~%fEe5uI4(9{F;Gz z=>254>y^Cm%T$yIH#RideV){!wJS@~&~+osKRnguTH1V24R1&gcvmaLP@!;?E0pp% z;5|*>I?(ZG`-KLh+nrjtYIRx0e4?&a;95iE z`X-w1E|<%rRLUX5u0Je4;L!c_;1;l$(9Q9D&_99|^Wkuvq4tTxHRj1D4(|<(Pa{6| z(fHm({#Rq>{>$SQu$XR==kpI?#e6t??6jhPP+LB!4f&+%{SRsV$4GMfH21Wh0U(5cPWWd- zG;@W@5JJb)(4@r$;T1=DSGj{rg~>?J;}5d$uV{X!4j~GK0-m@QRVksapLy$&7yy84 z#^LpOBhmO(6YAn2C>gRjeGGd=_dp1(6N6@l?>ZWOnsIaC_j3nYvzC#zVRJ^B)@rx$ zg;I}cAjXy2Ck7_1ew|houp7;87tP|f@m?1xR3{6AzM1y!5v4kXLojVkO$=Y2Fn1ea zN?HWHy_}MiQK)WHE2Bv&rP4Q&Z#+%$?1%Ctv(c^NcVnLn+{KO_P%X zF@JoZXWE@e)yU4i`V?KhP7$>>bq%Mbr$L$=>g|}N_;RTLKnMXlG1z4dLycTA>oT@= zPbgC~akp*8@12~QQE62;goq`lCMTw+ERtjek4xA`yC&VS6qTF|*v?<*Nmgs?5AW$U z&lcuq&7H;{-nrc#3_}1(isnJu5oPT)Fa7=8Ea7OHh=`>^fkecoBHoUkVWmbF_uA|p z`^+q>l8FJJ+Z)f5f)s3KsAj;DpP%KO=oz*KQd5*}x9J7JI{*M607*naRLeBf<01v5 z-{_4%S(3;#**j?Vr)pJhkIOvNV~g;TDC_et?oBN$Q;2y8(fyq*tU$?&IUf1Z|0dMM zm3ewVhb}ZU1sSngE`kt-oR%4{dt}P4)oL&%+}zk0pv6+;A9aR>Ox)$Wq*bD=p&=nq z$wl~Rf9JS8uGh+acH`)zF#-5VB0hw`Y%zu0ju-y=tg3Jk9x@FXeJYg_$Kovwja+4h zujN<^DG!~0+jg?sM&QsB#787I(;e**ny4Z$JPmhjCv}s%n&fPoI(Kr)CN<}gTAx+08 zMg}LXKCM<2u$#ySpN5+@~b2yC?bg4s)IlZi(kdQ?}wRFf<` zajM#HF?!pha#`*N$j;vq1sJFY%*R|)UH-B+T;zGxeQk}vjVAN;b z{?co-K!Gv7aa#~atQaS4vy@cGGYxgjgpf)mg%CQ&yMFoG$1}kdr$3=Gh>nRf=n)fF;ujxy`3-DF`kK^{q$%2tcs${l#knGeayIK`2EefQ3&De zNW*JQw(>O2;o3ey*k-bizkZ;9MWtrjt49j7O!JH&*1Y%RjF__bhoR8jaby}dOgEq8 zi@0NceB#I}G5vz5(>QCMoK=;^n_p}5NryWcvvRe+{O?~^u3J9b+cnkG?v`dJd%H|1 zRj;`C2}s9KlQ|?zU?@kQ^5WA^X;S31O(QyHvSn5y@eV_!uD-D?D^2q1u9{3O>>l)( zCx^0&i+C8;*WNfV?XpKB0^1VTx2jv-_2K|I#mX7%{v@dSm01`TgAz^Xz+ z!$fIva5&5npQ=8$W@YJfe|{zn=d>o%P*g*f7=67AfGRo zY2V!!)e9n14$q<2c55q_H0*i8&(}|mo4AgyeM4lXI5ui=p4_!xSyDCAu*=EMiUtFP zWecQyy!qfO6Y=Ew)72#l${No1{MYyYQ-Gr#ufCC8T0UC4JEB{nliE}tzrmHr1Qj^?`pN}`DdkuqP|nR%n5!X6pIZV>p(@Wx?K*QwxOnG z(ZU4;4o#*hl7Yj0L#tM2?%da`#!{7eNl6!8S?7R^2 zm|CqcKZV_YxLzXVr)b2#`rhx0H?7sBs0aWcgrhav21xzPXeU>ktdb|qx~E@$>0pr_ zZ?<#d&HIj7`Ha2apCD$s-yVr)8k-IQbxzHpql=an|Lv(4R4UPsgNk+>-8snSs(At) zRdZo%?edCa+g?gpyh6$$P9Hn9?zWZHZ=F;rm|nk_KXtq#tcy8@6A16`=-GVFRxyv$ zS$Ad@Pxkj7Fbc};Er+5!>7E@2R;;e<=^EowZf}_GZm4GUD}w`Pc|y*hgU(M^v9aK! z*~Yld2fAlV4T8qT;R;o7e?OIMJ$-B%qdX>t5UAzJWFj$TbO>NPflJLTJ11iL!MbBn zslFgxLnZvLzq&J7Kn(`?*i>^sTY=&}q=rkZp3*vS#2D;^G3u3N8DsHj*F0001+oSD6RK~^M8 zA3T1`Foc5qWvkY0-MV$%>M9hAL}R2ZDLGk{ zqE@NaZr!TJV_|#4i7xYCcl)Vx&3>12$)+u7DjA?mO(VvZvu8%kmX_8Yp+In==A_>~ zR&%C)XsAD~&@L>@%}kaRtysn5prh4?{r0h%GYvz7y-}IAvM{$SM`4?ZsI@vihX4Sy z_n1Dvb=_ile1s7ylagc{003OGDDTi)dppOB-q{!cARZ2_x^s(OA@c=8RTcS%_wVZ* zopyNw35tq^0vEL+C#{TjSy}1VzW2zw0-a^7x1pogX!Q$(+yyI_OX+AFu>b%vk)Q!j zA`+*h7{X)cYr9P1gz?OPy`!$Cb8uv0!UO^WR-wmM=YNs|e#K4V#F zA@AZC02vhY3_t%{`tkS4T zmoCUAyzN8hPj#Ax`npckG={vMC7W-{&CEJqQZn^Czr&|iJ{bZd~rBw~q5A^?C9sMA&~U3|w zvI?uda^FS(F%b2?xvw@=BLe^s1ff!EAsMe+x1m6<42NTYA!!C4I)2D$9&b2vdcf>p z5a3A_a&97yiHeFU?*Gz#=T9Ed==F=L$_N~bSsG5ZO^gip9X(MO4+klLtJEo63}3zF z_VR@*xZb}0iQ)Ql4O27rqsMC1TJ7RR6&wNs04cI_%Cu@jNqK2i<2*f!D%Ke{WPSRV-e&pfXkF^93hb>XvP;+_n4oLk})+SZ2KA!^tW= z8ytXKzDj4vC^4i;SwAOL9C!YDdE$?6?)(4N<~{!OV<(TE9C4ZW#Ym?Sj@klNKUKiR zAwCzB$9lrpBTxRx+jZpS9Y=orjV%D<5I95t&`dlu8+3cD4nLsd35U(;7<8#pa~Nty z$P-m8UcI1fK}AVfs+jX1kNoP~>wmi7*tAAR5F9}$;F@UcAE(fnKIZ4&`O3}#4jW-1 zj$d(rh(iDX%`j=|^umpIX5leDpS7f9-J2aIF92G zLW-nWgfI>_V)xJlfEa)bO-Qs0D=Y8$+~(z!AaMGX2!R6t07smam4El$w=q$_$Km%S z$P`6t=CV8Ug$!2!cfM5vAV4ev5HJj#B2O*avb9iza4y<+@EiaDAcQcCj71VO4FIl? zaVMN1%Pd;X#~GFd007$Z=Upw2{rm?b$Da4cC;$M&z{KEGiX_O7Tc6wO`^7`wpFH_O zZ)WfcCf?w}0oS z(TRqpac5qB@x7nBFBl4W`r2JA0tm4ek2itCJmVEh8LlQbCAH9yFXzT%(i{Ll^_wry z*?0W!-AT_qy$b*U0OmB!_Tw>dk zkClDw95Da@mS!E68QiK(=0)yMrv_W93m;!sgZ zW=WBfKQz=oI^if=yf|nctnZrGu;s2)LFDk6*38`Eq8z~}8;g(jzf|AtKbT%5wEM29dP3JquB%@(vRz8eHH{P+O_gt;TjyebTn|PWul|+!LSD!t0Oq{=XMNw8L6wWU$1ek=Im>HS00a21ZEjvXn zuyxlr+k-qnFI=-#jr&F>EUYL=m!j9Es+0Mc_@Y*V3@KUH)-ek-85!uWh7~t zDgjGVR;$VBnkiX%&!Tj3cYojbl)G&45(yV7RLNrl{ccY{o|aLVp9KMXc<)Y(FBYq_ zZr{9kyua7!3dmFS85wCQN;yTrlH$zn3$;N;u2F~-N=Z*w9}T(LMFk3}I395yKXfF3 z*`G~SVn$9x-dKu73ZcZ$F|xl^xB!U)3ew2^>F zFDOk<5=CqyqrR9fv*6yXs~e6VcShJ8gFzzXA;gk2v82?{+1WDc#J={`yI3-z(xnM- zgz>f9;CNH_R9a4dd@?j1(@HBTE+4RaYx3HZ0H6g+h_sg1nF0Uw!j_Gdk~jo*Rh>rTxHrI7mFM3;;0K6mzPUK$8&f*wVRn76^kg5_ zP}kOLq`-j?J&WgaCkvm$x7L&cEF^uQZkk2ZN9+5(_z3 zH98!0G_+0KzH#~ct->T?UCs4bE4L_#dAs%OJ9{~KD^{22Z$yQA^oR z7Zb!V4t9$p`R8X$K@7(~2HLz@uo2t$D|danbRDWmnW!$-&>ak)AaR1ANr2(9SYpE9)Y&~)gv(+&~Tmu&-b%7=UJmb zhNfBOy=(Mj(~)lX$eDek@vDn6)6Iw5Y}Z!|Apih#thyFrAM7ah!?BJ(FqwMph0osY zJFZ=t4es4{@`GqIpNiK}{_x&CGzO>y4Xy_W0NDP*OP6^*YTK?Om&8K|f&(Yd41|)! zoa-E0A{&jHExtNR%hkFQv^X)%9eXO~m=44lY*PA=eE?koK z$anv@wX;{8TN&-E!-`f+o_X_ymtP(Z$;x!pkN)GwXWN>GhWd`ZvzJOLwD%l+?(Z)S z1(Fu%+3)}R4;n7Ca19GO_B?*F!zoQ7yn}7ey_!|?PB?}Ew z);IjyKRjDqecTwASLLTdNPhSJ2S#o7;Ynw1D)GeQPoF$_)SQrpTtFe|q!4@vadY6|(HuSF_=s&0h0lU46T=>%jg= zMTN|`<4~VgW^C>^vR=;=G)69KyCkul)AeH=GGcaSHkH!@p?i?pI`#&b00S>ubB4+Q$r9 z=}RyDy|(5|{S;ZQ<=36B&&_@hqv!N>O@J&v;Dt(c6)nMds^9Yxe$vO8-DuB zXU{aWNK&%(>LlM#%@eQfcZ3bBx`M17g`-#8qsA*{%aj&XOKYg~hB1iPp(@*X@ zbiQKU1_=RS-0}3|e>r&Ku$59EYv-en{6@KGeR>kN_uRh6|MKF=Zs(>IhCe^_lecTT zWhrTC8aYG9UirgMx9vO}mu2MZRgk4FoY?*Mmv`0;xxakh@@;P(Qxbt^pML(x1@p=( z<@dk!-<`evoU|gTxA~{PdiG39e|j=_b=!8nzO?<|Q_t=`l~+-8@};M{`bXMFYzr2a zb0OINho4;-b;U7GLB8RaKm1|o!knLd?}A!uGwp2K}N8zUS9J|J}(`XXT~K(~@`}_uTmmpGMpQGAIDRGv4D$$`_hjvLE=F zf(>oD|rvLrFe{}AZKbGCLRREZ?O=Ca#2Ww5~#g+f{oo`mZ_S~HhJdl%@hXDZCNQ9%iV@c+qDHt)235(V| zuyv`3&lB;vZkuz#=6j`VEEEhCFEvKPf3P(h)Oca%Z=G?|*}}`?%$c zhAwnsJSMGZ^VgPhpE}~)urRak;M>~O_kR1!UuxO*``Oe*o7QhxR-Dcv6pPVo?!LF} z*s+zX^G=?#e(O6Aq^HOP0s)|-NSd{=MA|q>Eh)*0g@cVvtv~+xqhsyut2QjY(A29) z5=k=_+_oZ{Cl<^EgbzP--?kl%#p%k0cYL05m=%V?S&Qpy_vfA+*ZukDUu9Y5Or!0Y zXMYu$8Db;`wUnzDhi2t#(uC2h+?;bKPAplo!X1(Q?7@Nq{rKeZmmmDg%PTX}(s56y z=u6q5u0cOXsZ0Ide|)#&)n74X>r^ts54WnecM_|M)!>u+xz*3`iN!VD=uN+=M=Z-C z09ZyK#DWm8G|4b5Kx{PV3t4Q0fX7A|jDuMx`uA>sCCt-s0m~D>1W9o@h$Sh4gW0AB z_rCE;h@<8L#1%k5v4{l}od^YHX$8U=MkFQ@aSA{##*l&FY{)+g`49kL8EiW~$rPq= zLlkzg2@zi?77m7^j_Hx^X-koo7osr4vMh_l$rqc(vP@{!PqC~}2pF2>fxyn!4sG1L z!tS2U(y2mz9|9mrDTBeOS*Ao!oZmMr|F3^be(}Y3V!_$CC~Z!PK+0tk6aZM*=Qw__ zGbJ<28)0P<2@x2z5VO`a=lU6>gB5h4(Hz2j^}Rt#yu+v z1{#ldu=&D>BQ>ua0Dur3i-aSQC|?jBH(F6Lq!MwTGwhGC5U~uyqL{C?^~eY>RzSZ=`>Q)w zmq;VT0ssI8Az&C!Bpjd_01!=sqLQNS&YmY8{o4=z{v;Xlh3z(uSlCl{c$i-vHQV!- zA~G5ZMrbw>@XfelI3bqt0E)wRcj06r!Ln2&5)JyD7B7Vpki$cWK`euK0-oC%rsK0b zk_-m?6w4A^P9)?{P_Zx+5CkMREX5$i0>H$=Bq0`XZff*?hR^Viz)i1469F$PPnS_1 zVP+X87SL$4bjZU^)pwja6$PSo8#i!c9%bpWLbW8EV6%&=inCO+0Ww`BW|DMzDdvxI z)-PKSjFN_;%HnL5-=E0Okh>DX;v98PM_*P^fn3PpsWbIb!WW2@l^TY7hkR3gk<_(| z4Pu%}grYHpIxR^kC@C#~fO%*CVId##WSM0}8L?PYuF)q61u5xiTBXe6jV`Pz1^{qG z{JxfUWvWV@T_%VJqzVPgP{JgIMx#m3&bJQsW>qW@ad;uOTW!d$(jcF-Wc`w2F^?0c zL2k*y;w&8i$m#OsIqJq4lP3za9M3kSTEM2g?Do>M0kjW{TrTGTP~HN|Z_&04NmlU;>3y zASkUY80sDnt951Nv;wQ&>_k)ZV2tq~=#H!~LcU?R^=Q z>&w$+B#rCkTsKl>aBZV5Os5oo+%xDie7bN8SWEx_mZlg;K!$__7cn%36D&=7e5Snz zn*ZlNzlPx$Lna`H2U#i_jq`+J0z(wd5D+jBCon)#3W7RXJ|4SBLyN6fk6NeNzxn+ff$N`1fmi&!Uzm-csz!tA%r-NBbJUt;yi(nLtqF2 zfS5=m$`c4V1Wv{yB!dZs0t~W|a0KJ<`5c^PS%M(Qc!I;_&@|2Aav=a@JWBun>|J+! z9M!eHcV>Iju6DJnl~%pkvL(xw+Koaso3NL~5Kxn38g6Xz#?^UvT z@4c_uHf`6|>G%C1+X38xgqK9$Pk(4nKNf*?%eMj1bI9@pNEG-L4ffk;_=iR zTp$qS34}ZzhT}Yd5JQm&!x@U^33v=io!h%JVZ)=@S^*9rNzp|uFv9?lmCSvpM8NFotq5F!AmaFByIhVcY^974#k3_(&D zh6{xPie>~nEEEdygi4 z3vfhGtVAp#DOx1tGYkVU9*#kdp;*X=97WQI$HVx19?Nii98fG2@Nps(1U!LAzzYR} zJb{467a)cTk(5*_1Bhig#Djq5Fdk$WgbVl+6pRV{OYu)*Fy?@4epTGqEf8(FVV!E{gO*bnOUibIq4HFmeCH%`R@y|H#6PUoiAtp$b z6PUmRCh(Oo5k@C4feB3DD`6sxPGABPn7~)UL>QgG1ST+nuY|8NL+Au1Fo6mD7XTr2 zG1tR*0-lL5I)MpHU;;M}1o0bOIBYzyxj<2p}Gg^Z7i45XZ6zAq>0qI`tEnzyu~RfzRTW!swMLfUj3m z7gL!9c&%&T$K(8A+&YY4F|4AxP}n=ZNsK9!rED9 z4&F++2nZo$Dyo~Vb_jwHa{l2#7wPx+^B{jCFD`r7glLy@L|zANo^3j;&QZtQf0uPy;W2ocfI)lbpPWvv*W z-9@lB+ap3`IOq@3musdFA%Y}=wGFM;l>i}x&XL}u`}chE$;VAb*LZq}@jbzSx2JFD zOAi@B7_xR59mG|u%vd|>%prJLTb2xZKJW7oLdG-PX&SrkWsAICx7lLwDXPUp6~4QHl98*NPafU&gUwZ31qS>a+H7Z_GN3SsWsXK zQmNn?XXM&}^1Q+)2BV7Tf+ojG``1|ix`?XENd09g0P zg$u=Q@+!j!yGQHl8iH4;z5!|9SW{E8j{yJxfmF)>eD;-_xZ6XyL~^S-Unyj4%yaa> z!OPZ$l&`6-+RO5VUrWK)Ym9;~kqEDS9U=q+eqUj6sqi`~+{i=_!gEIs&?0cvf+Y|D zfPh#m!Fm7qNbvsK@6o)Qjt+?J%HLCO`Nyg4Xl<#lZ&1jtnZfU}!cC1WEGEp&omsr| zCxym;L_M5`i-p4L9C&R@Tx{TLKU>n{ziKmqRQlOktRn^Q74%VGXv3OnPdD74xQ=P0 zzoo73X03E{L-_YXFc>BYYCMP1Eq`K~J3a2BHs@qRi(>Y-8E0dInS0<)!LGmkqQiyH zUAg(TrL!PQzWvuffA=@PeRao&(@?vA&2RCNH_kU(R(|W}lHynS-+qp%JRFme(Or17 z#TXyMOrLub17nsAbR{!O@!@duB$gfHIzQY8HgM zF65uuXGW1f-C~$``_40mp02K}hGAE2*AT<;9{%Z5adL#=yxp(-Z?hdvow+2HK>%Xr zmNU=4e>x&A`{$2t`u^#rv_1Xtgg?#pk zEksvoWycV%nevC9Z4cMhTZb%)l$eI&yUFQybY3`wAnp;TJ^REq06^){UHQ#J7$)1g zdEJR4`w-;0gegB-BCYXHnKV`~n6kL=<3r!yKL0O&+IjaQcNU(h6hugttl8Xh>L8Ry zSVydPeE0k1M?VhIgvlpNkC#i8DcSMdx$duf} zCHedBe>M=n1^Oh;+Sk6|;f4K0FMm=R;A#K(n;#r`>30J`9#R_SsL;_~%k-HGB_kCL zowlVvd|Fxh`XNu0g0MyCqI=s$|M=ohUwZO4ls5B;$G&6Gs?5XfX9|tq&Lv;y&0K{p zyiqtfXVIEef4yzqk0d*vEDY;0ApYHx-`V}_Z-zoVN^bbk4<3nE3u(e$alWv=sq?{~ zKgI7k`QEv<$mrznKd|oCzj^ByKfC?V@w!JJ`yLMhYu)h|_Y})?@sB@p*KZ#C<@{9( zP1ex8+gI=T=u?UlIYW~BAOHXszwygsWJWCOUb%T&cgca?Q9r^pcdX3rCgi45Zyd!k z;sU10Q?p81I`svWgLNk?qP2Qu6wAYie&hQC(Nv)a91X_}wG(N-A5t?==mLk<+r`OB)8J&sx0w z&h-i*)>n0C=l=3Be#}e1f8e3D56s!JUak-gbazRTm;Lg=bpU{}V;|+$4k1rt`nD}+ z_wOui>X9ZdeROmB6F+=9ZR+Hiw?Bkk_<-E_zo6!$3w0faS$8RGi+XiRs@>n+Gaye} z@%;^x-+2C2pLbBa^eF%U7j_-qx3{UI*Das%m+#O0<8Pj)G?`ET@?n)!gu-LTckelM zV$b#;|31oA@Wz2MQS_vz9$x)FPrm%%_qX*8IyGRltbIfvP;R^HwqyH0v6@}0fAGwT z$*ONU`h9K4NK2$B3IGTIy0x^;2mp~@eeQT!c(^ln{f3~awl{28p5*$=A;;4{SX$ukDT z@o6GcJ%9T84bzi{yzr?fzO(DE|2y}=--;|9!q^18Dk2yfVwM8@VU z2%3gcGh%D&`<5)s31Ws#3o^pI$k{W}r4h=g2uaJSBPeI(wB&fe0i`Cw*HI5;AgD=F z1&3-alBb`1Y*rHY*6s=(H5%}CzkJm8%;Q_l7E8cn5@gOT-}UFY-}w#C)TT&?t8RAw z<>?>!T>kI;=;5PB@-6kJW_{}^k+nl+(AT!Q|MZ8S`^`Nni4>o*abcQDh)5I>r=)#& z#_S{sZS3ozr7_=o=)22uggbUtOqpybJGno0>GlN~iT$mW0##gc+T`SDabikpZ+oXw zsfdcw3^tZA+H{#x_sB!vD*R~Y^7U&0YuWKh#kM=PB+5M{jgF+utcSn*t)h?LS#all zmbT(1JMZq5QwmF3bEajc;I#+61@^`-XP}%Nxm)!pd>vYavFblX#chzfO_``!C z&lu-(qQqPs<&4i;?CkBy)VmJ$BtQTA?@@j)<+AJ7JodfiarS^{ZmOWxp-iBA67T$V zdIZRuv)bUQ9!;Eqk1=_988LANnMfG$xrWVw90REHYGQyhGBqb7)qrf>;ka4y(bjq2 z`z3F%)u1#V=t=q8@4n-Ax%F`=N-59NU&2hj@4+0{7{(9oDSPpSKaM#@go^k~w)&}0 zyPx{i<89^VO^~nhen24 z?buzLmoY4yF>hhX{(Va}E*TlLdcvY#{q{*>utSwLJuN9ZTB{N8aEIBFGHZ#Yr7?Hj zl+wDfr+#{ORZac+yB=&m^>OCvHB#Dow8He`Cmx+5aup5pN$+pZr2E21yZYH=Bqvo^_kIH=p<@A~_Q3Ry?*QzQ(PZH%Uu` zLL?B3Yqes-Vuu^c%}$6(OcL|)QKvIHb>@#Bnfa4KV;QnjjgqTIJ}iIbPTb08l7JJ|Bq~ z((MhWNQif;T|a+h<(b#s)aR`Nu0fN>-_qEkOH7F|#A|d3g0bHAek(z+A|a1vkzOln zs%sb{I023e#DEDCEMh5|WH=O~lQq@Ud&8Un=kY}VAcAHA$I=dq82|tf=XE)7A=}kH zU>#@~9>XYyse5>|uCz*<5KobmAy(B~*J8JuI9wr;h$E%=@%MIF0e~0;5CZ_PEW>gf z&O;0U9KZnp0GEqNN1w^s-*4CHA~B4m0N@a=Q7Q;ahff$SPi7}6x1pr86Idjvf z**s*iaU6#rR&wUZh|OuUxmZyQJKE+RwG5kVfMtauFgDV1uC&!`84VK@%P@Qapjn1t zNSbCjj!`Hhy2>sz4LJY;h($i9xu&%{L{I=?3L$r)pxEy8vIroK0T9p>gGplw?wuLq3-+z^VB(;dk%fxi@FtVx=ZJNe7$S-N7+mM{TuCmxMSnmvU5qx3{i%*e^pI(kH7@xirKn^%;gS{0sn)rlJaICqe zyuQ=uv-O$Wh@*lokCz}xOsWr?TAjn)P$)qh%NHPmpdrq4j9MuU0ssggT)1-GefNL+ z=RbawvKcFD8$34Suyedp3o8%;GEA@lAGejm9RL87oIPr?*{!2vGz$bGgdr~I8#DH_ zg|J950Dv#U{0@`VS>MtjmI%p!&)D4-!c;;;S&V%{&GqsqEyvIT0iO&8M@G$OiW?a^ zOcMdO(>2)F5ymxAzRYLts&DTiCZ%* zR5*@-TP-320Rj+e_@pFZPDX-`qWIIMBx$sXSt+WHKI@!?iws&NgiwfMDos>!>SR6} zQp8V=U_DL!_KoXTPtD8iDJy{L_!+smagspKXlVBQxk|A_o0u5MWB96Qb94FNh^elB z?B4sfyNu0>_^C6qGWa|!7;u#rl`yizJJv5U7}UMp#-#Mg85zll!>42e zwU4LUx^bmUgh$3}j~*yoy=;cZWs6OW7epq^nlX#>`Q|R3pPi~Xcl;=dnSJM)IT}rr zRIZ(!WoT~g&YZa@RVNc^4fAKucJ{X@lcvp_ni>o-Qzs|WEQ*fNhl1qBEnCO6nw6a% z3NceBr%)svlbJKxRBo7_E0;-JBLmSh7IM86BeZ&MZj#OJ3XF94BJ=KCnZqD1ckwz! zpx@|ZSFYQr6@)8l8fUKCHcc-wj+pexSt^-;CPEQ0$tsyx7o`aYf|I6Z0wA1`mD1f@ zFO17wIeQZ138S@9;XrWm)GQW?Gcyvk8f75FWTYnIxM243750`3^+SQ%Hg6IjE+IY+ z<47QnF+|Cuv{B(8H8nGtV0kN7EE;KVfcl)Z^QQs~*F{GYfna8Krr%=|s0_*o{Uifk zP*9sVH8(CQA|fU+Gf~ysXG%*?OPx9+J(gElSjCFv@d?S%iHULQ$bh3iA|X9W9hzfvyxP`^)1;m7o^8&r21qH zPDR9}3FvT4N@hY7tSPCX#mbD#DG_4aXHI7@$*dWZBp^Uwy5%$C&sQ|5)rOf%=fy>-<-WESG8wZq zYO|MYSi3yXTT|3x+OmDSMu;M0B3zL$DOu}r`zO!H?(H31zjaGsphc08wIDl|7UE`u1PSyqICv@B(Mnr8BpG?UG)h|o^Yo2M0f zFVqdMTfZhkz{z4W)O=Q=h#2W;QYL4JFhEh1Ix0#XsRRIsq>`Y^>;X}^=}`%jG6euv zsUqX!W92eIT|-M&-u$WQi8ux$l;Zxu(McJpX_M1g3Qfz+jfoVub@VM-za>Sd1VEUc zq%JslPMtg{C2P*?G<8c`@BDRJ;*{Kl{9+)By>0Dc0Y_*j&rDUJ^92<%7cDWw$GYt9 z`E#>6I{KI1c1Lzv(wL>&6~YW@*=c&Y_%m81PnkB-SuahVv2gk%ArFIq8}4Zyq%_+% zE=--2R$Xvfm%S)Q6YdViZrd>1?h342xuCDPUXnC(-Qpa}K$p>j-LrM0O7?GG&vpE1 zl!xO8A%+@Kx!3YptKKfEh*z_V|@^YQk(?@%gamz#hqEMqed_x76?ESd{HquY4P z&l?kbVb>+&fA*kjkL5b2;CKn#xQX=mo%{Pk6&Sst4anp&Kr#YfbGZL>Pfou_AK?a^tq~q#y5VpmrGuA`AlA2u^Wy0 zAEgS=r4RHs@WL*D;01W&HF={rA6n=XJ;W#U0nFrf}^+-@p$40fiFGX0uEP z1p*#Ih$Kmbz`(Hi-+>Hz>%}TAwfvXY)%dIiH_`KFuf}gm(=R!qt6kOqZ{=V0mjB;^ ziCQmTE37t~b+`{876HJr8~|v{AO3eBgWh_vif_Kc$jvTRy|wn=B(7Wy`|l$k-nt9@ z=itA2?Ee&Ch_EA$1OQ+FVh~{LM24pcOke^NxFtXg!pn172!OA~slVEUz!w>fUvA3a zvy8OQOSmpi@iVP2)7{W@+F$kH8&7kfF9^Rrj}u*?)z^Y6NPC~r|3(zsYd1hw+U>Ld zehKxi_5V%tCa*t~8@K)fi{V-#zG#GNoVDw_&`qlOITG-7>B3iT{Ca2MzHmCOA^e(- z{m)S8-x0SQMroQx2r(4Na0o!yb@rq4{lS5v-S2*IZ2#FpyEnve4m!<~QsX#at(uHG;~0{{@mhC)G>L*v}cy?gg{_Y6XSg24a_AoO;9>%Iqe zKL4lv%`pr@03bFP3^FVS#(BC;M{Zkp z$F6>*L znj}by1^|3<7sW81kt0XW+PviW7{j3;&9D%{SN`XoKfZGkLio;0Z;pk`Kl{~l5W;cA zXfix*Y5)L0h$M+nD8zCc0DvSy!7vFS`|kUDDT*RVf*=SEfpOCXLtzd9nxTnMFig?_ z0G6f!1V4S`k#VB!$2&jp_=bP<#2+DqG{XV_7&06R6PE)TO;e76&htejJ{r?EfMzdV zP1my(LI41UB7&iDgK(i>fMPfR085jBUhY%9s5XG?I z%RV;!yW^H$>Wj}6OcKZ2on5iLQ)os1!51akWq!|lyCnaz+QF>~>iHnd*)tgt%EIE7J<_spz zTCNKsr-H5k$!g*!O^Oy1ke?VI=QDLwHZ*2T$*T94mKBw(+;%@XSlie$ zBG;v_TRZ~*z~k`*LS9|*nE{7ipPVT%SBMkmDwz7Fmi9a6$C&F23M{M~uqm0@Dmd2C z-sAHUGgq!PR-FzC<<<3-i~C0NQgwsfO?6G}BoHrIv9zV=w39$Hmu?~&jx^C~0f()d zlTh1G)70J@7;LfF#JXGk{tyv@!3M@mzG|9+# z{xfHb!vvj@HQh7NO;KTwk65<#z8EPaTm$FJn?oTgY3lUQNRQd>R*8|7r%qPOefE(c z%bPKOxv9M+UW*z%`mK4`u?k}A+MI!orrO$wkr|-0ycLsb)~s4_*T#(3_Ll$bp812F zEj6`+F|quP!c%rW+^}g?Z_R~4XFwO9F)KGm!~>NlPoyonZR(T+OI<;^*{|1XX}gJ$ z>R09JsvBzh%wv;dBf1+a+l?baSyY-%DHIAw*YLTrYQ&e!oHetdxI`qzP0lextUAQ0 zmQIT)s;cLBlH8ejE#+l=0rdE&={f1Or3I;Zv!j(lQ&)9SU5`*@SUy!#*2g{l^Lc>r zwzSlwcjSic!-x0ojZDwYHSo`t)IgzZdhYC`7&U;ww_biLWm1YJd0M81%CGDoX_PZ7 zPZzD@S{z{p4&$)UB7;yuGm2!Hz@=F0NU5l zTBFZSrCjFY2lk8f8FMot&zDqjxM=FMnHh;X0EjoAe?1}1ph}&_xQvJMt5}{mQWwc% ziHf2N-T*UiQC?k1fj(%oi{6+KKef8ZYXM`qh_KeB3 z6(v@$-;k0QCv;Y{3`*1qn^t7K^V)|ohNzhA1(|Z+@xms%*PoU?>GB2MJ7CV5xnSPH zCHBrTdzc@oR-0bt3#sgVg&5yt0Z&^6F}zNSO0id(&8 zwusOFI+o}Bo8i_nJOKcdq^Z&Bu4(J7J9pIU9rKP34S3kxyy=PQlXwEfZFg@jIl3DF z00hc7L+XkROG}O&FgKU=x=i^kR;9PDs1x0}es;lyVv=S!mT}nK^H$&Ht~=8o#sW@f zz|mJw(`oH)A)|6vEMGBmYJ68i%c$Gyba|uW6ZASQ06>wDot2iXRY_Cxmdw?f_vCk+ zJhm^$f?d!5#XQbzhCD&o_=g>za2PB&btnWS=`$8DnwFW8oeKc)j`W698Mm#R*HnCF z)Ef+u>}cDmvvnr-7&UXr`n06fyi^@PzWkDgthuXZPcoRgD{YKn)53%g_n-5O^eWTl z-~oF;piW6h%1V#%xV*lh>Jv4?_THvpm*46l*4)0i{P6w&>2IoS8FhLP;s8KiA`qf@ zGDO;4KJS?0LjHxW-oZ(8R_4lv&NMm!060t8U4CD{oqsmJv)4Rh(F&fWlc!Dh+XnTM z7A={~+qLH$3=Wm|+p5bhbe=sSNJs$yBqhb?EM9ft!(G{{w?_B}nukon_<6pzA^<>A zLR{ATrE(l4Wajc%zt>dx`yHQf5EPs~)G_D)0L-478ylPKvJBabU1PG$Iq4DA<&8GG zQ>0H%OGug=8v%gp&G+^OSblHSp~J;pQmHI||7#_E9u6_F0WbjvTIQ8<@6mZI)=Dc95C5aIr=q0|1=fe_-y$yV?HA5ouy(Qo(5!VZmMwLgTqy$ zL3ZWR*|0Z0_ z$j2W?mB3!SdeltVN5ost5ppW5k#|d!@wH)9niSMr{F~tER4| zx2?@9nY3=*`Y9<1YMB6#T_2qp+Olh!dG5ey?X22ma;>gK4Nghw`xvGd!O~woja2kZ=5+L zk-PZrfdBvt7B7s`$!m&ERdl*R$TMuQ*#|ltg2efAQU}f9MBwi5_^mo`C zV-RA8KHM?nEdt!8)v0OYNhSNZ-c;;G*aSUZC}kxnVbAOIY|aGpL^ zFOx(>NiWJ|IaaL9RFfl4v6g2nW8-FtI0DJkB2^S(F6Oflio_Bb#8|*M8|&@L+t)2u zOGN;{#FRK5&SS#l!p(PY+qBwNbJPlPkx&RPP6I+oq&ixyFz9t;D6ERoFI=|f(MRqR zUp|FwP!^xPddcF=n>XuKA^;KKI38aB000n1D5LlS2^O?fcbaC*TfSs^I!)3ljY=iw zkEb;Oh@~;1MyWC=(7>o)9HCYiqQicQClKgkBPDzRgb*PZ8f|y;lQ%A#%Lf4BI0Qhg zRfz-wrI^nb%I^98qcKEpt;r7n00{AM!G%*N4Y^C#tz0HYv{<87N%$(YnjvWbK;h}r zF*%FYuUaMtv{<9kMMemCy!b>t;0q!mB4XmADS|UZ^9M}gSYF`$X8+nu`M8OB0#PVL z#ArkjA~8T50ND854sjgL7xFMHJ|#{m72_x5|QxHt8Zn7f&XH7{ma8iK%f4 zNyN5C9*v`owIgE}*AB9TFe+*BoLQUh{!Vs61c#8@8D4eU`V}kJEt@x89;H@_cuGZ7 zRCJU;!1K6*t2eG&zGB_Vg}E|~N-5?kBO@7-!f-wgApn4+7=45wf-gXyS#!uCAi#Ml zgF&rPiurt(GqifshSjS#ESjA)-T)V?050U?!qbNir_NuyYVkY?WH1~@0I1_*_y7O^ z&K^CIJa_f#CG#bSmg=IEVmu-;k_d)HGO0uwrNl1Q%t0LF<5+|tE>f+KibXDGaMgyj zOP8%#vvl_Oesz3oq(qG4(C-gNC+Z@#u`-MksWp0)JVvKw2m-@+IEDcLaGpROA;JKT zd0Ni(z%3isCTW!{%O$473Hkhs-y1lR5hx`h5l05xoJboXHbiR!J|ZewE#wK6VjhDa zpK_G7+ZQfdy&x-@rWg#v0DuW8u{b8;vCOokYwo@Kc2C{GUh)REf&g$~ddtHX?A!C*)mr%*>~1&F=N*C0I6{%FpMGOK^90`B`B8+7LfPiKBE7ooJ z_5<6aBfff;oPSH)+T18Y04Or4p7Ob?a&i(>K&ahc!9&y6WnNCJq7|0?N}});cuqc99xQR$9^Lnf@0Jd_ zS)U(b7z;qU!ujUudVr~xWU60z{;6NRePPMsm5$o?9)9eV`ybpio)il}hya!%8{K)f ztH1Wx{<0Ro(~V&`gaAT_0KhPe;kZ3-JXh3DrK-gMKq+6&gM=YH;lzh;?Ad=R%onp4 zvkQUo3`)rv38y}J>yuAUhIt|uL4***AmGbpq#E|W`-exLIrR7w_t8ihr={0SiwG&R z$0LX|HM8oSKg_xR{%3yh$jO25q}Uk7-71L70{}=Dc4O;XyQ>enF|Ww3M|D zn-BnNH?Ms12al8!>P(I7@`ufI<=9J~7Kwy>002c2-~P!H=U@HP8z1fSgateR0Klxx zCx8BnKSd=Z%$z&r(BEG^bfPGXi^jt+hFy%sX_FHVzq{k$@e3hbh`_}a@{_Ztga$i) z`^#VShR00>Qk4GJ_7@BJJb(aAlJ`FPSjpdCc=g>6YyrV|3y47k08P>N{oww0e){7- z{&|Ok74oq08#fdxl%qWjEq(m}03zUh`PV9EIH3H)R1PD+h`Msb0@TKql@YP*=Ihp#Cm;P*_AprcD zQx`a9>xFf4)?9KSbTOrwb5-tPQg{`whCrj9eH0pf1ozU}=#{$gKo zmjwGSogBT@<@YyQCVn0I%@s}QaIom~k*v-4Mc;fdzb=2`W|nMs9DjEx>;AQgf~y{X z6AP7ZM9sQFLj(XITxInglcvp&l3`an;#%E(j#Tp5ey>G+Dg5M(q^*x83O`2xxIHuGYTNCZG3^tEmVe@cj9uBfoy)JJ-<=+${a)`h9)QZH8(ubfIVsunxJzTh`9I zQeg2%FGp?tNv8PATJM%PKv(E@L;Y_`%yl5p-I@Vy#B{uUjxXent8HK7l|e6#i2=#hlsd zjMZ!ZL-;C)9vHSKCB*(q`vd?2)KXg+<|}9CWL`BKdaT1dO}w1{P21-i1JgfXOGz?( z(`tM(_-k`>!0%=Y8=ip83u5jK5i28ux#Q zo83CD8b<#=u$caJr{fzU1^%PAe`dcIW&ejb_cz4n{d{*<>HM4L8Gp0*Zy*2F@%2;& zMTnzm=Bvx$IF@1AukQgFu`J87+?N~Dr2`SeFt;KEQ51b$!H8iP?kfzDr78AnvJk^C z9LFI55XX@ug#aK)`m2lm(m;r#C>n7Hp?{c>V`%1!_D2XIj^h}Hxfbz;VHoZvtUP`= z$I_utkY>2cTfUt7Bt?xYb`v5H%d#BzrJVC>xM{CI9LEv_c>^60$Fdwl)3@rVUsovj z_rh1K40;j%vC)FU>YF(JiY=f2=^N^(=^noP{(BR=z3T&ZcXjj`P1o=AvcS)Y9UH3d z7#$a4v6!4L?@gPA`rzZ^*J;Uw19hcEt{Vlb>ktat&g^R+yM{r(AmK)aYObrX+H3#- zuXFgNKfmc`*`046xwfhQ=@ml}8)|OrHTLue1NIO0UNqyFsi)uZxf)pr0g|Lz>+6au zYl0!-%7Fubic2a3fzS=D3?U4A%?0`A4({J~JipNH3x9>@EV8<`)j8@I88UtDYv3i4 z?&llBrlzLBAuG7)$)orpIjO>sp6x-Xw$S z?EZsBv#Dpmo|3FRbMQ!0OIt&)O&5XApFCaD<;aR0RE4%Q~z6-28DnS>q@9%H64_Jp>L_&P@SWo@Cd-6wp zL~Oi4h(nqR6(0MvsJuZOo8oCWd$P83#5@`kt2y$)`vW%nu*sR66npOY!P>@pQW7T# zTh5<7Q&!%n%gF4?Kak&HNlHiv^%OSvG@ij`R}eGTm(bBM-Sy2qO{JzFU3B;$gOJfW zrT~Fao{nface=i-*J#p3>m?$-rK5c3Cr8HI4)efZbzMis^z6ZwiqmJ$IFLG7uL1xS zojlss+11$IJ9*mFfyVNaXU>k0(qu*Wba6B3wT^LuNV#M@V(x$cJ<)XBp~ zD%-7DnfjulI@;M))MD1)&Xa`|!&YBfY61q~nNRn|P0g~63|a=ds;g@o>g(J{9&n6^ zMf}q8=FG`S#^#EUKv|uCqPDS~k{I{_)7jH!F8dXN5JFUZ{9t8c2Z4A4eSI3O&fi_w z8c_L+HK)&=b0GCt!-@0lHjCMroM;g6@qpJ+aPmk=S%WGyGu&Tu@N|(Yj2ZM=2+0Gl z{JGmLP{$i$)r#YX4$5Twb0<#MHni!|r*N+BJ$v_CDT(#m8y`2Ylk`xb)t8+f1c0D#JvE62SWY!L zye-GO14@lPZvLV4XNmoNyLRnI`s786XSWnxXl!nFQu4g1G2?H8 z0000G%U3O1JcscNzWLk^USihb`SThMzIwE}-Hl0alU5I+*XAp%vLgf<4{jQjd9+*SrX*f`SR<5 z$ka7!*O%;l( znv@hxgUAI7XL6pthNdoCkT$nf0Ye@hbXlz?0DvSaG1;IOiB#Eh7S4zme(z{QNAJM$ zE%(*#-#PxIP9tH?>;(%Fi5K5E*3sR&__jNHj_fpJYH!=gPcF2`rLs#abA0_F{^FcW zxlBHL{)(yb?1yLDmn>eEqVVk5eZu6&=P#OZ@>Jc7jKqiS`Za*X!}&bG0J?fGD=_aD&6qS2yU! zGID3-WT&0}^iy0U7Vx>U@_GO``*8QkgGc?UJ7+i!vvDdyv5$(PEWuO5JC_nP033WS&mnl%1#^v z(P^oPS_lyYyh&M8bu#I&)d2vgE-$k>+^kSLKiYGkbhzaBp{XnGQ1LiJoFOhX-Depp zIDLwaj9<2FdHw#ks*FylI&n^<^+3590HA`73+?u?<|Ca!jVwaFVClkwefwyfC*Wg! zef?wpP}tN|*>0|@sa>??fwoh-E#9Hy1zkD0Q{+!}=|*$!Q7kaY@N>I;~!(*Bd0@;`>SI;XNPhJr$s7!?ZaY@{;$w z__u@Q9RL7?P_#j()#`Z+g)j&q;5dXqD3Xc|N%3--Osk2K3jrsQ#Kh?1v!}R6hTA%8 z-`nxrfWuEvKob|0K7Ib?1zCq*eQ{rL3%K-_vEi}*P4lp0F%J#mDi))C8GG zfH)MPk5sEQ5pvPch|drcrPIf2^~&X|)ri0s!E&Nd}E3Ru!o*_F0pY zVsyF~2^@10K%^npDmE;KN72=H)Cj5anpk_bz+oOj6n1IfTS>tmz1Jc z%lMu!5vkWjD%CQj)My^4Jhl6!7k6MvU4L`!dw>7L<_m-fN+OrV#c44J_?qdQy+xo< z0Z(Hna*hP!Fq|h4N@QZ8(xB7ow2?9)O|uw;7>>s!$121U#Bm4!o=_$g2_v+T`e%7$N3_e0uK%t+jqS5@|ikow2B7+$i3^^HG4lC8l^H~z7@;k8jY&%*~sMVOU~%oJzt6fCB({EXEJs-qmZi`+}jZKl}yPc>4AC4g|s!0GM2% z5KE=_CH@CrEQpHM#_CjlKWX!Z(h{{ZvNKf*xmX^-!{DehXo%J7qhnPfI=~a@qN8GT zO23Z;0L0E*?CPld_(1da&C?2w?muv{G#vJi&-G#$1|j4)z#+D=zUZwN{_3It5>I~o z{<%A!{abbC@PF7U{aa-*Apn%qRU^HM%t*>7iAi2FKRryz5X41dxrRqJwKkus?N5r) z&R?+h_B(D@D|OJ*T+zpDT%Jb*2ml)CZ!iWT*3O$0KynphJ73W_WbH_mCG0*OQf01!%~Xl$&nx4-yE@siuttz5EZ@v03eiK&qiTq2ctM|vBF+;@L> zD`EEp>_(%>0{}R?>ot_Qc=gg5495$Yx(U8Shy%Vrfa5%wR006Nc!GH|ld7uPS}M*o zwma%-szmYAmuBglL9VsBiUj}wzPGchwYS&pB(~qT`qatNwx)8YY{s-m*x6NoX!pSd zE7v1{=H%q0WiP#F`|VN;5)fOyVS@l-LIeaNF$REGA{~EHN}e^XXkX!~EsH~*VRhD$ z%+v%P&G5w%xl9CDqWav)?lFPfFn`Okyba427!s0Czx%20l)=(9^AMhYxmx>O|88l5`zF>7$%bI(jsshPl!Q9TEy6ilgH(g zQ!pHp%B27Rk%-R#)wTx~Y`AO7!}l-Ot0e#cGGH0kichl$aYuI_Y%`C=M@E_I%8P58 zx>}5P-LWM-d+B}mY?0!82G9#uub1)#0uBj8V*JvgiTPgmBk(3VsUnt=5cmMz#0~{3yQXB>`$QQ?GR0|fa+q~s=jY_BD z0RS-4I@-}cSaiH%!?sO0B8$sP8-n_DY_xj}Wu%CQOtz--ViEuVuB@WV-#la-Zm2D7qvGYZ zh5;gS?c9t2jme~95ysfrsCk)*o3`CQJ5`5^6#xLhGfa&f@hDQqOvAaWHZICk`NAT; zfRFJNdfZc1(@@=Io|}_BY1*>;?%5*e3tH;Rzvx%Y$c~RIH{Wx&K_!txvazN4bgeNX zL5B#cwxZxqJ9bMVB6tu8MIsEt06@X8Cu82K*r-S`fTus%mAHIkx*>{XSO5W!FN}%T zT6=qIi;oRZkwQL?&*wp&P%7ljnwon0Wd5r=cT-}8*Vsn!CG%#cl$O-D)D;hbgh`PC z4978^NGu#*=`GJvj`k@g8!&2Zt;ef+q9YYcmu^^l+h)Bs zK^AU5TIJZheldn)|5;J=(uas!0_8T1xJZP!k-oOt)_&7KUw|YmRtI8(rIxS5ogG4Glf}h zaLCMYoPA`#?i*{ZEwAe~A%s|lsIMpy=XZm#Mv_79j`Zj;eNBfry9+t4vEJcJPP zjt&-A)DaYm5K~oB*fTVWf&=@H*N%^9xVNRQ&1f3z^Am*C=0qX)@TdA(*HE0hagxn*Y=L^e%ETV(%%8GKA*WNd1_l%l@^hI|H z`)pQs&^k0k&@{^sLnAgi=xXoj?d}^yi1oVcqZYFxKzYnY4~g6kXCN5l5Mmj6WT3O9 z%Sh1-<{?eUO(#} z9dZN_q8n?fyFvnS8}+n z=+p7P`l7x0CqMlvCGBpF()QV7$A4Xm>3AbXDf-N6_M6t>v&HN#)hWANdXFIq1`~<+ z@Uk9PmHdC~y?1si*1c!WoS8Z2eD0Lz znI}+ii30!tAOJ~3K~(gm;B(fu^&sGk(P>cz#bB9yKEGP68YRZu2=0)h7d_-kgE0aa zJ*wE{78@xmECjqft5MP;_zn(t*BkVLy}D%vZTd%W@w@VFg01Zmj?M^^0f1Oj*P5M~ zGCa-j`v_xNAdci%i$**!EMGLzT^OwhaCLo0X|IN+*0hwQYt?In!h}|dMsECToj&kf zUC$N!v&YxvUVI%Hjeg3|*K@*Ba4Ruwy_lv8*K=#HN;CZ9bg)atU%0at9^%^rx22cM zl-}BD@>~&M8hbHK7p~_)9Xs&aGy-wr_PjI?rVsAPg|44B@AA0+m0h;fRM}5e&pE6!-tN9CdUA{g1uW07d0cv`|fZ5XW!lf6?K&# zz4Niv4+w-)2euz8Z9yP4Up%}2)CIRMh^4^U)5mu2+Slg}AOsf#-s3z#O>On@T^|<|HzS1l8cW~%ct@;#Ra6{Z)MX<{ z8VwdS!QI{6-Q6{~yIbS#4#6FQySuwP1b26s{{C6>Fc0%Ky?XUSRjsb7Tet2#cb~oY zK>|SNIXGa(+M~0LhF}qYaub5rS5+4e`CPo4o~_vY zWz+h|}$<+2Ee%F}iiJVUR zLr1!_n9qh8h;NeV7aDOl2{~OUNF%C^twF6si-~QZ2hL=KYeObR~)iGc@sO$u5CXKA0Ib7F(8*8 zmb$2zl1ZG-S2inHFfPI-b>0T2d>bs@<2Tx3+Safki=>6##mGSJj=jx(`L1e}mp%J6 zUGAQyf129l93A>no zlsUuokpQ;OxXUG_CR#pM4$CKh&XhQ-_v7F-({Xqka4*c+oKte?85b)jVZa(CprF%@ z=7O1qSW+p(Mf>U#Sw)cxwUY_2a?17rn5#K_&MUiIYBY|j*&8}mGEwdA=WhSboE2}c z100?G@i7|oFLuWh!)G0>WhOQ!S4G*rQXrvuU5C}-y*~I(C5_H=Jksbk^vtahT)m}F zxTZ22z#|4vq$QwQN=r#lQu7FJ^Q%-+ zHs|zK!7{nJ*-^l0_(BvXr`>QTv+eVEtRX09<@s65_r3T_Ifep|!NFPDX})D|$aCBU z0>IB$RA4+LGT!2;G*W}gU8v1#J2_}f-W0*C@2ssYD|r^+o|bGAqMF~aygdH0_C2da z_ySSSZM`2o^>E-geUUPXqSL*C%Tq8Xroy1>!+}#EU0K6B%3(Xm}Ib+7HKNeY*2IN-K_@ zAasniZ)PfOTWWE2^NxGGrt$s(?C_C*Pt6sDVpVG4<|h%bt^_2s_(Gz_`p2! zuPyk1gMg3aX5$~T!5O{qkGyHW<+aHI!^3=I)&GUo-s=ZMaXS73_AFnZW4VN zSU89+_;S`5e~{hjVf!)4g}`Y%pr~1ZPVmouRW6gWMSqWo?0d2ufEr&<@A6oQZ1lM? z>GVQzMb6vjpL!wNS-B=V@;_(+AWOahU~s91N+opk(rt(Y~<6U$$f?s#{0H z;umuQBp?yJP1}s$m_z9Tbqa;>ANa48y5*+t2Z#jRkq-4vcOD|YSMs=_w;eULI62>b zj%Kk9Ev(G19nO=P4jk`KAjs6%$I;MK@^;0>XN|42&d*3#eEmCpdw%(Ga!TjT!bqzy zc+cX(uCDq!oW3Pk`%H>aDkh}flW^$1Yn+yZPwE}t_ z4H?(O=~2i0yex%`yT%Bbpg>MrVc|$0gX6&@>ylb3&u&Gem9g~?LZ(E4kWi7jfwZi+ z-4pA>A8{9(s>Msy(?bOV7C1OK+7K3#>np!lOd<(ZFKazIyeuw$j;^iEubw9@lfXHe zLwj#z{f>}(h@f7C-D-&+Nwj@7nGbeJalX?)uy1F}y+?gT3S7 zVXG&X=IX@g6{rGQ$lI|=7c5G5s@0d{!YIPjhcwT zsw@W`(x8Y5=HPM3M9Dh|b>to_;1Ztt$lrIZ*0bk1e%1%fIbaDPjG0ldJ=M_q3Zcdb z$t4QsKK)Y=*EQ!mkwbKw$@zNG_OWhHzV$MDR&$k&v%nydGRk4|UlWECijPYzc zCU}YFnr4vxcHYuPbVWGVt!YIL%%V@($6DZx^bn*o5n=rJNWTe%MPZ;J4Fr+EBN-3` zBVe2e-bxA`rvT~CpNjPV+S$vz%4PAA2;y({DGI?rHINhl-mjj)Haw&=K-y4Z@>lB@ zw=w`h_Kv6~iBB(Eju`HhGbRpr42#3l=1X9)0?e zEZ8!}#{VX4`uJn_NF>k-DJm+&Mejgb2^niREST_L`=V?S#GV4ucJa6g^Z(o2+|OJ^ zBQ})rypNfgpu8H#*iS@?LjXEDhaAL&GE`44G6(#@!U_rw<{IEkY?0+L3M0D0u9RezA_9XO~G#?-$ek$`{G&JN0HM1jupETKo? zc&?z>hPwO>D}MumS{Tr&saKo;8BYHS!w5ZSYN{^vf7aDiF648&(pAyvkFGhxX$eB#xDO^@esM*M7Mf5Z>s>t; zBd{i-VTeT4Ti$H@jA9Z%zhw&@IylZ6Q&YL?u*!zV$i+szQ3;6*kWMJF`Dm8uGIBkf z)#M|Gg-Is2^zhsjf5V_-NzdCO4=&y8kZE(8J4+O95hQ8SIZ>XJoL8JkDn`8AjObHT zNxtQRrPOKMJOVYBDT#%{A)Y!WXS|*3kW){V9CwwXMd_U5b={*E$Bd0;IX_j~vMnr8 zpgOQi_0?43ZKr0gW?iZ-psBKW?)6=LSbMJF;1JF_nuy2K%VG~3*9rjs9#($R9OnnJ zT2@a~&A)u!t+t`NdR8kLOiPKFhEvj^3#hAtg0oMw1X35JWsRpLpa}|;O9c%CsxP3$ z1--3HZB#w3cZ@LmTHp=?7cUNQJqO}+yb2Bizso(SYeFTf3VnEomz|SDS-(!X^4ggm ze7^4}fjUB9CuukT@(T8Gw!%&*F18kOp!I@{s>=z;<(lX zhm}e}-XOf|wr41B!H;6m7{wyvCt>-BZY+UPNt@hdBfaFfE4c8YU`&q;6coSJZo77Poio$lSn_q z4L)EnzCQwz?g|Ap8x0-THoO}%kd;ukICM(-$m00eifY5X#A|c+=XQU6WaRJ_JvKj1 z2fZYvuk9g&ul&#PWR;`%`1pi`ctV8L+!VO4?CAr6YgaDVS zsmz!v7|GTDS3fi&XU!ywo=1K_Em=ukCN-s3sW2U?@?`DZ&4?YitEiC1%7I(M=%{0Y z1a)p}ad%{tPlyG!tHX6#4)PyX1`>3q#*ZPRGl;?lDWZskJwCWJjon>SViBoPQb>{} zC=|`NkJo1oxbiTN>G&o@K_dZ-C!;u=pDJd6Dk-bv>DJ|)b~je{nJf`1_7RtoOY#-c zx%fH?y;1Z@2aoFU+_-Yxd$(WN(==TM7=$TUM92A!jfnx0Ve?747E49@!2`mz6@;XV zB?^{?(yOz#WWRn7w9?!XCi>X&OG`!$p%u@V3E4uSzmjpNw!#YLj>{_YAXoFuFq6rQr4VpDl{ZvT`H)pZ;Sc^O%~ zvgN7a^e`&($XS_YS4a)@zj7w3qvRjZ7MtlJ9gTl+2l%PWcqyi@;iMF>P1hxls#Ivk zIC=0%B6!9m zf^+&oZF>B06e6`@%$G7D$SDXK)Mh`y+-)e`rkJ^-`&77ESdDJFVdHxI@b)DV3iz)L z@Nhlg`rxCORS9#M_>2{ig7~mKo4VzjXjO{CRVpa_z_as)4y25vJ(^CuyeIuIy`)*{O4ODNEEs;$tml5X(8~1 z38*D=lNtyJ^lFG9L=*y(;n0Hq5+hi^4Pp|&>L0P?a=-Yt(o+5QE!OMB6pmCY7T##* z%x1SAJ-z?#Q$S8Ep~n4&7K9{d^ccY~2!}o%79E|P{wkbmQKTcz1&YSIr!5@UZF@6AQ@OWt0B!ha7%J~Hx_tf96*G_uoPu>%P_#nt= z-C{j>1ST#mE@VMOskLLc!T|DUHx$9))eUWB^?8d%A`mCngqn`4y2q6}w{Fb$TzwOb zk%2N!-04tTVnOkn6*=@Im^@;jcJ)9ok|5CCdLx=&yrFAY>rTWji02a{nm9aJ*Hu3D z>WBykLOML`FMT*6T&G;u#_BlX5dbzcG$5!brvIk?Wi6ZYS$6otXvFB0Tfwfi@8k#S014PHQp7$Ylkk{hk2A8WVX9#tvp8N4wkrWUD8W9&9 z1k3=Yb?j>=Ngx3-VPtaI$WIC~y5!*~B**GK$bjvMA7qw8%Txe32wQ8DG$~;~_o%VA zHOW5BCh{xbT%XTX|_7_wkIc{rqR7NxV1h35iw z|Mrqg`P%x7+T1qwo|^p4vmBl+JYlV!Tr;gr6*zbs1-ncK>({8KXJmX4;0G$86|x15 zpgH_rJ_Qly9_(t+Rjz-GxF8#emd3B@&CPk!tu0Bu1uYhY}6S# zxk;%8D$NSf>3CiYXV`Y$5BYlie*E&4&JS=Fw8j%gC1n1XRjD190R*i6?SD!Qo%wdW zjG0uguZ!&l0f@(_qUF7Vi9Gogw9e~WJb<3B203hQD`(%q#H7F@$O+BsnUhjn%Q&l! zUE|Q8Sk1t;1n?Wh#28puYOV5Z-BT6Z4Gh@ga!D6>hucVGjmZC-d#Y|SHWMK;M5!gK z+_d1NPEEUIR!jtv%$R_x>qzkxZSj-C!?8JcjOvN= zzp8OrdoczJNeX{5hJY175ar4zpr>aY=K*eht>@CYLma}}rBF;|>|a1`z?FdgN_r9) zrUV=ej5T&X4y`KPn-|-j6}}*@&b0Lzu0Tv9iC)Ym(DuBgV)=<8$`*;VYF!Q3>xT;s*bT2L=@G zQ)j(YZoS{6A!yw&eY+9m9}8d&(JsX-w*t;E2QhT&s3O9!rDRa$W9|jPVIaO2)zsK8 zR%oD!7{JF5Ki)Zw!Q1(9Zd_yDuO*CB#VC9 zEus<49diH7=dde+WmHAb^>|2cGp%lE``kl{lhUsL=j4vie+bDRps=vFlh16`ZS>gu zOGkC6Vp-hMR4ZjJB`bkPx!WSz$BKbk8>v2UklcN(&vZYivzki_e@Y|SP#KYiPs&o6 zF&#>uL(N+WWB6V(2_8V})k$-FA!f8ZMx{ovGWOA>N4wT|o-b1BK@H;vWdXJp0suEu zJuX_0b8~?TK#6##6;*J83Om~<5n(H&NiOZ6ie)mj2P$`DS3*l-!Z(REDJJn&0m^Zc<=j`{vdpX0#8!asDfzv z5=HVgYMqpra1Ys{b$l-$6JtLZNohEELsd99uq2an$tk%B1q&5tRzvMNR7d0iB~5iL z3y_aingL%qlk;g7j3PCJ7%wPO#EK|2hQT&i%G>0!!oe8c6{TkGgRArc zfb11z%f$EkI^UE@7#St=XRb20EEgIc-vYE zOLeMPBrkAfi*~$qH;r7~vuL7zNq)JzTaMaEuk`iiq8=w6b;53u*U<*1lXDC_HflS- zNUkoaXf2g7hzzHGq)S1@h{VNFxeHj)YY{n}{J~dky7y@Bq-_)H{Y%VaW3Opt*qog= z?c4|$Of4c$5KTid$>gK*P_VEnp4h+n!bUfto0gP{X29H(G%*>Lk4Z^5`$wM+#|(bg z<=dMNEv2N~h_QW*Xh$-ZePw6kVoFky`@{{Bjg;tJX;;|6BdXUY6ffEEJ=+A2+&^f| zK`=Av4PszfsNDcMuwC0H$|sN503fZfm+n0XNyk8q05I&9qe|T4a2144-HOpK!T;J} z62iMzKf{B#4|!hLy<07)#Bo7hxt&lOwOGa~S!|?cqkemQ$~WP=%@8w2DH)y^sj*Nj zM@E~eh|xkQCIjgzOnVv$`FV8fL9IUZayWy9i-D45wVsuT zRI$2fXvr*p*2M8t**SqN!#qPpX7N7>4#&L&rbsu}9^JLwD7j!PWZXP?W)YRf`#W_V zG(jBnf^TjFgC#*Df0GfM5e;Qldt&-s!t8GG+qO`vVDdDQ1=0FuSFf(Z9S;}$AAl_Z zg%rXw@MF{Pf#i~Rt?8Pp+=}WhtyT~5CbfTt#2}{r#xEuReTlPLomJG!O8*NV?Bvz~ zaY0AN=T=qq9?e0~i*%S5CbhYs#F_8Lb0v@+SC_8~zvst?gvMX2lvl1w00SaeU*9}Z zUW%rNk*^@+HH`}>N}-;L35}VggKS>P5Z4|y#Q5v9^dzo+>_VF`e0};@JhDb0znP9N0=1uR84ZtMbaAuswC+Z% z>z(9BWV-;y0i;N=6wca9JO;H66W_@LoC|*{wYZ;2FAG0&K3v2g<`8kek;JI3!#90o zBWU&BKQJ+8u9`BFT8wb9#IW4t2h|%O5{Y=?LdY;eS*><-2y_t}w-iL9ZD{1L<6K?a z>CQ_{j{Gr{`Jvfu7RT`qsGlzqW9iQ|fd1G-dPXpQv_v|u(jN~EfD%Zpb~*Y94*Fnw zw-rEN zu_o?TRe~=Np%4@X%0+IEuNfmMM8d=pim@2_`Vp};q~Nr<`puUwdAV#bs)YS0XrLaAjBIwh&~qw@Q&@kH5CuYmxn)mQY3aSudjU`03rM zDo`m_nvee0i>plISsgWw?yugt$+%Zq+o<+W(;Nq9O<-u(Tj`?lJ$*S&lO+`FrgIPo z>fCY!7Y0&~3_4ROuTxV1K9Cm>dLWSmQ;NC7C`Y>|=iZJafFK_mQ*(a5wN`38 zwD}~pg&Y^kY>f=`@}3<*(#L?Hh|G_cHa&Ou$G6cv?JUU=vT1wJn+vK-i?H-^W~u^!&JEdLL+KXjV)n ztiYUH@UevijSrItf)G}K{mL*Q4?r1;K=~S+yEG*ysi;tEDdLzu0`09UfJQ7`+Hmq` zi3l=(jsct)TyNgTP1zVEZ%F+v?q>{3;%U-P!#|9--7X+ot*Gs77LK1K+lyegHcBq2 z-}rjk=HYu?%EZL7c~tkY^OuEZlUzaG7I7GBi!Yk3VmvyJ!aZ;MX+OGl9aASJ|Foau zGjHIyz3|YLi}Hu)T>ROS++%WjZ^L(5xd>J-d)$jABzUPGULPC-hAub9@j0b!lKHF~Q?_GQ@L#XA4 zF9B?9vJJ!|T3R~s%w-aO8@N|){mJM{%kO4cvT)G7NH$tnUjS)>&qq9t5d0`4Xl$N8 z_|1e^1^UO-{sj=jw09dZ^YK|i_z~|&qlF=b=0UfD>hFZRQOJ4{a2$~Zzuw<1|FwDX zCy~I#Z8Dr7J)GIfw6&0v)=9$#O9=DG)8kLktvt+pY_J=iA>v@!sT-H=HspiAAr}N9 zebs6G8AXLeBz;Bd0^ar0Z|bA{L)%?;MA0oFpk;5Dx+w zlIbfX!_HjX8gt4;(72n4sRWBfiNz@mI2q1&=TU8-h+$?O9Fiziy3BSz@T*gZC=epb zm$5yX*AS>-Nn0WA`75<4&Sl@7D7#n8RRVC0-0`7g16u@z+U;N>Vs zs~pc@s^C$aNgc$tp{1NTI6Y7Zyx9$y$IRD+5SE6Sg9k&{VSY#fI5YBq$#Wz~-fqm9 zNJ?&xqX$_b5=J@-N;-SH`CMA4Ii7acxjG4BoY#7ywJ$aRgi}xdPHGIhfeWa zVR7*m%8TGwQuR#IhA@#ssVHhgZyy<4$kT+uIw?Fv!3RHkXbzn_jRlD*Q;nMYA>2Pmr|orlswm z>9NJ9>9V&2ZWfj3j=6O+)fKu|#&Df690>)w$FL^$n=7XuQdxDiUX9_GA$#no-<2+DWoZ4Zm@g+F!Qgy#<>u_SbM0uKFI0^0d(v zckP5a3o*9uoh)u(IW;<@8d&^Mg_o(sSpNS<=Il&8MJx;;2*JYBCE4n!~LXe zWPiRBfNJVz1?;FHxq!jE@qyXLRRYhmE2$^s4BUa;<;OcJ*7=0i<9_?{wQV*&G!>kj zr6HjvS8vV+p{HpZkEX5p5s>>a%GsxBZ@Vg{>@~HT=iN_Iw9%y5x+RW;G}2zUzdlux z2mlzXwYIhfmwW<&^DD|2rm(={gSW)g-N7pGH>k9xFA)vu&-lvi+jU%XWl>{Kc6@eW zOmt*;c&%zHNmp0?Qe2#s{2XETQ$HdUz9?2sW)VxN79Gp{{FomCldy2`+Ju0@jYo%S zu3E7)0nXLN=J+3jZEFc}x}S(*N4#YV7HL+bHc^}<8T%6lyfL;qx}#UTrCXbGdk}#r zkL*wNXeX{+yw6W_mg+6Ch5WJ+Dh1|BZuK|8hCkUW(Qz3dQUa4_c(Q0in&@b0$Y^9u zFCIpZ|A^`D8WNg?lOLaVhw|PFi`ueXN$bpER=61mrQl1BG46%14qW|47LlIYvneUR zNxNIju4%ed^|z8?BucHJ+xeq%+?$x%J6I)KPDLxtRw4<^wO->DFr#**$i^^X{9T{# z(P934lSG+xQWo*z)d@CMwIRT^oKe2)FddhYp_0uk8= zxXzF?=XuIPh(j?_LWDx$kpRN>h$E5xKsC^Q44u2=ewekvm_8gJq(L)$Hb87}7S4-U zRCWtA((0*ma5S-vGwCXh2vCC>+*2L;Y(l{TS4B5BH*jiBxoJ=a!szVYLrY7`+#^1} zF)S}NF0QAxKmGt#aFBS1^Ztc{;u5!dxgFnI&-{I^{16m<N|Pqgm)KfcPmGNv*qAldBcX|? zsHz4V-;GkZcm>Ukuw%vlz&&^Mp`Tb*dd(+k8$8A|;*Tc=gKUL`g)#+UqLxkR>FFGf z2hui;O%S=B$hm6O`4K9MNfCr%@tkE%HG5VaPj(e9;{q>s zCACKP$PtXI4zHlIu(^=r*!g7iff2rAY-u83qIJ;g^8I3TT3UHJ}hr zd;D-niIdOxqGJI)QBZ9EYo!ZYxjdFrdU^J({qq?CNOiGmQf{(mj(;J8c_!^di<&-(VF)E>GY!O-10$1fZ^Yi}lHY5{LR%ylsn;kGP zY+ge^x-O5`{xJ^I1P#`SeE}$-kw~D3C?pbx7YP7cd3^XwP7OzTjD})zIOe7oW#-`f z=$XIxktds&k7y{)5C5f37QEQrmH*+Qa`Ao}jXEUvtGZ?W$muRgl@%hi0i!$Xpx)L$TEf*_g`m#!it$0Q=I25SU}t$VM+u z6lw2E^F>d@T|~(!f90gtPq2d&gd{?s(2EuX9;4A-aG}7YOEeL#aclIhP?62k+YmH$ zG%+)_UU~Y#ThoE|>$iUWA5*eQ!QS`eBo>15=T+N%*ye^agJH* zzKvYldUY;!(RmqDKic(XkgNPu9=VUto0WAPM^amvbru_{D-J*Iu}o#x-a1T)(D~S< zra}qfH#CU!&7*bi9Kzjd-7XjNgF!1Rx0KNrRzL0*bT*$)vLVY^1!h*24oV-Tzw z{UMVB;#XHbc7Ju$q*)cKz}K~8>iJ$!kOG_fPM$^meC~~iwyU5wq{p3T&_}8Z}#+JxrocST%H+mA+Di8^CK^U|^ zEWLbuTVAf`+{rU@#2D;UI6lLw*~rW$hH|A2rst8MtB!>`qIyW2L76Z z*7$#I*{lo!3+tK&F2aLkWc{F>*mBn6sAxg6VCCY(&!-udM;htxp~_<4z5)Uzgcu?v zi+`GE2O{UIx6^-(;zbr#njcwh+z`1}ZQ3eO==>OF{2>A%UZY`u!<(a7jhh;YeQX@A zLr<5U_D{m07mbOdLqPzEI8w8G5|6GzQhX|An*Qh17mjJg6TVyC)805vR0$R!^aimx%FR(a7s$8Yww)v zUDke3MvWa;SX%9K;F6m(Q&6)Ih@!a*2pa4lM;?`uSEB+#d^$oSqkFb>Y2cKM)Qp9h z&>#WfMF^q|kww$w-lBz~Shz*1f7RTJ@L~Nk3$;9cU1l|l6QOOp0p2Fr@KS#mAiWMj zE2}q?I_;Wy%cLpdq8BNQP&n+_kdcasiYWXG_;_09`q*2ry}ti8weSd$Opg!GKf^dW z=aUz-RqvD5{d$L{r=y^=FrD7D&&AP`fI+jq-TdJYjMDiTgvWhdh``CwH>w^kXl{QJ za2v!8nvy}_a(Pgc^3Ll1>(COJD{o-G|Lf5zoY4YFWK2EzH`tKXn0oCKlc>KIUW5rg zg3>bma@|QSRrNxl-|PI@R9#If2LSlPoX&|oVc~uD5`}}?Vw(^RDN6bcph{XyL7Xt6 zk(_G|I|Co&_gg*KAjx8&hNxI|Wqy7CusO1x7@jZ>GYQg5 zd-}qGfLbE6sWW#ZHM7lr!;k?94O##R`i3=nBGu?nLG9PKsR2yKfPZk|S*)M_*sqrl zDTz(#UG1EaKc%M&0sN;F1r4-cE(qPwC6m|%* z-;*(m4BT{Pk?FN{WLy;=o_OA@;Z5_YK@C!-rluyUYz-!+#vwQj5y^*-F00a_EQ8C2 zH3bC)AVy_uLCv$RQQ!#OIe=CN)jgPf-xBx^fQzMv3?e0%VlrD^5%U?O5k!gTV- zRLkCnTP3{FG})9rE80G_#_4g{Iodo&-LA~neA#NIv`Eo>1xwhu3_@v68Dl3eH#cG7 zREc~B&}oCKReRm;d{Di}SnUCgL2JZ&YsHV2okOaO-2{gVbxbAor8bKR%0O8m2>r;m zwzdTemce*XoMvg_80NTH-w&_yl_WMcwH`*;ECpL;VKFi6J|Y>|`BOC00nn*T(bX_{ z&PK0AUN3?stb)N#oCOE!2`JdEZNuK)Ug;fe1ABg6dw3)a$NF6dt#DCQ%ECfge2bd4 zY7PCY@f%&E`)K+`W+>{9@#Oun!-7E~Xws;Yi)V9Y5eUDfQ^z(gL&KL8hHsHlRj}3p z78abfb*RCZpGr_Y#X=+Uro{usqw)(2lmhSxu_Xu*E0;pxvstZIp@}k(bg~QM+mo3{oUyYA zJY}nX>KN^Rq(|fiW;jQ?&}RSPaq8+xP*+w)15@)_e+I?Q`|6bORgel|hAgJ&ciY!| z8b{g><70eJXMrcEzkk2kA0u=7W(r(ueE-M|LH`bm^XF#TsRTs~TIJ%x4I{>l?8Uhz1h%naURKt|x;jU~K(t7E zX=!QS8l={f7y*htOr?|1q;kTqygEk4PVYP9qFl@~_85Xdzr2#v)YRzcXbHA13}^xt z7H5asOt6)&lU^wak7yElr8Q&QcNO(hx-b7=HrJsM#^gCk_8#Ccuyu|Z%3>!GKe2Fj zo&|vZPA*HEQ?M&~Z(TC^+CL#e5i`1qM;ww(ROw{XKxr(!iHtCe;PmV3K;r#q@q=o* zwxsxfpVSjYB-%ivhIg;2Kt7rYi6tKsXK9;&hted4!&oDCQOrR|!C?%vu1|rz9M}5x zYdUv2>rgzo&AVF9)qJ^`!Oo_^g&0EwLK3%T(VX!}#d`8LCTzrrqBU?#4 zbC5^oM;Ytm#%*6BqsKpj=Vkp!|M2LTaNH;6-C!0V1I0>RQ7Z&6;VYOPNl@TAy@;XT z>P1x-#TXoblQG|!Z6ePI>N>|qT?eJf4nLI^vP~ZkQq|ru2D@3H41PO~LivrDOLJ76 zEDlNyXKkAss~nb}3;lv5dLk06EhHAJ7Rey!)}I-|kD%>cUuD*nF`&$byd(PGB~pYM zK5cePs8Qrb7E!il!nRQAM!fO5Ty7rB)GLAfE7mFgJr-zogqsh@?i&VpyeGm&617S_r z1v$7uovR+sMneCF^l24-0vd;f(WAmR6HMuy3`ZiUjbbvA5=ldY(JL&m;mlh*5hd+Z z+C^quG7?Aw;?PKx-#>u_a(<`IZVsqK{*j|FsKLYJ2Bfv;Ruc*3hp{!>28#dPkO0W3 zu45_*+nU(O{eOdJfxzS6*2N@Lw3%k)2DSekqoKaR`(>=`NB?vdy*ZemI!^78sS9IN z7zzHv+5ZlJ(Fbh5K_KII!zcug&9J#g!#TX|I~mV}(ffpgS*fIcfIr&_j|)am&45f_a^}Qlq)kjxR@Tq2U9(!I zrTvRr%XF~JJZvA2Blh>v$@s3zk$&TY(;7?=@Bob!1<&YA2?I};pX@kD-Kz@TReuLD zF`|-Y3<4H*?wO3OM4JhQ5#>Nw0>hGbY&kiflRQ#jW#`L|n6n&rrx#(1jB^%H39zyg zM(-#9Z25^Om9t^c@YM~%$YO4=;^HEkY5T{Ph0GKtS zXlpxHEl&iqszk8?_1>PB%1dGN9r#kxptYZ%*n#5&`hws6I`02Yc*zF+7y$77+Snuy zC}}@Pw7-Dgv-7Fz^u?y{DT88Vt{9JQ8=G*Z*lVwlMl$|}>xygVVraLjQA0w5r!_F0DIQbbzv^^T$m+2sm&A8HSZ*^Zrs%@5Vy9NdY?b!{kP`aikxF z#eySpqORVUA&$5Ko%-MX*HFT+Fl;#Bew_v!#PoxR?Md~FL?kA9jYSy@0Qb1B0mz0Y z5tDD1r=KOKclg3lr0DwMXX9g1F?2*oKbdYR~c%T5+qgOXxr1 zuHf9yfBg&z6gxjV&EY$Mq9&9j_4Asho3K)wmyhJ=@fC7i86%axlHjWxC=F&~PF+iW zrs=uoo>cRv52n#iESz6hI61w|9&_;!#9ln;iXbc)@FRqWHi}HKYBw4goZgzf`cW{= zhIz~ITy6+RIKO}~`k!k%#u&-P6O{|`$IL+)1dT_b0HJ$9;P(xzi9r3YB@XBxD3S9@ zVz=Ix_gqn=Q|wrbZNPnU+KjQumMta@Ec=Qr>+Cd*WX9YZh`^9`Rsqhz{Wn}d47%+N zA|#~ZXgCqVgA)@Vte$^mxHIy-^5CZXzt7>%k1q`*%!dY3)d~JT?+mpcJ5oVLt3sAH z*d`xzt50+@OUJ1c{VeTs?9RuuvY@ZuHPZVfD(n7BhEvi~I+P%79c72P zsy${&t1VaV>?meIJV&(oqM-h@prNk;mWf8v(~^M~YXCDOZy|LpeXZ4#0U&4;TqGcl z=3YD&_#bWTyyL=e`_{dKwvCG1Py*<%yN%ckmV*`IlSO{g8iM4f@%o8^am1D_93y>m zbRv;pp90&vTX;Ha`Hn}qv|o-Ox(hb z224|1Gy>?Sy~j;XU8ifWo*kZVa&Sav&^|%19y&ZB(dfY+E?S%(9xt#{*_SnUtMAM9 z*LL?4<$6AfR#<>bXFg&5W4hbCzkajHxgQUT zSmLhnni6Zcuy5*YyO}N(wQ(~MVz=@R;rm?ggApq4XUkspoY7GFTkfe$A`FnX+ZOjb z6th66xBXP8USg|S#PkWv&eoOa1^BU_f~$K@b`NjVoSyN@{UOfJ=C$L6^m`e-0o&$3 zoi2EMRDUl2c%eF~U*=v94YN~Q$-U9l(<`Q8*Tmxg7wD3qk{9g5k>t&j)3J7ecX~qd z>RSI&O;vtc(FcFL98HIg3VFoaRQIK@tKFSrV&${ucDZURXKw3t7lp|6Y}w%KUc02k z_kd4tOx`2lZva=$R3(m$ZSkgOE#z%~ zea^LNLhp&M`tvwRP0ymV>uGb1Y;N!KIE$}+N_5C((4j$rrJj*BJ`>@Ox zl1!_+shN-}+${UvhO}AP0Mo} zqWo2D{M+ke(K1LzHFQF&k^cPt(R5v>7h2zlqy3(eX^^=jt`KzdOg`9^&7%6 z`?JY5XimQ6luj$d9ZKAl`wCQ6zMa3P!Z}w_`0QA35%qlbs)I$hjUVwfT3F~)t*+0Efy1;8uvPK1KVgnJ9HjsE3%5hxsYY13w_8`wnD;&X zN*dRhlL1m6Eql0An{P&WLkHd$10ko;mtH#c{RI;vY%iLIL>`Ep9b3|tXfLK+H%CEo zpYp565t%GxTAOb@26T1W2HH7u4u(VibtE%zU3YS>{U2v!pF>A|ti1PcyNSTb(=to5 zqta@2Wy{5z&BT4MzX&rFAlmoIH-whsfVP9^+r4vfh0d>`i{;LVf@C}%g||E3j%3+3 zFq<+(R<l@FY$!F&J^)VKKPxk1X ze&aW{{rs3M*WGQOkPflg!7)30*N^yzc&1G0MT?q3VY8CZ7L6Xs*V+2PU%uRy0*pd8 zUEH6A@3tMP>pN;B6P_2>uLzW@3#Kz|ue>i$a|aK!eVG#(b!joYFY8p(a-XN=oVP1% zpFY#$RK72B7#}x-*_Rz&Te(UqEu}?WT}|KSls^uN6W%bIewFHXCwo7-$}B2{$YPLG zyPb@k-hLJR+r+e&jbm+QGp-$5s5rdeYStmWe`4ckA5RP`>#0|l^l{Mj;Teq1j%Z4) zeqZVPI$0RV#i1J4@b6+t*ZrvOe2Al(3ZEc6&n;&Swck>;de!dog|{w0cUy3f~Srdrq^xASe6diO}>3y*Bjq1U6VPfm)^ERvPr1gEgd?@?R-T&bN@cDGy z-?FW_4JNk!+gUf`JlynkKaP9cdQ)mj`Phunv)%f1;hMrk!T8)R4GNiRs?uoSrts92 zOF5sx=t}-E0Lkxdj#VA=xfA1az7i{H&5of zXbE%7=Ph{os+)8F_9}8_`T0Jv`4Ie4c2ck~#n)&%%QD<~H%=f~$UiTJzC*t&)2rPr%^$j4GC~LIQAm>!i8z++GDQRAR^_ zKMr?&=Hux;9bM9Oe%x}G)~O^cC^YA<4RL7eenBbhoD=gjeSb9URQ@Ic9eYeuK?r7dS&p%Mp zd+vF^H3>mPUxD1L#q~U|c~4%IJg-m&Txqt=Ub;CP&knddE>$5qW|mTMFC|>v;&I#8 z|C!$Xqx-Z;<)~!Hg+t4_Y(m%mbni^@M%Fgvk#=?1^&TaR@E!1Ft+BY$_ld9bQ*UEv z)3k1px5Yduz{JbDFlu-G)BBzzsN*g$Vl?ODNCmYvi_cj#r*0>Mj_=fE1Wzk_RlmVV z>7e}cV*|Rdt+`~CPQRFuu>iyl!U7`?QVYYw#h5D$f1Btq%?*Z}np!tGxvE)2yn^%M{+5>*IyquM%?& zk4v@AcGfkkN2x!}pC2KNH%s2{0~m)H6<-c1qbMj!Pwc?<2G^(OubZ_H_)f2KP0?J8W||hOEAbYW)Tk3HSrA>i#n&zG0$>k( zXs{odA`rlyW4RP^Ih;4QA%LqOUT7##WJrvQgbS%J5g$TQ&YAvE+i<7%aY>c?CgT5i zo%j<5NF4WD7#@&_c?age#;mPi$P~@W448swkKmS=e zJ^b<&%8**s`%HU-I(f`D-&mA&*vurkvPXP6e9=>CkT|Qr>Xemm%SoQ=q-2s zyrum7Yk%08zTuIZXC(n35yo*0MRB}TEhYdc1`z^?NX*VE)}%{z=NC*%%fx$6GhPoN z67xvFNrJ-shdy|MaYJBCDS1?{!vSe<1%_%lujk5R1`TnH)mx%yC5O|$lfq4mxKm}?gfcLP1S}SH*L;%aNG$|H&{j>lGmysX{A`;iAvHkCD zCXCUf-Gx+wN-f54LM9bqAn<}9*GdQk2*bn@k?>_S!wDo)00ubi@rWcc009$y6$g;p z(*N1^qoL6;6c2s$|jwu8yG5KQG(0|YR?KI4r%QrK zu|8Za77+vv0IYz5qT|A&qnoRHc^>nc`}2-h&RsB9Qa8ZLNU=sOA}L;iNkd}YeQlY+ zWMR@w0|o#ok)j5PJfZDEfm0neCr77IY6h&% z0FBgQLoxsWNR8E1wb~<9)UmQQnPDb|p`zotOps_w#>A-5L2>ZR`_}bp3WkAa!_H@S@c;AvKwNdbvoWQAuTjT1)^gPESpl5UX|Z zxXI+#%SAe^8c4ZOEs+K$+49d+dleJr&DVGW03aqIx^1BN*pY*LOwL4|s79j!06b)N zit3$%2lI`=5y9aG?ohc97b3+#r`L&$nGbI02ndfsia@o=A&?iB7jfb0ns&#u80o=N zWi+mmNy(FE^40N*khlzD(1aPLKeVAEATkcbnt_H&vnXKR@75^ zfJ|ecN4h%&YSxOS1FReXX69t>EvWJKHOb=VBpDTAsZ;=v88gE1oqP5SL{6JO)p+3W z(R^NzB~6@U6XOUY0}WbIAydiZO4eU^zL*x2$&)AA#F)YmjNyQ5v;^Xe$&)8fN^NWH zPzOiy=j&KqNL+-0a!HOJKIn_co}?v*bQ%yT0(DXVzzI^VR!c;*AjU8p(;Ex`0QwnI z4CRN9=5t6f_oh{Q3W|zG#1dnaPNOD8A^<=LjSTdiIJBRQ%uZ8@>UEl_Gg5Y*s5&{^ zDM?wDofOj0RN2{h0ZYhMs|_N~uZc=XOiCJVaxhY{S}6y>!$SiRL8{c+kU# z4Cyo)B^4@>V9J0%34q?9lZ9s|%D0?2?lcW?2txp%G6Yf>N=Q$S4AwT*4HBeOsUR?^ zHb^6xId{sL-29q`t~H!|N|fZ_sWKW@ut=PhofQDCK6ya65v#sXI#^sCoVhSPZjDPI zO(vg=qZ{jLQ>JG8xHGw<8=7s8y{Sh4rrvH&Bnu5TA^@wY*Ndt2YLaGnxlD@TI0C_G z9dXjQQVcSc+CE~Y1R^xp=yzIqu?lfC;#r=QOL4BRz4_3gqf=LJoRJVb_HW-}8dL;@ z_|1K8K^hjM2M_>|-)$dtcoo_JwM;zF(}~Hn!3M3*IWjQfiHMFG3mvq3)Z!zw65j5i z)W)FFH~-f(?}^1BgkG<+S{*u_n)W&d%+AoTP?A9X-Cd+Iz!;zw01!|2^bE+=I;Bd1 zXlJj<77`IH6CnWbJ4Z(SxJDt9iFgN%Yvf|{K(`>(8ntQ!0wCnJk62t>WO$IzVZ&8g zoO1OJjs%5AOAzbvGh&Qq2&s(VogPL(3cUlvf#FdSjB|Twl>~Fpm`aM7heo6dnPt=& z6&-;D0U<IE^Bn7^D8zF-DVGx9c6n54l>mTv ze^>XQAv8iECTv4}ZlnxQiFghq5-~v#9*ZgW@PV)ytER?XaV=NK8V`r@J^ z+H22$_W53l7jAv*uW4!u$y9=8v~R>68XD;L(4>TvN=fUeQ>#(Y9vS-MB(n%Eu8BF^;Z$>fe700wBcteY{9Qj#u)lE7!FBQhAqaGJY$J)2YTW z;abkTyc1rf+kB^&9oJ~w@m)Huv6r{z6=eiL06}0Fh9Jclf-8%$3{BCD07xd2VQ4(X zuB#hf)Y0qq2ndNtvFOVUg{y&~{1nUKI3W>}<2DWL_cI&^2$RXAB^dgrD#e{xi6tFnZ;&h3li2T}hq0VV)&i_1N;)Id_*{zp9*Z zZMZrq^IJ^UFXc;KDg0{w_}*6r*Ea13!L@Cd zTHv*vb{UoRiVDA_l9zkn`t-k^w)oNDhQcU92({GK`zVU%xSEQyqZHz;?NuGtZ`k%g z2qC_rvO(be)io_+G`ryeGevtEn>)XeXF1eVIp7fxLI`o^N-71;*U;G3+12H8dx!gn zFWp;02=R=k;LPdXVVm%Ev19y5huw80(+vrN%W3QE8n_yz5An3c>gI2R?}!lcy1gEc zPe6!cJQdZAmkLJ+ATWr3e=8KJcr2_@pJv{0g_tsETRlj%qr~IbIh5^r)w**0e5t9Xd zy^|o0GF#l&Ih+wf{?X3H4$JrELxcq0Usc`wEd(Ng_jo)*?akfRaS6%@AyiXd&X0{2 zpJnfX<8GS$Hi{#}(4L0IjS5 zD~n#%zgti3tG8eDyjH2ADC@D~=hP~tLLq(qZ!cZeB;D;@ZO!cgI`x%J)!);7@AO%i4&!qSbZ^yx)0Gr^wdv&es4BZqTU&fer+#|{c`t|=9P4gTiv$=@7#az)K~Iu;5o1T!pS2=XU>-OIj>gc!0z2+t~qn; zlt@BKMEI44T~A$z{oiBM5Kp=q$-^3QgjVzwzfIfIs@^&;IrCj(`5??x!FBD;}2q z_#^ii)$+=tpE?W~AHV+b-#>VH?+ee)xc9-5-CG*!I#&Jut^QpvtbF{>pTG0TeGhC@ zN{EV6yAGbN8RUZh_2REZ2)Twkw(maB+toR3!*9iAhcVLh`fDFk-qEnBw@=oOezEVk zUy=0uuXA4d=c%V}kNdb$6W_M^q!Cc>p;6(nKmE=qg0AzqTS~fh+=wV(#f+&kGe9?=~ z9DMkNSN3h*HgD1L$UyO1fBEA8Ey`HD4i%jp8jkj$l|#L~#kqz0WH|cHU(X2q9rxYa zd3Jm4Fr!i#@3{9qqZEoRl$Dryqe(aa&U;>c^wHnH{Nw{S|8m;g88O+bAsKe4G82yJ&mwG+??Z19DSugsszar;A z`&%y`^?-DUHN5uBCIC3Q@3W%10nT0@u;95EU%`dO9wKns|7=M8?Jxfl5fe0V-7ho5 zO|Nb_sSb>~@7}e)+xUxw*)vj7qbiEZ`na%n|8nakLkfM>+o#pSKo`)uY<-g(1@ zk$q-nQgV>fC0;N)I{$RB*Tb*A^X{UP$J9YF&3is>|H3ItTevue-=A0PaC>fk;7MEA z?$Xwg^X*OqAkdz+rdq2$-tzb7d;EkhI6BKH`s`dy+KlB7t)1O)A@5*b!H64v`S>G; z-hO4!C(OI$7ovi9_PayX-T`$`XnRfH@BaSlx-$o#8LpqX?m_wa&7*T3v*x}&g6qt* z_Lbi*-Mhm13OY?T)Va+@AHFa zY6l_eg}ag~np={^87ag|HB{taQ&qP0CA8$@6cIyZ_A8T zE1bQhZT^S_Q6n$xGW}-b+}f7G$|Fq`C2X-Zs>iMfuhk@<7e z3yPZN&Y1>MT|;@@ru)})42z%t)$II6p>F@{$?F~o@C^%cbwo&@K)Z$a=bv0( z+wLyj^KQ(F`{EV2!#P5T1L6`B0(DZAF(x%8G(0?nV_fCc9Xey+f)(qRg`4+u1kOy* z=s1ftd~vk1GI8S{QX~$kim0gRUXn9q$igPX1&2mQDJ5c7EGs^EFig)obRoU{)RO6O zG^S10S;#R5vyK>MJhUS6%}>wA1`={H8M^T9yOzza&HY#L2$q&O zd2$3-(86b>hK+T5uc^MQLr6@C-FWXkMLRdoTfP)g1BXin|L2j1ChD9gTLs$QK4;l2 zZKw7}X3z2Z6u-S|%CRP_{=n-g>mJd#O{7j)(dd5hg{OSO{gIPr)}KDPVD;SM!p5Ar z8DsMKFME5HMKOCqBvVRX+c_$E?){j`lKBQm0G~=Zcz{g_+5~35M*O zf4Ol@$)0!I@{m>Q?p?RQ_{<9j!;I30A9<{^rfl|t92_TYPHt{IwYw$cmES*%`vxk` zRmQA(_})e7z`F`A)XiJA@s1T){f(!4MYErMbmhle@)PBb=nYTCsf4N17lw?M4aH_k zIQi30{cOjs^UWGu?At8Q273`^JCvN&Yu<1&$kA9?7}$NFo^ zW-Od1Vy$P&+t%FiKz5+3!W)^W;i4wZs6KII^?kn>X=%xxH&dnxNs#qb`ch`ZtN+sh z@P^@bdtBB&5V)~F5rCh$(Kq!100aaJjRiK{)F}O6LyIaf7*m8vJw5$qHz^hq1db4B z$AG5O3MR+!!X2B>{w^@+3YUQaKFhqT6m$35Q*9wn}^K(jiaQ2`R6+NOap$N6d?c*aDoRvO*4Fal(DhCi)Q^8U_KTF z1<23r-96-?EH)bt03fg|i-~|^DC*0v0P;L*9_aHiEI|N6F$e*}upI5hWy-$F;s%og z0I9`_o}uAcD;FGk_KCzrtJ@mNItCrx-TgcV+R&8V_PWr(0Fpo~O%)ZK@p&D6!``v# zc$VR5_x5+*6sajU9z-%;uh&!b#q0W%8SNdNv9ap?XPSG;8^l`T_=Pr|U>${+NEu7{ zS>zqeYsWLgNC2+Cw|~UqDA@K!+{~rUVS7Zh(c^ZxeEth34$;y;>&VFHP|ML4JTqKE zU|7-KFXFS8bk=lEni5(+=#_ZA5vgH^_nw@PnI!_i)e+vV3&TB)98U5a>-YHqfEQSc zX~0XjsxHloc5Upx(Z7wD2h6Nu7L8{`-c4-ux?A=xeKKu4u5-F_eJLmthuin zkDMzr6%Nwsm_S8YVX@8BHt16aiD;+SGtfO87#!et+dV#J%%LpHVi?Z=@H_$lAl2YD z51P#9imO!$slc+w7P*qZ!J_hy&T)3X9X$-PI>oYeXU*000vc3^imPICpS+4`XomRrl3b z$aH}m%itn`VOf@?8JgvJ*4))&>+aG92Jkrj2m-@!H~}m}Q7lgq7;scq ze^+CV699ma;Xc>kU{7IbrO)dtEjdqlt-V7OCopbH@7a=4o11QJ?YiW)z&sG_st!}UDKCZ$B_3=xx)4CVFRvvTHz>eUFt!lI%|&*a5U%$z-IN`2}1poFRE zN#PQSGBGZaW>H*h1ONo9sag|CjtUPC(fg5X{*slx?s7&Il|6luM1&I(9c5{ihQ@~m zg+~V}++K^FmClH6 zi;SDUdUi4*Wr2Dfj)6o3!&XOjR(jsiqV)MWYJ#MEL#4GncijI_up9%C_NHao)y0KG zRMv*Y8KeDe^#jzscWzM2M7T;f)KE2f!`)2N$xg4}{#=Xz03ZNKL_t)1)zU>W5e^_w z3`&Rzqc}W!@lE7N^`K9_V9Bx|vFp^iiaF~yWyL5v2Cb11kpzxd9uE%<)(7ZiB!*OB zQ3ffY59u#2(kG>aMaHXeRvTczFiBcknyI5&2uz-zkuDbDViHs8G?57zVuo3=a<)by z?rdvHpPeHYtJ5OYKFSw0AzLfOaU7RPpuOLnF)=PGF-d}9p@F*cqT-+_3zAe6W=NZt z8B=gH7sbrEb43>KwG~%&Zdku6E-ALT^nBcu8SzE}4@gXi2{9VA&CMNaZoNHJCkO9n z-_VG;zmJHWv0>gsm!FA^h@O(7-?L+X?CdpaU;PP`)#B+F3JZ;Cb7oD9LIBdBh~Aot2{SVrYCF=WBqzrOojiF?tTZlKl%o_0y4duL z#E818%4v&kN(|8Ae(lp%3M1LcymMdt#{uyV`5xSLxo2-VZ;3N-p&?|P^;u(foDNt zh>A4o4F=XvC!{1IL_~zC3-gK;xEm5zteF;cp{#D+n%iOmWE_YhL-iDTdyR%Ht z#%5s2+bFkcS&kHARbg>@DW(q!;r(=6QasOLp`k%Wy+I;EB13FS zsHC=WpuewU<;tZP5V6rAB_~e?#HL0iro{#b?L%zVq^QWG6e+mH3d69eFMHWC39g6> z*Z!vi;0xF5}WO>_d%jzI*WA#~u$=i>~_Mcq|HQ zM@?b3YsvgslJUq*U$xL(cupIagv3xoZ@hov@n3Dcia)QHCG%C)HODt^so?+q%%+xOTbja`uSpHK)X4Fj zHg;bCKyd7f&q^9vX;T0DXCIYbR>c)vdR*rZ51C1cSgX0#!uA`5TusmGrRUu!v1_~s zc*?W?^H0yWb;M2I@Zj2+*XU+fD)WEtz5S1o#dJxd-cXZVQuqcKod0dO`e6C4VlO=~ zbXhe2>cTfOJHJQ$zHI34YvBER62S8a!){FSWp;flGsm5U{0Q(PGv`W-8%F<+e|Y8V zhcR#DxqqJ{{7>8PU9A5>l>ho6%j>^)#r5w|zf04oe6Kc+#n2m*d|A_EAT9Bx7#@Z1VQk+ zoi2}W%&CIFdt45;j~Yw(WwqKkgsd07cy(88S?*`8PDK0MHisK{`uMijHr{;az6;#| z;B!0NUOxbEjL&MdG2F$Rq%S=4r_O=qxBj(-qG($?KH;&089HFPPZTcL;3ua_iWzD!op%7%>f83Loqx;$p6Y~ zA9<~Vk3V?#$;x(w_!pk}Q*BH2me2S3eDqkL@HibliW$?N=Q+32;b&Od=e9Xq03dLT z&1Um6JkN6!%?KRL0?K{)sZ%Yz`*t51w2d8?;av{9pJovf{_*IofBh(Tj2Y;#S-mt1 z03Mga<)Hw8_WPVp7tOFPht1E>1!wb*A3y8y(ZF*>2e!0Yd6uE9RvXI$2)xJbusc11 zz*imF^7;0|r>a^x0H538bbA4SqA0h+=JsB68UXk`U*7V$tyVkB1IMx+m&4)m0sum2 zu=-4X!(jjEkKa4ej)1k<9b@T5y)K8BViEE_@bL3~$I#;s-hHyN10mM~4?iz(48?E& zK>J){4!Kwv&)97?n&km_ht2Bovmo#^<+IuB9M3zQPK4-}UVdxXWb*h~m#On)L9yLK zQ?%c1b8rFx2u{1zL$LtB(iF>ck3MieLI{E2_fxze@Qj~kdD`!_*_{ZXlD!|)S_Gb@ zY*rh?3jl)8i-RO2bVnXBQkf z=%zSL%w%z0RYM<}v%ugt_nvC2@w>dS8MFG@dNLL)HtLo3p4ua&%~H8`&diDD^3EWs zToV{MXL=fVOtlTQnZ5IeJ6rZ_+nSKGE*5nkD{GU;bvd(V=u~pQ*PeIyfYpcQte7v8 zNm!rt_@P`k!>7+)gY^{DnVHD=bXjkiciM(T%+l80+}AP4i-?p735|{IBDsEH&P

)xNC9w$-|+u)`u&w0KIOcubopxOiqas9DOwnwG;bi_O&+d-a3-L z?2b@>^U11CvBI!;-b{s*9PVr1wf*R<#WOp*21rsA7L$azOx*((UaFrnJ-ViTcy6Tk zpgC3}llq<3+VYZw8FNCklJ44q!umm6s#`iOyu1(p!?W1{P+oAN+w1~doR*%_QdQ=r znaOk3Sj!G{b4tofhX*UnW`9VivazPpJk&XD;RdB9z|&j5yR%ycEG-XNG$r)>`7)b% zG-cWCP31+VfH|=Wg}uA-NKq>xkz~)z$lH53A}-u!^W@xgvr&rN19f}O)Jc`fwCJ$@ z!6Bd51Iq9iozT?ON&7rgZ@N3#KoVk^N+xMNUQ$o1i)3ws!_Jtg^P}v=3Wy3k&!*O zv$D`i3&UOs008jEPn=n>aGtl}@OgHs&Qm`;>WQDRRH4>UBV7m1RwINwM8Nu-q+^Hk zc-ra-U$JpPtkY($EiXwA5H**c$*uLpOv#qIyW0jwF+^r9SZyof z(gnWk|cDohbKiC zCiM3WFf2z~dum%ca*rN%dVQa~`nPTmQ&UnlFmjPP?sM6yFI1Q;E(|AmkKNSUR!~|M z6dI8@ZKk8M-fVZ)me+Ro58ymyZXEo2LK=s zjSh=UPYBV5#x0tpI@d6KV9P(7hCC(54_;{P6#(pmm0fPbs-+78pDkwZnf*Jfd(41hRSk4TCQ3XD!&lqSlrG9BFZW{1Ul zYR|Ts{!sw%c-*pp$kC?L=bHK)=KkF~K5uF7ZfI(?xhRHqn@pqN8SXZ_F@%%~W%~3P z0ZKUl9N(Wicg?NjKxL04JTW37(Vzi-@L)mbq7^q~riQoFRcfQNmQN4-c-vu@-I_it zyRp7CD`zQmp6_PJ&&MGiqKZ%^Na_Q_Wy-Mz|T1V}phxX^1 z?G9ti#GG(XZrKn3ct!@g%&wG_q?ptR0}V9|E!`j@_kH$S(~zg+*nzUPUO^CaQRx$6 zqjgddfFRZA7A(qfkM?f+@bz=e1Gb^wT|0MB0N`)fTVz|eetoi@$t&)dyLk1aaAD8B zqfVAwx@zvJybIYgXIOd~U6?du?vl(nv}4x3lu- zs~;Y;c$h^C=c?3WN0@}(-hP(j>Cx^!v!kuHzO|!|NBB@j^`p|C^mxaHz|{6PmSEM`J?>e3qG&=qt{-t0|4+1Exps{Es>5i8`86^ zBSU*XeYLdH(%V>_S6Xifi=UbnNyxN0*(s*s;cf4K5}myyJ2krQ+>U)Ero}6l#fBL< z?&2p11OY5V_NeFp03j)RRgwV*3@^#cCqoi%TDG|5%ojCXruw=@i^C6sue-+tep~N| z%i7(lh?wZ;t1NBoH#ePrdq=@o3-;MOj=_%7(t5kwJNB|JJv}8lIZZB8Em?b0?U}>F zeHXSLEprXlz5V&||8%VT0dYgKQ3L?m)Ftl2FYomFHr?av?kZN;8O>*Bb*QsE=bPe8u_=s^K(wm~l*DT&&PZ>9T$wLI4;N$>cJ$W@3@85it&^X7^0}OiPmL|8a2yvd zIbR?MNGz3T^tzw`Bn-14NSCeKfKQ1x8dU&*lOml_#|*OzSFW6HlqPqzkO2`(R%k!@ z<6{-6zY~#!&&OZ*$X04&F9WtbEbVMzGuKq`&IYN?oGtesY7PO@C9SNl98 z(kO{ar_%=L@$ z%J0(}72;7PZnrCpdL@a=mCBK^MYq?d4OHQ*_1Nz1s?4=Nn-HNQqK!)XND>L=qgK4AQD-ua;%}7={2) zNO&NI9Abi(=pz^BuoAIK#*YOZ#0el0i=9pyDP)V*-6Ca7f7rb9wg`zI zKxfbrm`EuhSPT&|g+Zkzu#3mMFbqe65FQgL6`Q04D>cR}otFby$rdmGfS`_g`gb>V zmE`{OA8%wXSbY1c<>hCd#Ux_28kbs>MxzcV%#4qkGJo!zjOigdJqZ9HD2xG05?3m; zYMoXj!t73F`OnrRVNM#ucei(la7-B(q}C`UBKxqY8A7CziFILtOsnPT5M->-aP~geH)ZaZb@$}*Sjm;fd6XFD3z;KaPr&TKC0a6@9SmMN) z8*Z5#*~9#&W8Dvk8{Hcf0I;PI92K)PR3~)|xBu()cO8iIaR?VFvLi)*`rRM)H})nZ z#D!~QZ~pDM{3fqPLhO9!ZztQRq(CJA_-ShM>whV=$R&A0-nxIlY}X`AsQmP= zCS0i{+3lZv^ycQ=MT-}6yg-Nuo}oAW=70CT^vnmlkAuuudwlEP-~50Kofbp@03_>d z?;W_HkV^pJi0AJ5<*##tw?a2M$Hq=;Zy=C=Fq-};v)wj8ez0RjOq&R1~Y!(To1 z`KG%U2na_~&Fmz@2X8$8*lQ<$^{e&WbtTU}_G^FI($t8|WU}>%=U#O&7*2|D1V%ZR zUwBS2VWq#B%B15cdbo0?Fxs(J9$B}T$rcGP^{KV&Z)gnLufDk6| z-12+xuh{s8s>%3gW#ZzJ02*{bbS8zkm9jW8Ld=rk>jM>M#DV=hu(k%CZ6mFqTG*AjJ~a zmAmW1XJ0(|t6wf>Ilu{=z%T$HC32-)dNz0Kq1s-~;lvb*sx!H6hQIH(kG%cpFW*0O zDmrzVT0#H-hKq0<0AS-|zuElEuU`LPYs93C%Di3gy}zB7syM)L90QyX6Bqy>oFG6@ zCrzx{`ts?LqCfxrqe+ve-}&$_cD(T9r-#l7Joa^85&S^q%dfuf;uTN4@cRo}-~Q*n z-s`pzA^?!2uT3!j`pKs%N3?fl$bSFa(=TnSx@+T7p63COSWE&!gh(v&_P_DQ-{08Y zy7A7rJSX5H62|}`K=P=YriOg_@w>0TyL(#BT-*|9}EK0Ath?wRKgH23SI z=i6l5Yy)*xV-@W!Zj{yLP0s;rC&a{j;2m}ZK6tU~4 z1-|#*JMVmWKo=AQ02;#m$LIch>O#lz)ytbpPrUoir+$f&7BHN^ae~A#00A=Q&Sm>r zUVG)Q=euDnVR%Fd&mh!@0+^{l?o{U;#l_H$A9_B zQ@{Slr`y7^@4YQWcR*7qEL{ek;8ono?nHcdxyux!Jc zlAZ58`|J~%d7Gre&HsGqFWutQDZx5?;Qa63+v#UHoD^fYbV_n+?YX^wdhsJ|aL8B- z;y5nnMxJ^0FMXp-M0hv=D54X~cfac*WC(yHMcR<8Ab-_U&%e%zWdG?{_XFa)=3=_R zXTL)(oGbOX;ao}Irk26Mwu*Z5swK0&y7X05l-*oVTsnRED)rS9;#8d6RqhOXaP5ro zj%;7+klk0lx-ojdRniiDhbFsWM#}X(a-&>{t6A_3)_n(R#dY~j5C9=_e|vTF0Bdei z&$uHyT6OI@zeTsa{?q-}WA1kt7he;9wM#CQM2rzR!OkKjFU%JjZmjG||Qq@l(tGzlI+p8T1FnHxeJOb@MuSlRx4AI(}-|p8((D_&vwaG{;}N zjKB*V$9<1l(taPye|It89%HAbJuU~uT$dgK&oea5U*z8KzA;9?l~M(PV_BM}ujwwq z=ktG$ws15>vAiJg>^HUJm0tInM7vR%83&1!3^Yr5pZccq1y+UsqXoR_%H zWH{fk(n}vl2*BC);g-Eaw(E*$yx(13TsW34hiAPFP3_~ALIOb1sRGl8+2L?sMF#+2 zHh+HTh7`Z{E$3iIubuXFUa08y-KbB7+p0}APkVEd%{#uMu23Edj-UQ|dco^#6a)aL zj^tl<)zVgdp=}T$1b{|H%){o<8&Ti8W#^HxU$&mcUdOm0SlGSi=-2xf;sv4jbm2Ah zY;9<^SVqxR^J87+mT$&{oyhfiBQE67ql5}ctNC}X4M zB^x>_^A41nZuJdaXzE6!`e%3EEJn~>eB@ZCQ!kfJ%$z5+)Sjql76?`L>};SZs=K&9 zaM|ooTT8d!J<{4aFch1$CRuLXvE$I(pWQzxLT~PALs&pzQ@P*mkw#BnJ0}$YY726! zyM{SIv1rkZvh&4Wk5>{ob!Ip<#79SXt83&L^W)TQb!DX&YV88V1?wz!YSFUg)rCj< zE!Kn?YbWXb$4}%Bj?k;`d%%2lXPs3b)!{!|m3esE=O$X3J!fuOT&MtW?!e}Xe&6D? z8;17&tGF$6lR*aH*}r4Yh{v6hwJMPA&MT_Wr_H~4X6XBGeMT7c0VuP*>DF|djie8Mbuv>QOP^2%DP6Wz}U&z@#NwBLKm&r^z+-q0Is2)q2TbQ zZEuz8@6LR9(Lnjh+?ElYluVdBCk*-y7E~~xy=}wNvj?`@G?7$ugE}JA?ej~4GNdfh z4>Z}pP_+5|jOA;GOar`^&bj&SC=J$r`k*~!NxaC}+}bMU{k1KeW-bLYD~a~H3e7$1%a{6Kr<{-bAtCoM{*TJr~}w73|@U`xM^xaWbpEOlp(71W8t zC*C|&^}(l`gA$@U>x%lUqD>Fpr9i-V9H$CPn)5mRl%?rL*2^k5bKbFvZe3v9!l}`@ zc_;9Yi6QQ$rXeaRGbe)TIoi}05j#<8tFIYkH*LD|VBR@dvNGqYjTw&6qhMJ{%MH{?>|v$It0fW-pJ$KiPTw$=BBcz?QdP zmxe@;q-x2cX~z#7vDoc~)Oizhp4{W-W$wx|p1Hwn^qHc%#LUGxQ{!;#$Fm=D!?RIR zDlgpjmt&(b(PBqq&*-i9JyNy%9kVp7x3(~^tR+m10U%9S%H(h?x2$i~>UA@txg7^9 z0l?Bxi$`ZqPfKh&w|z@N=kgV6=fuPItw%;2wsQ@&=Z@u@Ym2K|I_%=WJMO-(WcwQ} zR=++hH6<(n0Ia6IVe^ocQ!iV$uI#`z003Z7KZBkE0N*!c)kmhqc)IN&GpD5nee~)-`~h)4yKB?=?Qc3Hy6JP5Oi~Z+E9|wI z`VwZZwzX9G+?~6RHqDwpCoE86C?@~_03ZNKL_t&z0NhB~iB{s_Tj!oUUKAA*Ibr5f z6@r?)Tp@hYhV>il?X{H+t?TanpTT3FG`pxi8!`vQU@S8iBSdT1{hmXaJDA;JY}xa^}d!}r|2UQQ3@AIWpc zVwbO4R&jI>008i;*syl(Dg!q1*317yF&VerdPnK5*H6~BMLV9-2^h8N+LG|RB%hyfC-rQLU0N&BzAs3yRni7?i3IL;B z4MN!TIhoU13$}lDs%id`b<0zkcRoAiW~DhZCl^+m7R{fFIc?JxEIe0G=osww;j+nD z*#p&OgS>9Zss##+0su=#Q@@*|eBObsx}$mJVQHCjr-TatAl8S6$4}6k4mO~NZ<}}S zOtHs9F*H?p>h!|f9}Jaa!!6bFxY?X%SR0vj*BsTWpB5=J##OhhYdCWP46%t3LAKFe zW!Ut)bJVYH9!u!LYeQ4l-*soj;m@sp%4cbO_i*c7cix$xw(Qz_$|H+gJUvbkHFarL zd`oj%M|A}oHaA)C>hp!%v2dEzMPc&D^((W?roNu`ju9W1w`cdPTOW+m%SNr91?x71 zXk`tRvVC=sXaSA+W5J1r;33E0Lx%kM@Pp% ze_vZi@9t6LNo5pQUBwUf{Js65mRR+MCuR%j-`i& zM>7^KzHp&!(ZZ!nXHgI6<}6&6EbiKw-&R#ovGn#k!gK+=v*BPh_sAV{P8XK@{EWb{ z{T*#S0h;RSINskj%-y;w>%#deua~AN>hy{H6`OwPF4;e%iAzgNnHU`iKwoIKELpNB zROvpJS37CW`~~x~Pww2-JL(OKo4j!9gxHDGD)Ntqf2q}v2{$|&6?k5u2_390;})*2 zC_YkK--ts8nhQ33GRv0YDHSB-E%B4f;H021`?^ z)S}=po!aIeu6Icn$(=<7ZDA88%XjVCUR`iPq7FegVF(N$F$7~P2LW_OtwyOP__19o z;q0ER9$By+(E`irL$n%|TEz1q23^Cs!yTd|qf`U{q>NO^G(Is2dYyt&*uD0mBikzT z6$))=Z$ssg17~7YqkbJjib-RzN`e7R#{BW|Rqy@dmDGhd-Eq@=+G&!gBgFa;nywa$ z36hZmz=*?Z3{$FA0g3TZrKKjLj0{#`W(o|!I;B*q6sy!)L{om1I>;EP2+@)@KaUVd zlv1tc|6}jG?^QjBC z_C05xeb@e07+ZBbF9nwjS_0yMEF%(osW?sgSc&2vn&py8Pw8|c8R;;&ifDd`+&zDV zh;Ys(BSLG|p-#ciyUx9HMz!*+)T-FU%3M|!7LTtjTOUuyuMUQc<*;&yAy}{>@um~b zq%W`bb-gZ0{qRj?S1T>NHD)VIaDYRmrY|_-D+5o^@Cx!NT1sX#CV5^WHx_kz^u}L1 z^q|m5%i~p|W9LtP5@_bqi*56XeiMa7w;3q!<=6CnOceRpubc_`=+S%%$2L_)_sRJC zdFyqUxYKy;Nw543oLR5{J!*jz>h|UCI0hDZWYIhXj}=yqhEFxKHg9<@Sd9Y{+;Ii@ z)TEKk8F6~yB<$J7_5J3P1ey9M^|#x^OJTP?#iACQw*ZI^Ae4`K3}~%Jj!Oy67Bbdw zvGsBB;1+MHnjPIpMQ!ujx!}#+%9J@rhYCSlPb(($IMZ&PkxwcPox6%JQFS2`N#3Y!`nsrVLE%o^baoZ-(sZD zzdmB&3qy|2KhBKDmJN#W!wYHa62=V=S_rIDMv z<<6QU$%}4>jKJbGge{rL$}hvvS*n$a!vm28MLG$SGQgvpiI=PDo;0fZKi@YyFP`VV zsEDZB)4eZJ7Qh3VwbHY4OH{vn=I_=^@YAmY0GJ89|VdBiE!=;Fc8%Riw|H008RQ*o?}T7(5xg zXZpTOY0|gD0jdpZSjRkl)hhNp3LbxD8V5eF=t+##^;{)sP>>5Vqm?Xwl;$T@x1UZ_ zbkC4F-#KjhYa7T*t2@?7)e(H9wI(ZB`~oFP4kc|n`%FWys&AO*Il&$98DPP_GTVAz znK_8x*ovLt$?f&Cqtk9_^DQ16_K{=Q!Q9^Z^mFifs4I6iy%mC_t`gt@)+Kk~T(7X> z5adac(~2Sie8Zps!8ehf;D?Qd!i()M>=lZoNif08)8Ch9;D{UczswBweVRM!D}UwX;4QByg@aZ!#W8CwjjLc zfp6){vHFMsJw6Dj=KF3bpx*8{blFZ|Kcv6%8BG0@tzKT``!u=s*Am7qU9whVtRy&z zO&QO{uk$3wdQa+sfJ%uVUacZcmO9*^ILV}%%gM0A;=89}-}jXI9@YvbgG~RE((GZX zwQzwtA5#r^GSStW{8P)c#Z_TelLDlTk3N{G-H>!Cx%0evP_%2RdEN$&((wMNI&K|H zLpVW^!$nc(#=gwYILBkRMPqL?hu#OQ?kT10g}73M+tJzB-6;T>W~C-ORjdk9!oxsz zvs?SwpB@-QOF7BwY=M*jd3R=kmFYo!Dpf*gi{GaJ@^onlvXbQr90DOa9P9(-o-6V7 zUt9(LvTOw30HV`HzpymZ+1Q-q@IG8{VciqRtBeq$z8?~b?>PPevRx6R~cGifte ze)}>uRb9<1%zwb7ewyZH>DE8)_Zit^L6MG}k5kNHt>a)(^-~mLv9vVsU?a#oBco9U zOC2D}pk0}S4e;>oHel#4OR4!Hc(d$;80U#~%}bT(nrxfaY&MX6cG8n1Ub9;&TmI#M zu+d{%daq`!YGU%7ydxQ0OKtHO=_c zxK6qU-`u`a0E6Pv$Wy2M$~*Mf>{6iZuwls1vL5Y}9|2=z`$(j#~GH(!hxq$O zVTfzwZmJ3?sMBK2t8fbjNExnS#|8C$*&a%?B5gk0;cZEOJ>D6JGxv(34w3@(auvzy z-fWk>&*8)p$DxvoQ=}8bWk(jvNK2@Ne+`nDf?$@VrCY=+(xCLS3LpgmOXG#xEot4; zr)Y+}3y0cD=PNW7ni8G3r<)k8#}?^44dzUU$Rrih#!=|Rlex`NfaD*?=1v*@{%Yw8 zX$!!=pl?}j^72~JCT^u+7N7sb@rU!jR6+d4k2{v2bCUe*_yM+(MSf-VD8dhkHBs z>XXE#iB6x-I6t2s+eu5ly~Af2i5A=CK>UYXYXE8;f@a3#^(4o4U zW=_dW8Qrc$on{NL4J$5etuJ6(!G;t&qVnKe`wdVX(4U4+U1r%hIHIX`_02+P&xa4G z*aMNds3JHnN?x}pGm6SzySB4QjtRk3^zg{DWzX&jWK)sd`K;6kU5<9}kQ)}^5L(<= z1oCxqA6@A9jc%d} zW9bf;r!EHHSx(y(ViF|duK&O~tb-04cjcpEzx+>;j=;3Ir(;#mFNx1M*SXSqVOn}a zsV0wVqM(4Bab;x*lWHZ&d`<=OU>icFmjb^G^Zxbz>3OTHq?{snzbb8I&@;Aku_S!z zAkJ|15MBgC=15K5v7rLSm?^d{EThak!m*zrO2ft(?r!7-z$iQaw$8at5gh)*$F&$_tP~0{uw54EwfF3-2379C+z@bw^H{_pBh-YqI5=wV7c}ym|QLw*BRiVjKlqS@x;DBNV*)d&n$3^NH;b`>XI!qw;yeLe}Ai@5P1fLh=p3 z-RXm82n;2T4L5uubI~E%V^mjP|1`lR3n?KkF+M@bH11gEM`x$Azg;#SEAiFOpWdoO z2_PC@nRBs2ji8TUN>TXp)Ij+@oqANSse2rp&z#(x@Wq_NS%*3WYhwtnduhbx{ipR& zze1KWGEDyP*rK_3l$2L_FYx!9D@Gc8R&vC+e*L35YvS$Q>$ytfGA+~d_UCBSChov0 z%qQc_#_?L3E-vDDY$ZY^;AYl1&ZAY?*9^GZUz@S%TE511jvOITNH^@SqM$&A>11bv zl0vlWAmCH^;Ttj23(eixw0{7ZiIUwgneC^C&a)L0k*qEk>pwH7GKDP>?D@oPpM+)sOf&qGLenGgC4=H;9RusByL+@EIlgD%F0raZ6yhIGi=J`xAO z`=?7>W}cE6{l&RhmA0O)?YZC6R*b0ou^PRl-hIt4-({9w*Fv{>zH(-`IC!=f$3w}4 z&rH~VWAx5SMy05@%E6&_$hbeJx=kmaRJBJcbV*2>g*(snm_G19i`uo>OeA%eV!!=i zWgscMYLG>w-Rn2Cxm#;V5l~{i@u_Uc<8$EtyEBoGVeW&BlaDaAaBae(P_z$CHz#kM{3(VKvizf!#K7XMz1;Z=}omG^a<8tP-r z;b9%u!HeEZP^F`LT2x&pJKnxqI+ga#na93quba?e?P%^|TczI*`>DNayX_mN?9EOU zse`@e>Mi5BI)uWCGOQ_7cnCQ8>((F4_>@DKB$uO5r17)j&TRr4Aky8U)*l_tml&7y zQ0Aw2^y_#u?z;r&?-MdFhIgGOqciwBf03JTeCfsn{O_96;ME)m5i z=l}fPi$%QbGBp(LSt{E#Y?0LtaMV_pXj+Wjw8ujr=UmZQ6eRBPxjYk+-szS;AD`PL zMZ^$CF#F`ytu-$kqTBJdZd(ux@mKwp%d6>q#eBF3K`-p|749|#MG`O7lAnrrNPno} zk`SE{5;gX$*+E09rw7-ERo-Rr6K;7-c?gD%*4KHx=;F2SWz*n)L$hqd2;sAvk-b6> zle;Q!mJGiH9CptQCA2|sgPX~bg?;7y^8RP~=1|Q?GYHq<#l1 zL77ey$Vugn}yI_M!xr zC-_F;)ydi{1%DL0;Y_SNJ|?K{8QC1~u@)VgO9l7=y5pH4E|AZd_Ryis%A}&jr~er2 z38S6Vg}Ytos}HE`=+Kl-y35;rS~yUpghzelW*PsvMfJ8agb zceIl4f+x4Qw7sujLcf0u$d3k(wN%C+(lFBwApp_E^A3}n= z<|x8XPW9*JnJ5j<#SP~EY-hzGvaaqOPe;n~LgW}Tt&n>%&Gh`}M^bP?M2c_LFOE5i ziAIzRV341aX!xIFto;~bcBeY?|omc~xWS6kX%+u1CE<;?5#SWn;dwTjFt>i8(6 zm7n&{-&c+BuP(mT&TYlER0Jc+XMA%>$(f`?$47bj4z|S8lM@*!3B+}0)VBm*2S=)> zoHZBlm>4q(SNu{wrnHUA?{rypA8xB;v^N4Xr9Ly2Cvu|s?lBbeDLdueA6S&;*8Jf) z%G@sM-e5(RR3Lh}sh^yZ1N!Sj-BuI8Y-<#=s)C5C zZm8DK6Ni>q@N2W#Q|JoLg=_mr&Gd)QV{B~9&7%DNBWfjLK(nXECpF8COU~PLXW$hX?MlD;^G3wBe{DfGwVTQF*W}ukQU~ zF!|*D{rv}-fc{#qP4s>#p7F^U;b8Tl{?@b7SmRvA>Uc;QDz_is%F{!P7!u$B?_kon z6^s^9B0rSB(Mh-Zc2xY4npxnx_vfmXBkIHGn11ZLvB(0!N#%K#L(pqPhEzmGLw{L8 zz~v#Iy%RBg(8+>{PT^O$jsz_w)r5wON{N>bFDti+@i@}Af30^lHG1k^^9^rJBw{Kg zRh*WYC-BCgi#^HnF+I=R_mQnPx%ZBmZkYndd@3lD>ifRUC15zbUiqJ~;ySO#u9vM^ z{d_qh-ZjmaadRd`qehA|%Bz{4o7DB@R@8J6L+f~`K9{>>lHToHFaiE)z{Rr4q0?KM zoy|wI6N~r{&*i#AJ|>!qm+j-Fw8_6S4!!sQ9&PQ;=mogR_Hxt*Pi;~;!!F=VQ>_y-dtH1j z<}0f&g`d|}_+G<4-uM49d86k0RF1$`wFv$ET{HkdwPxkx+F2>jw<6QiU-r0vTywH0 z$~N||@a?)R%vmb+$L3yybl`>FF$J1bNjr#82pwocP#Y zg8SK`>O8kd(G+R-sayo|{Tc)18v{;5jbHy|y2bl0wFqGy`QH2~fr?oFKCU>EU%(=!b!Ey9H57Z!`*VRa6@8-aYP9YIMTeV7~LgK6_&+UImD8gva z*?#j!p|1C~QYl%zsD;F-2`bpSt$1tVHZQPqqNX9yD?U*L0L{QIRpG{=^!ylyBl0mE zCLA>(^JQUEeWoD)Sm-^Q(@*m)S|X%=H=0za-D7?@;lvHR^mF^b@!a{<3!TwAk=QHB zq4#MimCw>12S8s+$WxM{0_l7iE4AO$-ND>`CQuQ2iW)&%{LI>ujAta0ZvIcWx7Dld zEvsdcPDQb>qC%!el=CHy-(BTs{_N695=Rs4%FIll^Ag z>M0?XlHkSlSxQrVAdI`51vlEEBcPkU+or#3{mB-dl!~QcaQurtHm?nJDa@TUg z|8T<@aY4ZMzjxj9l-#;qTJkH?-0?>)qNc2^%i0q^X<}dixdl0Ve-;Jz;!=`re3h3{ z7{@rvNgRG4ViC;TQUOd*2%Yr{at+mT(~Z(F4r!ua8Ru6zGQNiMZ~T3{-6%!QtWijf z)1iM7eFN8PTxQo#w~&w{hM>>5*-mKfjnFq{GUbpE0fH-s!BM0JTq2#K)Yi6C>hz@m zoy-)ytUNWB2_^}qse|fYv(wM`If+BO&UZ1d8cn%L%v&A`4nX7Dd;TBt>Cp!Z z`AhJL0;3cZ*2jN~UO6j7HMj(X1H6xamDW=9;V6(>dr~mZ*_&o!7eP&Bx{-fEF!A29#%Ur1o2no1;UK z<`$2qvUBe(bIh~-@-^M;eHM=xNw8VQs@@9?Lc38Y6+vEEn}e=a7b0 z&`0VPWQvmHqoBf!mZV5WfCg-zg}%b!E{)qoWlulpR6yLb77akYS#lh*(<(dwutAI4 z?lo0B?za_6S){=fNOk=Dgjfw9OJ19Ct)qo=?~c|Y(-;0UN;;2oVt>O!-OfKnqozol zJYCPbwlv~%dss_!1zDqH-vvEm+-A~sT#^R`cy=(%`z}AJl86SPM3G=0|LJ+7 zuBn&D$7ikTiVAQ+k!lj0_{}*ni#-4v3 zrn`TMor!*&5OLtg5h+2NWLUO+D{e5C?E?n0j)Hj9!03}(^*wh}=IvEWHFS#eCwK4? zzAKFs0M@$h)`vO~CIk1_0*w10o%{dM0^G_+^nGPa)Xgx}jogO={65`{K~}(4`)RV< z?Yp)8J&Z>-G+^G#+WGX#Jc?L&E)89V%|KUo$G&r`7XPyqkkcYAt%?&l29KWVYvcQc zA{?Ns(td_KkB?;ocrODbY68JI&~I(;xI?xuhltn%v)EH+8Kw2)A~5kJLIy_aTLR8T z$wO%+vvjyMTTak`0YPLE0fWFtMTsCW)qW76H;{vK=vp)xJ6P0B(n;C0VGbBp!J^+s?CjU`Ol4Fa_uP^AX`_nl;-G9WsXvrV$2I zcnW{{z|B5zObS;ko#?1;V+)xoVQgM+c_dAzQILC(qk1{Dh;v)(2nGUFFquh`Y%@}X z9=R$F6WNGLcekInl^Ej8*9Eukd@90PBtb!e1d$I{qwly%x_pDILHHUc}zU5#9&b43TY++RA-^l!Th3@)$yL=mdr zh!LM+bsn&nveSR^lqtt#A{rHBev&I1!*)~Z_*Fe-K_SPmm@*koWJ*D<%JPY3LBNKC z`uHxIUTp0rJr|P=sdv;$8*EcH8rw6rkQm&rYNXVze(d@L_HaRZKB;lovmOMo(G<)$ zPU$PxjwDCM%AX~}6XmotavAEjN>>CHO#%%Xc{!=dfO}BxI~jeZi%xP$s+wIY_-gvk zTZsmP%EV+67Wz+>f5RyFgqWg{10=a7_eyaJdv1)2melr}$!55u2Lqt|HI&d)Q#0<4N9 zC{xv%xrG)5h0Z6(`Pg>RFFGfT@ht-r2L|vSz}fuyqUIpYnkIOV{=QsAzU!O4S2|P_gmR+d)d> zkExl!d&dg#DhZU*1RnX(>`_* zlJO%Nl&2cOCKfRwJ!0twCgUL>r=qeLKd#ppzgPkNusJSzzTV&oI9|3|!lki|SV}XE z{uG>KzluR&>E`L%I7@6Xh3MNCy0tq;qr0Apm4PyG`;&)DPQRp^Xv;%xx z%;{CXFw_|K(;_+HXgtdXv+P&#srHdP8|j^fF90Dtr3b);xvXUjb+AQ0zQy<+v{R{a zxf%n;uvo$T!R>X{C=(qt4N8SSZXDHVI0p|cF(9~HT86eE{F{n0ZBbyw<`2zr+Za^%P`NRyKAk>D@&ADK z>1VaUSq?5Hdpr^>S)8u5)gcbuXQ<40Gd@FcyGDpd-IY~|zBIq@btdCUEnn66_>_tY zT*yt^8InYiy#;TLMM#|aSxbdWT(iZ&aD^pl%k7J`k8#4*heYaLhtGr8^=A-4*iAwD zq1td(r`P4&(PQ~ZkQ~Fih33FPd=(3kTt0_{AU8Kdy1g}yNbT=$$RePOon!-=cHhOr zld%Vz*HSpc{Ch*T+Ulg+&5aQvhPuw1me1O9K38K=3P_-ty3eTrcg_WNx~>x&RY>z& zn&7I%d*8AZk$uL~m~onA^?&Qx=I*tb_BB)iKZ@R`9SLjI&iP)>NsX}C;9(Jd8z9cY z<&{=(g_#1QCB3VN%@Gd2NXO8d+gkI~{yov*^p=!XfO>d7(6AxfCAI92p zqz~z^J25c4Ppj}uMDJF)Aj{LshW5YQ*@F(Bnvt+8Da2apqmyxt59z2BDam)C$M1u5 z;-f+f!h59eaY`B9+jMPW5Xe+^#V?ORD_N5Al}H$ zwWw-SxIAMRXEn4fYYHFS^!q;sd5Vlj$aC%oiRj|cyH}C#h>30#6cit!2ED+ctV7;} zU5G)oPyQ}%J|64v`k7Q*L!Ubltx1x-r(HB`Jpkaz#r5v;=cU zSZGyxW}7h$)~!kae4oSL1I{cRio4<=9f17FZMdyT$QFFJ?^fl4SFEm^&i6q^fNvf| zo2vG3fH=090_T^14Vlw%DFEo18={c`xUiHa&>TmAjPhcH*?RTPn76MediaXNN8as` zq@?h*!NaD_!qQW@b^?P&l3|zF!O2KN2>yt}A(cm#LGx z<9^haYZfL4p~r)ju`AolGQWQlLB5j_ceYOo*JH_+DbQFHVBC zmxEZEWZ_YJ9}RfgS#?XfX7rQdW)`^6Jny%z&W+K|K@>?zi#+^3m1U;&=C`;7rLPVO zWRaw=>$HTGz9h^8iD)?0N%E}3{CD^78TrYo4CiQD9Z$(or1~vX0s))EEN`#&mRlgN zwrkPNP@JI~_O*nIqRe#>pMxLb%HAr73I||JMsW9MF54R<+g|4lLo}3JKAXEp9nGb~ zOM`#0q=M}wI-3^|hYOWn(D#1)RH6IgnSh&A^lwz8d^F6nOXE2MX4};el4GLT}AVA`u6Rc0oL*xr|E^(DP#0AAH1N?hu&BS^J{C7^qeHN; zdj_oA_4hPUu+ieZsK!1PgYc*!x#0b;ci_!ioq~>Zp@#gPe7ZpllupJnFlBkm3(fi5 zWdDR~jkM#itQ2}6@Onq3`zljg(=MHli5O7A&IcvFRJ6GDdhvi>{=RxBQk)qMr!b~X z68QL~!0_cPRRHq_@9iIiTi29#QTj9I^6hN-ve$g-{*xtJt;d^HthD%$c*pu&RPSqP zC>3}%OReQij0rHh2qzVr!DJW=-j4iCh>Xjk-*sPG7ig9vUJ5NpEb=nV zL)vZWsZdw->yNEN?(F0JNh!F60`uior2@p0{1-;?*N0_;u$EeXSX|sYyu-I zYHR1MFKa4KQKCYm#vv@#{d0@U^fZLPj9Zhxrc8 z+$lnVE{~6&@3qR{-OGB^k5PW-;OL=wA-RY zD&Pf7I|&|9Y1E;>0?ad_K_BF*V*!I>q=6)izFsqhzWKC5%Csp+z>)^=j_aw#*66}3 zk^AB?YG?C}g`@WGbB&|#-4)*c^^Oz(cE0-Dq*Ny_-dCL>wF%4l;(@bfr_Gpe-~6)- zG9zdK!6jYPYS!~(S|f+OuOD-FzxvIsMV<<_WS7U1CBar~SL_3omJx@_1@wAe^M6B8 zl+4Cs(kEVK@)q^j@tE|yCRU4@tO@a|SJaa1G-%7Ro7qLjv4w<}=bHAh9x4ztwPN~( z{#>Zr!9UXozwLjF^IUt@2<2RMYs=BOvn#qrkF`gOuVEYK=5$)lk4LJ@grD7c*D!pC zPRODlulvp`WCYggl2zav9_Uc|(x~Q!l!gh4p*F&BR$i)7HCfQ{)$V}Q%d-x5)tj(x zR|jE>`-*>sGFHT8xqK?E72~#_u)ge}SH=Xr_`F&7+)rW0YcOb*F*D>jL7?Cd`8yf+ zMMI@G2m7O?VgwdSjIpHG)?jxg}U||w1&2|ly9{B7Q8N3}o z7Y^BLWp4O)dOSO9i0-}5__I5l&#e3K5LA0jG&II@_%1h>FBt4DUnik z8VZVQu`7(yWBlic zUXqOgvS7MNd^6LKl$6|yL?8MAnb}4^lgFt3X8@r%b}{643Z8H}X(`A6Cj`|vNC6t1&7X_oN}EepMCR9*!9xOpsE_(yQcM&yMujSS(nNX9576Npmu`oGAZWd9=-IaO zQ1Wmv>AQ}}80gXpMjRm4dl}uGS1t{6s*MxycCe08j0y0Cr%mwc*q0mr&~fPD#lb=# zam*Q;RxnPf=p96hwsA6++%q4zYyX*J_yU#LTDvuC@7b&?aR6JRM+3h59fA%WS?yFn z(DZ5gPC&Gf^K`Fi&WyXzet3oT$br!HGk+1jRkwk-fe`>+PD@YRc=uaU+P@kp(rvh zL^}wHoJ4$o3o-BH*?~^re}0s4X@?Xh-aQ*5)<8U#- zWe(Q2!DCfY8J%0VR52-dW^AQkX?ls}(@uFv01a3vXL>C^s3oF@e)|~dT-zi-VVV9W zu(tltxjXRs#Nz}Dc-eFUz5X$g_cdEMe7UHKN7c&;_zS^3%{+}x-xJUpCy}lBwHzjv z*SO;a14Os2OIfD4bO+eMXYV++fZu<9KXeaJ-Y{loJ}h;A<$(i0)OLYx9$B%{LH{0_ z=84!AWcX+B*K zkE2oXP$WL`s$_k+&5x{XKnE1kQl!5L<6u2MDICJn(Yq-J1jtk^s&wz3XYH~9{=G&7 zYK+2WLW(*X8yN=eAacll$x1A{FX#>FnaPGIDlfkN*~eE^S(=PJoH0Q%y_A z#Q%9ilMkOCq%|usn+`JI=zZfu`$Add2S98wP$nyL)luA2EQ(+0O1?pfySm=%ozG#P zKT|XrQDgCL5*E&sgOS7gc5egrkH?9_X03Y~K$WUK_Kg<2js{u}akN1s}ssZ$t9dh zm!Ic3XA;-KxV24WYBbH|J6aiqRO`|JgG0xdyPoO^eQ_N1OWN$y-rWGc+6Qz7i!qZc+GdCdnLzPUaMRib~ZA4EN+C&idP)f#w$yExX*Z)l>9Z$0;Iab;2-|0q|k)Cd)@2B0uRLs zkCNG`JIs+U8%hQU?klF2%E%dp$qSoLXEJZC0e_4U;eWr;{~n8!vaAxxA8A#oH_}o~ z_j+-D^$}|P0GUwV5o;kzW*To|$ERug8mMSrxsH2_8=b7E7d|EMc5~P<)6+9Tb!!6`i3h?F;YBV zD7945cES;cpv47Qk~q--!7JQV&I9AW4twj}lo}n@u~1b7X%X0BV1gq+azpglnW&yM zMtPq^85LvaC&CTyu+%SHBp%`xWuUWhCbRZIks~`m7yxv_dM=QeR8+ z&`dz!(75DS7VV_@wvXU3YE)?9@Ks;NqSQ=)sU=vK{{k@rjOMooS#>sPYcH{|0HU0F ze7H+TX`Hle6mee$YYlTL%JG#eHj-+d=R>AbQ_nKs#ysc@79E=`ENkVp+Xr5MLB~eW zCh8W$hcS%*yP!LdcjIBHH((gT5bxu8SfNyF=Tk0Kt7v7E!!06;g)32W(oM@|z=0QJ zo0KrhX5-^CmC6v4=2!v{JO9QlJD!S$=bMlQ{WANC;MT56t!mOgQzTgRmr>i<3uEEPA1v9uQx1eBBj@n|XxFY0-Qv*T6;W5wjj zV9`HEtU0Qxhbkw8i_)zMV9os~RYkS^S!vNNUYGXUbaiZdkoVm1i+khz?q7fmh+LUz zxr#c_d2(zUw)!68J zOfhsFC@h4rl0gST-h@NeQL6B8QDE?)4@p>>C?2Y((VuoHS#oMvDCE#SL{W5EW@?>; z0-D$a(b9!EfqbQYan3_$xB}C*~)?4Jt~UY#`i#T(d$J8cP(QNsWfbD@iTl# z{`G0OYRH3&ITN|41RVq8=?`U(N9_MAoB3bUp<0Ewzh73^p1u+x_o^Rxw)5t5EOzQW zIE_p!uhx6ZbpP9ZU9=xNBrP@8i#`29Vod%hZ|LC~WiS_RU)#U9JH5i89UXN=o#*lv zaGjX-sHf1Iv3}q&{$>O+QjsxYTRWZD3)tVsG$2v2ggnTOwM_+v!yzDqL%D8=3RdRjlW4SzIY9YnsI1PBwM{ANT0G`Nrf6U+eFWt4@Y;eyWi5v8(PeS#wm zM6@mt*H3F7l;Gl>Z2?!Ggi`$ROJo-yz=aVr`}1Eu8gvA+aH~q=cl#$gadZ@TYo^^R zqC-cK*K(d2H^E^Y6G#;vXu%5wA*SDc3PmVPfC=Ign1WJ>ET)=B5-up%zj8PYd`LBx zfdJUqfibzH0W`PQq(Rr6y`%||67MDmFfNQ(sPJZNDOBdkHgR#%zt{-S#lHoe-x+eu z5A=TQ#v&BzP+>>2A-MKFUDer!o9&pSnQdYqG|18sl|ntPzNv^@r_#Qu;*v{BN$ddQ z(O=Fl-{Hvzn><*taakdIGBpccqS8?tUTG-6O!pT$U<^fg{?kT*plWt8MgLdHJ|C?j zHxwKcDRl9kd`Pe5$I#|6o%pweh=6yp#E@N`7*iGDtD~MmItf(-R~4Zb0-1;c&?`PX z874|SbdL>e#aA+Payh_vI{Ch=1V}6SUBxUA6F5hTURfG=ibKm*OD?JBI z_;%w=DxwD}f;2M|mF`eP^R0onFi8!-{5)qiB=b1*xZ67-ejgNcq^AJ3>>NXs zZW*H=+21i_q6SPO_bCcR;|^d$V#7oG5fF8JUS@hPkjS^`g2=u>`Q*n&LR7;;92R6i zC_p~>2L?7G+yGnnSM8^XeJ17bq|@~Tkqal5pr^zs4z`Saw%|TCJSI-TPIRl!a%!_* zdF7!2Cd}J6^Na((Q3kF6qQhnYQR#slpit-SuN_voCZOmxSd?t^3Mh*396&YD%fbKO z!Am~)zAf`Xi1=KLEs!He2E_0wd;gt~?L<3~1i6}~v@KE#zIT5vGYE4o&^1V6H{aUM z5n9}z72O1cqVr9vxbSP%u85PcN9_bBBD^S}wiO96%DxqfZH&m!+UiXFoOcjY#r1YR zfL4J;$ADi%JM^E=a{DSt6$81qdC#lI2+EAaO2P)2IAywhyWr;8zc3G|$MjLqTT&w0GMZK6gCoPA9~lmz-q3FD{S1VFoDq^OxZ=bY(FKTP@@ z?*!8qH32{Vwbj)#35hO-omv5Ida6-2K7*~_MCMOJr!Dbb4=lP5i@foSf*XD%wJN1- z)rL)9OVyxV(q$f^cx~V3?&d<&J!fHsb~9{INIEayKOP|F0B>SO*{yptD_<=Q8T;vy zkmauj@OeW0fAq7WjpcpkFtkH8qrQ4I0nL2sk z?EVu8zm{tA`8^Y+s9Qt|T1P@FmkV@)3e#_w{N!0%egY$}L+hmGmU#jqq8tBxjw%6P zKa^v7j*#TS+WSQ`L4!0p7y#gQsY>AT*VJODYi(Hq|l^; zgN1-|X{rePfb2AERzDUP5Xn_5(}F9^Ki!A((lM{ixt<+$8~fCoeH7mD)bSe~KCTDY z7dh#VWI67iq&s)LUWXNQUXH%2hYQ=T)tojXfxUgdd;c*N)Vx5FWF^<{e44iCmMmne zv~0Whr*GbsKn~VuS~{k}W12d(JNa#wcC)lzrcvR#5Y$n~tk__u?v#(Xyy*2+Fg+!e z@X9wvJ_F<+(GM(@A7zrInbzP@NUq;*Q9=Egd&6vmVnT9kcjAp{J2v@PQJlwqjwkG? zu$UY`Zj`Os<{_ub9rCoqfn#n&(`lhu$gE?uRW}D5*Qx{B{_v87jiVfHBeK+6&3@AL z^SW3M+`4zSo|$80+^pZwZSup;@yUO@rESq5@t>EFyT)buG}9)8u1@D!wdBmrpz6~2 zCOJ{khx|n=Q{Jp+{KPIYVs4IlAZ){eH>1;RK-5oSQW?d&cyAIqJ!lfIZ1*NJQ?D(| znty@c(7>m$lN7I(wGyGMuAwYoJuEHyVXNiVS*15O-JA`lM$a%s%0KQ5*Kli|4p72q ze139l^TT1KF#v{;7@T538^NFNQyPl0vh~NC^L(os_J6bhz(Uyky4q@k?sF^!Bo0lt z_L1|Gi(`BOk`w$~#!iquLAD(!GEDFc|KCDaDr_WJp*N-)iCy(s*|ypPpO>V872~JO zjb;G)-Q;7k?aRiR-o!(m{SQ0h`u1lPk?yKhN8*bM;&`@SuTN5Ax_mgFyq=2|PE|x^ zd6u}hIW`+B6f2S-3tU4#Lc7x%asU19KuK;QEb*?PW({S+PHhD`7K$Vui=o;12@yd- zObSG1#lZJPh*n>SYnx*u$o{zSS{?9R%RaMKm&fHm@z*QP8h7nQ72ks3iD9E}*e?O9 z2_5Y6RQ%MN_}c0G(I@5<*~gXy;e_a)JS~%L{wI5&c6@wW>7wR_shxOqSb)lBkJeKT zt@R%Er}T|-ts4D2h}ao`dim;pYGG2}Tw7TSrnIQ8+FvnDXDhf%?;as87W$)>l1HNQ zV{$C{Dk1scaFbW+nZ|g{Z&G-jk}4hhuvB?1!1fq45yPakct}HR6fy!p2UlLY5|XwB zJk7?ONGZs(Bg<0**ujk3S8d(3So^f)x$jR36O4Lt(?#i!-AZ9{enx_DfbZ37u1ARZ z0h3-nR-J3-bfSs%$7I>su89U<93&vHSKRUf`Gq_8K< z)YUt@y1LNvG`(h?k1u7XDyC)SEAM~*t1-TPwpfV+!1_|}U@B8Z`${a-eIE5NuC504 z^}R@wAMyNQZI%CJpmzGo1Q7r|MUv+9lYiN#7A66=>ZQp94gI(C4I#*h=;!93 zg5#xfm3iPHjwsegHh$)@Q&^G!1dQRhl%WcjmW>|UHA5+@j-pCLK-X@7I{EZvBTkJG z#~+?Xw>K?Lt>v8^NF!fM$hk!F!1bqxb-F1% zr|G=~b~dGEJDKmdy_8V$=Hn}Av}rti@|jF>Gt)4^zd~PM=QIf_svT~$)+261rt5*$B)9IUruB91OC1QAR&ilTCQ5ztG?ef&4xslO za%`5Yip_`G_r=R#`=x&q!9BKqv6 zqV>R%#fylHp8%MA|GHp<(O%5#FWx3Ig##`vrfTWs=2jQ&FFz)=oelF50l?zDG)eKI z1%@O^dxK`XDO%y1g4UYJDcz2%HRGp`vpjEqjgjWZnf1nQTkR?%F)}LOPv#DN@D4Ce zCIZZIxr3kzmT49c{bl!{>-dEG>lszT`5)Iy?xEXFIB__xa9`)DMO??r*2&j*9du|a zQE~2}m$%28hBohucI)YNK7qT*Y@yBv6EWC9Dk{r$&_jU8+nBc}BQCXDxAcIThlXh+ zBu>br5n3|SS8k1s{SuAHr677NxC0*-&_cgwodQ~4c69ab~=|p6KQnuWu|~tHM80b^*kjB z*t?KolqfHumQB~olP^>q^Fe37KCCl*X_mRrWi$n+{gjN%sOQ9lnhmYLkojn!%VTo3 zIe?;rl`OOH)JrZeih6?*?awz{?UG6qeibG9tJ6IGU7Z6kJgAYbMq6kbSr!a{Dp{~i zNsU_*@%8>M#?CS*uC9yH4Z(vnuEE{i1Eg_xx8UyX1R8gDcMtI5mf%iscXxN2{-$dF zPyasEa_{LnckjK{dh%iBBd+;F1ijv}izFWp6{S+MzXy_T?cy+Xm@MDSZ+h=Qg+!}Y znd;fQRkly&t)dGIoo{ttebZ79|U;pyHWoq+=rlq3L zW=fjDDzqX%_@|QcW0LE!l}mbrphku+$tW7?=SSl5{;P~iOa;WxSeuE?vh_8X9fw4S zb}ajPiQ;sp!o@AM5MYX=Q5ORPHbbkW^*mfJKGS`e&%ixAh5{&y0GXh!UTE9ot|#(7 z$T`;3)^=n3Uyx&XB`Q^AV))&7!H`9qA@OR=^Z0lCqMeZ?>h#($9PAa@DbPb~2tR0t zr*u5WW&||fw>skJ@QSDDQ`p@=g}DjCZAzwtov^YOdhdM!KA=g`7>$ZqYcT~87|R#A z?}geCATkb0>)ky@QX#jQPIwZ}ql9@`GYmK&m(fK-9wh4F%j?6l;98}d4T=ArO^e(Z zHju)M5-tW~IuH?s)cY-2tRzFgVY;2ByT#lHb>O#7mmZlBRJatw9((Dgy~z$uZM(~| zXxw)`Dh^aYv+t9^#!cAbnp0J_qgbJ=(%244JHk=-!#NF!e!}OVz^R!EzWB7X)riVv zMc?_2gP^Zrg97$7{2d}c(llyRhA}0l_?N%orMq~PR3c=>^3j^K`&gu6%8r;QS+Q4A z0;GW7w1~UKA%Sz*>8>`Z(K9Ta41FI}79Vx%X9f77g~zKGT5o4@J(_a|8QeZMF99E$ z7Zfz2(a~nw0MInDJOv;Qg%Wu@38!Cpklva^Le}Jqi|1S z!6@TS{4$XDxsL?#X*;j*TjxC=&u&D>QWMN}*}+3nnESV{{vnSkg`4A5NND<4_8ERW zAW7$>4FUjrr#Y7?iQtbe;ir+PD&kI#OsnW?QAIzKL)od1N0JX-^AP=o_tG^#S!YaYlBXhk^b#zKOd%%;;G%h zx>zvGM<4)zG4e9qJCN@40 z0wu`j(tA1XFFxPS13pY#-YL*npaGd?_(+x#K>$idQGlh!=uNHs<;T6`ls&`&aS?H~ z(`)AOM9A>@vg2Y#ZK{<0t^+{$1v_?u(6ab(KJdwO4i%hTY8j~%4KA?E={DY!AQnmE zX?$B3*0th7`NNK7rsZl;c@MGD7K|MfSrI@T+f+QAe|9FO@@-cbzInfX?Rj6cSnZmz zij#|byV2}^F@xq6LKh0P=jsCO4CO z4sqmc-<9E<8a};l3Tp)@SwzDJ(ly@lbUpOOzSH!oG|kO^?8pYZ-UaU0!<+lQOzN_9 zb@&a8cJzVv)UK7$mGdXz#_AUrFORvGyFcz`NrZ2ca1H%*b31<9UBcTLh4b{wk1ISa z&kCQ7b(=JV7UIJNCQ9x9I#{o>W$dupL63W4Ed3SukRE>o@3&8O0YB;3kthi_6aBK+ z5wV68qQ7Lo}k5e9X}E=-w-CF@@Of z;!v~BfUHdo1OO@!3xy+JQ<>QbzfAVwB7^TA-QdLSBy`r|`B7=yw+3O`TAzMxH}LW9 z!`4xQk#Ws^X|4LG>xA4?L{^q(U05^)({=^lne9%qO#et1mE%}FEa@VA>Z~hBt%;Cn~t`@B0+{P~gO)P1r>htkmhBdy= zk9{Zr_+N}x6tfLk&t@EAi84c72?iKu-Cf!I->^yE2i|RpOOeI1ae#hLrryFAgCDoY z)OUpxCk}peFM7DvYjV+l6Wn>I>(Q*v+N$O2{_OD>wIS~v@sF&!6%NWzh4TbEZwIcP zLy#`^aWq&+*Fn7P4~!(JPA2t7zkV{J>P#?17XEQ5aD1}XS=Pex%I(ntkRX0d)8>@} z6|j==62&3}ks|CUNh1v6nK)mY8EGAZf#i|oLr&9PC$h9adA>D$08moH6b!^bh3!Kp z2EZ5q>xZ4*%IyTeP4##YjwZBM?1T7vwBVo7&r<0fdTpp$XkXFecpMY-Ac@tRnEKuR zA){AWWgYiXhLrII*P?zZLRj`{hTUc{4Bv>Jh zW;`mmE>Ao1@*auDukM~6ubz;LOZ|Mc@%*vJ$9}3HsKEq&Y{gDgAzg3u01OZb&~>W| zKxW^vW~$@Ks{*5D?W^sNw1+NKITiWKE{>eQT^EwvoO~zDWGUf*A}zDY0zUXP8+qv3 zsLI+rE}x-7yX2s7Ekx~I>6_8$gr+JWI1(9Z>*;CfT%du&em}HnlJ-m)>MQ$oYaCuc zi-WI*tlh>amL(vtg(yCuF}ZqQHWLKxBm`vn^04gyVt} zcLxrc5egnk2NwnhnKeDrCE*CaK#6QW#Gzs>8l=0y057~AgJblY|54dG|1wg{;h$f& zBDNxKU+M6cH-{k=(_3{XYSv;jFmx2@8cmE8;U)6J2eeM;>u$U*5@x{%paE~ZQ0+Fa zr{VLmEq^1|cHWo3W-T~ucGnGm!}^!MY_h}kd129GPdJu0nT7JQY?0Ts(+>lvxR+Kf zjd{IGqUd?Q%meDK9u$e6?+<)8_HCwausaPEr8&8=P)s8SlQwv)9u6sBy_i`gSGm0| zAQswKnocWBy4YyxY45CFr-|r$ zU?ObJ<#k&zI)?D|IEqa*u`h&N@5006mBqbz{F>W}tNGa+Rthvf8$+k`c==F*4i-P3 ze=HyCFeWUWU(h}Cg>iRv^yD)RTXO8S@)*457nW|sm51)aqmeKqRQ_BIt(nh>?TnDV ze1A_#-N;qtn&;XVM@>x6sYY4xX}MfcS65vpR6e9)c(i-9Tue~KG#|HJ??IH;wq;uF zF}d6@P$+ZJcm(#qD+uMa2zd|ye^*|t}I`-wd$Chc4 zXk3TTn)4rv@~Vi^;%;U2Vy! zb&ws-sYH0}ykF?BQ}EZ5pqHgcYucR%=wy~>C0c2#IdSDGnM!EQ658zE)e;xgF`ucZ zT;Lr2uMWj&zJogjlIkMB0P%4Uyxh_dSj))1tbvT3RV4qGY8Y34Z!mhCK8cvM7{=dg zakX1-s2>foa=Cu#5+|=JWxOXuP5G~dJBnRja(Vh(0IfexcKPmNbppo_0;AlHMUj+M z`HSV3^W&7<>1IB=N|?MNjO(J@nzo5E)CP2roOaQT-T_F z_@EK4~I?5=#g^^t5uu*ljzx-EH;i0w2 zUIIGkYT-T)D=i0W&MLQ?I|6ih%Ba(Gm_9!+K(_f1JfxULTw}+hnXFlXTrpWnLHK}` z{>|tM=92rCl)kvOqLQ(I--9GUa}Eh>nlyq*S}Em&To{iJ=OyPmYd@yHuA@Lg~Be~D93x; zG!_I{y7m(BNZt=rsq)^62EG|JW!T(o-|nt+SSTn?5u*XJHlGfYeMoe@$872T=B%4D z!t6R9)TJj)|66JW>%9Pi$MzN@Q zxvHb;-TL>NppLSG7(j%-!v_&6vlLytp0T#F5}uUV#Yfu6%B9EgFcVt>HdD|hmvawk za6*rdXO-3I@61TMNr^lkAErtJjaoLX&U;RtJJHI|2iJ3fX_wWR5bv63K)EXQe$1GX z6^4Vh|5T*yqkt|wp^gB_+oa-2bI(3RQcc3bs9Czll9N^;mCb7h(oqfb+3$Kxh*fPy zxO0C5=cqeeoW36Pp+(CoY7jOY?9rs9EJDSmd;9nhR8owzOv<3D>F)YF27LJB;X;$@ zDr%~x?f-S~uQOQ{ULTn~P{>KNR|;bG(bJJo(6Bz~_d=V{yrgA2|F}ATj{6WhvAq1f zj1C<)C22L-Rux-rUfUXQUwLz0XUAZZ)3i0&QCilNQJtf2zQe}#;C)`>hM0u2+|IuQ zUMsn6geD6JK+ri+xaRG&GDOF;y_caDYGS`9A^G+tFn;zRs5oWTtnQrc^C;_aS)OS> zWN2V+xrHTtQLA;=vuk&9{xPNVGj7BtAime}o8173zrXWKjjVZ$MGKKolj8_Pda<3h zDSU?L7|wPfsaR6-tJvCU$_Fuxxi7oKp#^E_3u#{&6|``(qP z>P)xk#(i{l+8puApO-}g{imi&s!+!BAH(CLy8Jx2fM9B`=h2QC@XI^40$_MjA+K$( zdk5u`+5ZflUKWzZqN1z~59WA$aOIf;W8iG$T39+<@^@}iWOE%RNOo&<9>Lo_c+t@QOo$9c%LHMUfm%6$=_xF;R8QnPoao&_x9-A$t##0Ba z)fKZY99p5!fY1WlcLlP4@6(579JnkQ+^y_2gRO-qqw%)bar z3Ikvrgv3-jIZ5y#w%OGXde{o2=8tyxF#(=<1E#zExFkI)c2wv>BRI-;sWO$q(i^WH zK7B5dBtJLfpxxmB$@C!x;#yuo3RSaIlrP_7=px{9B!+&kpK7Nl`5v>`rh#x2L__l0FTV%% z?gsNd;u~(VZaL}GvJ@w!R8$Jk4E*V6hVZ216X>auNh_H6+#3cWVZbF`!hScYnxA)v z>Yoq0*tcc>s^vym8$4@%kkG_v`mDaqH-(K_ucAYgt^kdPr~hRNtX*Y!oa8;P=Ivuh zm?RIJ-eaWpl83|e2V#$5s_XRemgrD0#E(!SApDGGD`1r#Q!o=%_i-or-9l3$*YgEH zPE=|+SRPMpRqn4`m@KgvO@`PVpRL*)?ZNQA(QdU!1;bK*UD<@utxxzD;GapNC#$^ky?^_(|D``5K5~$iX^kmeD-R zE3$@u1`#1#yC3H)Q~tNXXrI{Tl%%3{U2h&KAa=J4jF5cJ{wgYwz!bV-Ta)X81~?x$ z%sp{N&0(w10@~jXVT+W*ur+HFMi7q@s3<{3>lZFm{uFUHk1{Gj8$4dBSqcD9yt5Un z0bi_Q1et}z%TTF=tn9~{5)|9l%#EO9)sUqFK`M2@~~n` zLuir6$RlSqJ8ybUg_rdL+U@>U+lpWXT}}6{DEOG2M_e?ceLe7dd{|ohjE{CMHNY){ z1?Z3`VZsHL?_vzfr?)(G%b{3Y6RHA81B^G2%Z%L(WSpd<3_ip;>Mm#-?yu=OV@1tR(U^1ZrF&cd{)nY-EGAYp#;l`y0hgBGf&Oq8Nb2e)p|@8mMMelt8g6VLavv+ib88CRHs8HrZo~wFY@E9uu-^_->eQ6*En3p zN=1)bhX%*Etg%6Ab$u-_-I8byOJqNFs?@)TkL)|cBx@8w12o7vxLOuzj%_P5(ByQF z+Ono1)A%uGD7o*S#-F-x+A%{UGf581F|>f6Ge{0`8U);Ig}9rnImuG@NKErEThTE0QrK)TGMys}@qj8u8)= z^7DTIsFuiZp(K2fj8rXU z(lK{|@zkL6k zi~UCDyr(RNC5^d>0dN3bQ`mDnDL4F0y88ZJQI4Io9IBuVJ^xW@I` zi1J$eu{E=7U84X=8-MXt>8tcPTsZd+CdUH+88l^%R~_;ioNj;p6c#jigC;v6#x9GBXdO_0E!Gw{Hg{_}5%1*s8c|y#S&A z{8(z@UA4b7rqQH*TgvL$A;y*pcpA$ik9=7SaFYvoa+h?_3{NekrqZ{mb9?_G5xlgp zAdi6Plk>hoO13n&E{||*$**s)`2!*11IDN3+mK>19L&z6*Y}OUqn1a0kl0o>s-zaF zflVC6aEEPbya)nf8uqu#|KO$i7cZ}kK;HZv(0>D0Pal`ZC*y}h-rp}o{!FWS7WNM% zDg8NgeeD+ssG}GT>13K<5~K#lLp0QtFQ`46ChWSbWPWyKkhwRbLS9qFO`GuhM}}~Z zXK{JMlrgUOc-Y#$8Fr3-DG>MK=wv|f@W=xp{qpRB0(@1FzrLodr9w;%2HJ8o)Ueet^Q8stO8ABXC*C zV4^^ViZ-G)JVRfz7me>7egC;N6t`|piARYccq!oI9XWx+hcnuBA>p2|KS;%Ft81-K zSj9ba!+#~g{^@`~pGX1HVn5WV24VwgpQ_zzs5dMaSgIPl-k4<}7YP%TojN%)%Kt-f zHVEnUMOH=;4wn2TyJ?ERFKTE;V|HfW*~e*kdG(S8%$X;&JY)Aa{bzJvLH@)AC78GU zR54j2l#NWRyoS;0_!c8b-j3<~o1MAlu*vcDjTo}en2ds}Ku|iGwjC-+N>i7H408D{ zECs#VsjQWmw_I8Up{c=-saV(oL9O2Jo0~!!x*FP|2=&_M2?&x1$K?!FHphctaCT`g z=0GiwTCBQ?vBI7WlbrYET#)R0&N}&^Un#1phve~yv%?>|hSnSn7aP^!^(l0aj`iq@ z&p9|gw$=b7*3u{p#6cJY$1h~wED$r06?YVUg?Ks;+r|e<%(?^17Ej2);ZTwe0fE37 zE&T;MHw=(xPgnJSGZ)u8{(Gz{tfY62J;?FjB@+{GeSpIcCwUrNRGhPAOnF;t8(z=f z#f$i);IsFuFPr&D4#$?)5&g3crygxr<$8ni!EIAI{Tn4+t7^ok+UN64@hJh_?{ z#kSoVE=S!#`t_HHQiYmW6Q7Sw{)NH2&^}>$-4S!?*L7oC+d~QSe{mkwM3R5_I#BjY zN1iwQhV%ZzQ|>P8NN0Y+FeVv9nGm@i7Cn5j%B! z^!TB-)!`tN=c`a29+Q7T;Tn^ca;g9k5mp?&TpE~|&bKK!3_aso02#3Lci%Ram>_iu z2|(-z3^*Lm=@mLHJ_1M%!#ao%;a)XxjFRJIEgB(?V1y3&ryZPY*wB*e@z>KLz>tBJ zDEH8udX=n6!SS1?U%+6g_@Oj57Le3d$dN}hkdJ{FC7U%G_!qBFtBnZ^kmB8P;#&vj z=P%+Th!-ZJi<5yNk?nY@Sp2(V=pZcY8$Q2Z|DJ`Cdwu&)?{nPlEJQJL?9L@fLO6JO zqIDwScBFGZg&?1aMR1o9XCHJbC%8oxviqyb)b-Y4FZu=-@vs-&DIYO_tM?k%3mc0o z=0qxVEH8Y^L%`$xOC1RE?+M7){(*3p)uGcN_a-$75`GN;1LqbwCB7{TI7ELKo$~9u zwnyQH3F*GQ9S;9|#tjDcLb<4mqCp>(Gx!DcZOEQPd`m@5n*Rc{Dz9P?YHt~$K-Eq{ z2L%S-%QK-H^n>zC3;!!_;QzC2gn2ues9J*n5E1O&Eh?Ju>#O*EpBGT+hTu0Z$q((Q z-T4q3$}9jv0L&*7#Sw2Z!kq2j=S)W(#NsrL@lYG`L1Q3!o{q^fYQRG|YV%tw<{9JR zAbuR2ocxyJV_cU{p{cGV6%Susn_f5T1>XpGk166bG79`eBEz5+Zr#7y27#o8&3N2A zJm1NLwrneEZ^8!R7mdyv)7vM)q4T;HjgM(e?<@oi`3%Bpw*GBj7-R)TtR5ph={3za z86m5~hCo4o|8~9sl$2P$0YQ`SHCtG?Xp+zvr}d3E{R*9J$^~lbYwf}R&ftf@@Uowe z@x1B*SQkrrv(`v1ovZsePQ@j)wRM~8YU<}W@vAG#^EN#M+f*GqX*{lQK@hGu3r1~G zeSOWW>B-T5-a*|Txd+V~(?~rDcrk?H2z)sTi`r}U9=f_&tLMa5=qee|;hyzr6fn9v zQG`qhy+ONpNs1f3*F|wc43*YIcncr|+Z^n=o|n7e8U}O3aH?$@m3W$2nNBWdQgrjh_ zdA%V}m&SRw>MhXh`*AJc;CFy6HEgnex3LN@d+M1$%k}aQxvLzIl|i=IRfY^GUV)K) zE-)Ylkh1;o+7W{#HcgloB|T$93?kn-M!WSjelSI7!^24-Vp1DArH>=Jd-44vRT+1- zYpGK(y*!>ntQoM=T0slJ>I7PbN~o;=H(BVdhLtE9>-kQ*|FmY=$B?MOG=TDloxV327t~b~%UVAGO zm0(9my(#oG4V|HaWn*!@MBl&br>@M_;3Umk)V*)b>W6(*Y=`bG@7R3*{-DHb%)L4$ z%Rs)Qt-fs5a@Wj#kC3~ZSviIyW zn@8r8OOICQ9g!e#^$17lR9C<=k)eaEu;ll*bCOgN1GL~!t>X4^pEQ=NfH89XK0ASp zn>iC3Gd%|z&Ab6@s4cr@eGbULG~i zeS1MPkI3%q)pzW$Kq)?@LM6E%RR{`jhu>HoGoWn3I8Gg==miK=FZ1%w5)T^M!S$9W&ImoSkc&J4hl5a zju9eLD1#CSq&i+cMhYoxyK(gMt6D!6tBzI~o@c!L>ZLQP=&kP`bX2ABcB6zLdCzsQ&=7T3UzE+R!(mNpHh_}Q|G5TZsOB8-KD7@sd- zcan2@(XP()EyooaK;I-$l;|Y5xVfn)l1w{?a7#vh(C<=6%)iCc7m z>KWU`7Dttyx2AJ~_e9{g6#ZDteH!csX9Zxd(8>x?P*A)x;^X6EiI)@?m#fhONWnjq zfnq=UMcr`FBf)RzkU&K8n{5P13g_-IGdeH@5qx;B*cQ2w^RL8kW9`sVd;pl1D8dnX zkh2eI`zJ3E4gxTGPNzg{G}q%Gdh7Fwgr(=@guy3@aLU13nXwn397li@)(1@u_!AO@ zZqTXZk#F?}LY2j`^=5c(4&#DMVTTX5nXN5VM8sd&5w4gRG)w5Uvj)BZe&lJk4l^SI zkpmI6y!qWPR=dn@p#Y?XK%@|6OWGTv9@F*pSD{s=gb}fX!&a#|A*=~0d~%G!a2}zj z9Fm@gH4cIl3F=3DhfDJi{7AcTbg-;#| zBz5JpW{(?V$~iV{%C143Hnu|}H&TK{kJ#sn_+3I&rW1&`H<_W;Zj#34QMz@p>YndD zuitocI5{?%JMsuo+1JNupim|>SnVd6$~5nrCXiVWAiaK#O;gMi^na*vK{;+Y_$@!g zki|-%uPzQ?br{I*j;)O!V~m;li8z;x8^!+Kkn*(&UpCcDtL2jA@7$5#H|Rh!G?p4( z$F=lAWU+X?%A;CgWs@NI#f{3b?%fZ%f+?X*ntzGPh>*i&LR$`Z>KlKKLYILs>FC1h z^x+kig@V*S`bk--@V*)6!s3mv;<$}~$J?n7MxPry%$u^Q%f)%N2+Ht7ShYY#=0Jf!kc z3+h~f4x6QCDd<4@N4p-H>Fj*Y^+|;i zu^8xf=d@d{Hr@I{$aB{9c-^D|P;?NL&iehfKzB&u$_?%NA>yUVP{gIe84MhdqU40t z;{^e>A)*h!EfK{?!!D2y#(bRR@Xx#NO4%P9)6OzXFOq8{?p=rk9%KQ(L0(MFqv1*^n#Ryj63vl2D;@252QNS#^)!yUNttGFaQeJ z#EnnEV4$1t$r=9a9xhiLzYT+RM>R5R&|Itc@>+c}^5()eUO?^;3>iiN)l3uz0rFE2 zdiY`$ykRs9v`Wd1aa*Z@jY?tyUr!@0B20Cg1AmkB5< zP-iAoU~FjfS?4vRfuz6io07@^5ui||UpqTe!Wi9b3cp7CU8812`8uRs8Ss0xW`7@+ zKgayv%dcDWe7eX6Exm|{_HBBs!SvGkueclT*G#cdXUn%*X*z=h?)MbD>==*D`p zou6^xLv?d_>GYO1I#`Jn;=c+3@vCTxDkm?meQpKE8M+J_}Wgj#6S%@`ID6E{FF`!AYR+r~tO*#Uh$x?$RCnvwo1s5#n zi`Tt&#eQX3VY!$kL;6uyakvwLVjBKIk|gNXeH?|2@+8U78Ezq2f3Ds4t+oi}jj5IucY5#k^bsyXL%oJ<-h4ip0c=voq5g4gR&& ztSo^r%!_+>Wi1AV0qzAU>yt;5dji)vUc;j>3CShb{B_Jwc2_(R6ePPR8O2 zGFxrW#;hBxxH5f;T!{)~XGDz;44YzvfTTqPJ8*706DU*nwYWKp9l;_6@eEip04Kcd z|MZyWEwK&<4Va0_Kq|+-yP(?i=+hYXosICelU3+ctM&;dmWk&>zRFv*`7SXh$Wg1) zV)fae(x(ssI0*(=ds(1rl%(n?*SReEcUkH)-5Z^YlF$CQ$JyMt=g}NFg?Tz@xsZY0 za(|`|6|q|U!M$mPM&DNH?fWG~+8<|pYD0_XB=E)PLnZ6(3E}cyT%z6~bl0m4h8-yD_6=an?=Xl>Hkk<-tIhig8~D7 z1WEAG&HquE>on}SzpH%S>~hg?H7BNo+p83EPRAD(a9Bdb9KXNgwbjUOr}X1x3d0Mf z21t#;$cMRyK@3YzY9_{8n%?{TbQqp z>~fi9qs5pRkjIA(WF}xYsR5JWLPP zwM&%L<_8?EjF0zR-9j>ynFfs6hD7FTQb5A-Ztl}TuVp5oIpxRbQ)D~D`#g2ct;icB zoh^Y+QzrTgsHiL`d8cE=%Q$K_9{(N9nc5zE(>^9zmPo7QNgWZv-3o&H*xVnAR-iby zYpgUyuVN@?FD{`RfC6z+91A@78&P^ZuhC_9EDp)eu+J7_;6VM8;{DGjjm?3L(7pM; zOtnE%F6=!uIs)pQqo!-#vqMTunwXA1{YDDqr_BU&NL@1aZm&L;yu^{?#A$Cu9aEkI zzvyEC`d-gK5VEzGf%V%9rrVTIr>TxaZ}b^uURB)`hF$;muW?j6aHAFTHmw}$X3Ixg zSM>xDvc$&owVxCH^D_DpN6djN5>4<2F|;NrM7n!HYsGyp;5#McBw4886w+HqDIdNY z@UZdG*YxeX`C$^n;U4Ab2|&O8YE1V4ZlB>q0!pf7dEWSjnz}sMSzPJroc01QE$fIo z3|CIg-?7*G({5MA)fonO<#~F(cIV_>HDW|@b|#mz`0a=@>#;e(uy%xR-BwnC4Nra1 zdH>lBrZDJW@F3iNV-8HAi#DDaZCe@fQ2BnE>q)ut*&j}>N4sTPM{ggYYN9}%mz)3w z0?-4^_mR}sKfe9#Uo)_&+3*_`{@g6Bsy6FzA8Am*3XM3_$prvJ$kb-do{tFyPzVM{ zh&z%BDy)vBIXI$OmwaL?+a>bY%duGk4ljO1<<{%sks7b9U;1yKdUQMeCgb@u zBQIck!?!eN=C8TlxNZzg1X|L0B@sYD3%v?OzEG|L%oVd?4R;PQUE#30?GND)KRMHgc+*AMZN9!W&H(X zBZwot{n?eFwBWyHp8g2Ux~U1MLZEmfMntl?cH1Pc&+&To5q>y-g&O@VHH+MIR5G{6 zXe(tvy1;Ce#h$gF@kep>hWl;x{uq~YC|a1626=)MZRUc--efKhO3vmY4ZylhjVj5M zVE2Xtv&@w0cpeF_131Te6Y(*o1qUTskV!n0ni$&2X`+&SveDKi+-9+%HBv^$+97)S z)n@iCGuzZpBk00GvG%8Ay`dW|EzB>3kLuqNqyN0DBz{m51~ehp>ec1dI44D1`{5H~8C}ilF6OO+!l&$ToGjcN==c zh*!JTving+H5X%KEc+vtw$W@-bS77HNeWa4@l)7S3oS7az4|&O2HBmilZ(2Ri^ro? zHMmz@tTu}yA`Bc_I~OFS&0La_Y*qZ)4?5|R>ewMgZ06O{Y!3(qT}Vl@^)mQ(53%VozLf8u=sA+_vC1xvAZ}lx~&o$%J*NfLYq6b z=Xce&lPE+p5l`zEafYjE3j`k%Ulq+x!%%O30UNwp{YldDQ(SdKnNpRyf3^EL^Xu8m z1p}{d1N=RIuiP#@E^crO`0;Kl2ydQ7Qyx=l@GSmBrIv1eJy2-<@9N0;E7_6Xc|lqa*L8OrVwCed?9jO; zxxqJ!r;mX5j*orCHrat+r5AqP?f*^QpN2K`vJ!_6vzCDR48rwWsW7b?o zoTuVA=e`Om8jwVGUO8~Ah?Yh~vb=ORk5x39M&Y)2#da$S{8O&E&Zg=_os6ooZyG2i z6$%L)T7SagU0sb-9k3`RPlyM1a>Brvu(Qpke?jeO3kX7l zQr?2!DT|AQ*_|y%=+j^JQD=CZ$kVFK@lxw*Z_pV%3{}(v6$&F;LWN} z%Y}e7(}~yqyhGLWKju)7(#v5RIW_&V)PWc9#NO^>VD@u3Hy8fIp(dMsEgx#*`SdtD zP@UbJ^7I@y_^an*arIu|CMQphL`bjaY2lH&>#Zh21|NmAH^qLlUo7i-C$DFIWoBl2 zU-kD~{OOzck8y3svFjL;d!^f+l2cfP$BeupD&xmY1w7#bp#Pw45{Of{c4@S1=PNiBV$oy@$QUohenu@dU-*^)epVL97 zoB4khWHC>E7M))LHhKmX_yJJ75C(U33EB)%ceq!!W%Sz7@)+(W75FF-1pqU*n}&xd z;!GemyX%Ch0ySJ@*mF4}OuR_*f8RS^wnTN%f-DpNuTTLC0Gjl<0W$hi4*vHi+V{U6 zVb8yAcSvYFTij*ogk2f<+SP%|BV|@PHLV5`84j%)a?x4A^&Um_iq9`lWP7*InVFfa zgIMBpSdnjUZ)}YDr#1O?HA0ISY!cNUO&VKp2VbpXLi>#B7NhFsWs>nM{^AJ`#f~J= z$WmfJ>hE)$C@MO-<4V|oeISgAf&KCEc39SAq1C8y#Mz2^*!4d|G3DapRx$^4=$M#E zN6#e-I;8tM8258)B8BhZKl>P=9joi#*19_EucTdY5n6QC&0W&XGPW_a82cm&nwObV zY`}j`QJ_RbgI$U-e{sq;wY*9^jB^>EwFCe`@=1#|g zevmI&#!N?tVCoiutWA#?Wdfg}2#;+rehF)KLT=7PhBEP}T{&ESVJQ3>7PuPf%i&T# z6#e`UvLrj5Fa{km6t3Edaw{@v-8wGS6S$``Jt_T9HyUpd+wg3O7F1qc9c@;}&D*9% zKQT7;dQ*L4_6xYfTU%5_frlLH<&gzUguK$zJ!@R>DF)>yafJrNl;{5BUMSD5tr5MO z*rHidY4wZf|CN@RE<$2)TeH8ra6HlX{AL0jNQ(p|hU;c-ZXWB^m{3?=T3Y(QFSHwV z@YSQJkoHE9C6XKfm2a7eA&w42^2w&o5-pvfrlDrVDx{^1BnM%E0tdo3St^?%f6b1< zxwDajp_^mPZKSH^OUp_cioVM-pDg;?VNcvhyUcL*Q9~o}Pvpz08?ZMBfN1xQhax@q zpDjGez~r&SdGy~6yf@r5>qdxiT&PWFgXP2!{%T!$y^{|*r)V&n{R@eGTHBVesKtcF z8VC#iGmM7>3<(5AOWRJVMB^D!8@3V-;C&4ujU=Z?i29*xG;l1fdO(H8iLJ~1P^zGE zHPMZznuxW%leqygof4eco!tG&zP{`J{?MUW9EKOHF!|>>>#xsO;k9GKWU)$|eLQR1 zY;I;Znf5(XFV&B84|%0lo=dvKqeKfTwt;W%CH!92{JQG1Y+lzgZiXWT&4H2P$V^v} zu;#~rvr^Y1>ho^*%qNtXOg{`0#ue*BUOD*y0Sv@|)NKye26Ba2wuiK~9@c7>pa$1$wH%Vs2Clb^}I0^## zxpxP{ulKJ)rskpwX(P!Cmy-kxy|%l8wJ~q7Fer`BF3uV0==r^FipLIZkC7E*Qr=GU zE*CjlT3=tX$pY@{-vwk=u~c-hAerNE9m-;j&9&5q=`iiqzAq7&iEd@1rxu(1?|&x0 zz%K*{`ETe=lW?jN-JVd7XRs?UCuI`GIWSwg@}$YI-#W6UXD8~aI`h(_VoHq?37bef zOb3VX$262Z937Z2rF8IQiq41?ky&T%{Wp%dyW?)Rp{=J=e_xZvaQ;K1ASbz?s@f)l z(_Zh-MRsb{ibn(Cb$8(6{uON5L{78C>P9OVM$zNGS+vACMaX8SSj2GNA`A7x_pxa- zcd%$b*NfverNL!)0MA4jOZ>;)^Y3-@OAnXmo{rY$xWQkECXzMXN+xD0eQSDJYW9$9 zl$NLY#H)nDNCOu|Rek;RgbuqdGN{{h85tQz_w0@OOPErnxwCpLN;YF(L|(=?STf1yjhFK+yjlgO&U9BNWH+^O)OTsZPX7 zR0tnh)%o?CbA|j@7>oEcS&cb7TC&c51sawrT^SkARm8w`(INy=$TyYo=d8_HJ*V#$ zvYXUQrZTww ze0S+$8DDSStIfc-)vm#hGIo{wDUvUSpH{vI1t|JQt6dyETTD6fakUwc?f3Y-idgHZ z?DK7^Xum01qApnpqvGzf#be{z343uTug%QIfxhFUOLNtkXR!4jVnJwpTCSm#XD1Mv z3`kl4PK=i%Ra;$xGts?h{{4S?JIk&%{x8}GE5U;mC>q?|o#3toiWhfxhvLQEt+*D7 zdvUko?k+#v;pV^Yx^Lm;>11XyGb`V9=A6Ahd(CXDe!gm>F;P?hfB6NcukZ2aKwWNp zY%GKOmzl#~OfD9a*?bRYYppI930UK))rd%_$fnk8F#T9;K_>Jm-rn;dypbXZk?5Lb z6eOrzS&m^(O?5tq$<18aR<8p93kaM|*6uo$iNgGFJYTipv9*wNuG0nrRLbW7eUxf+ z{h{=9vU2lSV7kvg!GYF|?99y8hX-m|eRziT_1?RcaNy2Am(w=2Z*~xE&;U_@-J2%M zM99@US{?gi5XL0y%2mzLOi@67Lp9$s)*9hPya1& zUQsl*@Tusm@bvS9y1Y}^_fn+x8P@MzpSqq)Hx2s}D5TBT%0)a@;lL76{jjM20ohQc z6M3g7P=7Fn%MgXpYLfM6qXTly_(&j@b=seqbl}a~A7acY6AIR`(W>>uDCu*x$no@4 z8C|#SCsIcBm^&x6u+<_#fzzjVI*gwibz(rlAPUFf-$a4&l)w-WeBiEENPb|yHo6#) zECdLH3P&_V0q;lz8{vfN2i|=Qg&APA_4Vy&X?e`!@A}^RDt&b)^yW`(P`hZ$ZTRbt z`Lc_bIWuoQ8-nDb7_x4e&icJq5BodM7w8FC z7bTWr!jPc5b78vw`v3eDy%a)8L)P74$$^qhgUA17@eH{R_g@v@I6^+KV0{fz@+y%z zb+-wy3YO7x8r@y@ojErBO7510JLq!^3f?pPTF1Awj*hFU3o1oUT#DXyr1j}XsA~VF zgt;{JStOW*sZMy0`W8slM*fVsk)I2A2f5Bz`6Jx2mggmmLK>Q9B0cU4?!1rKlNSv6TK)(AQ;b;?~N#g^(faFVL71axy8EL;OQ(B z)H@P6GIf9jjXh5LhY9?I8N!I2`Fn*0cdLE@6&zA!W_jjoFpEM;o;4xN@o^(r3Li2p zyduJBAMR*wbM)FAh>W1ed^zw z-)8EAFA7cRaU@^-{DI&{>0i?}#7=6jB5GQGFp}ax)nSf(GqMnly>L|A->BNboC1Fk z)6kKj)wuf;T!ED=vj+*d-{&j|jGo&}uy+FuJMI~0)J+rlJb}Y_lv)1*;XvIy$9LZZs1kC^DjRp?s zFtfyg0KrAR%vym?aTu*uuByKbn$vd6g8t5+SUHKT9ut)I6_*I;rcL1mMjTQP4nc*q z&J@2EGIH8FEV`Fi1@9vPJ_f3wSx(~re58k{nfXBwnSarXyE#@dA3QyIe)r3j{6-z! zot^FH8Ks*tlS*#xi#&WwJ&!H?E3`e+Dh@B{7$;xV06i*q3F_R@L={cte>k(N>*lNC zVr?IfLeHTDGB38>37QupjcC}MYKNWyxeSR2kh3Bx+Df)s-S5hBVHryeVk-sSh4SL?xA)m=sc1VN<}t zsT3tg$pQc&WtGK2n6v{`H|5eK^>SE;W>iaON#gp|?n)I}QR__wVI|CxAv34=To}<~ zW+AQBiup6{oZMJgDH^`a0!c2$Wu0$l>dM`iX;`QAv99-b%O$YZ;>i&q>Lzb~yBol2 zELhO*yUyoXc{}|dqvKB%TT5HXDAVt$2j~U#g|!#j-y}`!4Y*@X^rn~B?71bR=4yP3 zIiR4%%u7pqYSS-lNMYgO(&2-^U3OO-Ftwu9rRaM%?}9|qve&VLlU6D( z{QXl)yD)MpNj}}Iw#E`mEQlx{$;Z6<^Ip2&>R7`HFhwWmyJK1VGD+_oG68(g{%_l5 zcO05{DU+>^Uufq)K6PGKry1f(P-mdh1HtEw013czn$A8#m^dxOW>(fCSk z8CIcByIRs}T2v^VF%x$5ew>kTf$6h%r|U#__ddl4va0r)Wyz6(CI=-Os_Gi>+3ypM z=<{4z^I?|Y$!4Af?*cUnJT+k-6Zvpz^2~lw<Yit;J?W zC)&#wtv7f8QHNEp23CaE=RUeIVn%3MvCA_9c`JxPqc6;$vf2^|dA?`uK zBaa*3%;Aj>aUUQji%$#yLG7UDi2}i%0M&K8-QC=Ve#O1Y5Y=A_E+^nJY&5jfOT~Qg z30v2vkscsG(n;`X*pxa6p+Hm5tO`o<0VDYkhm2~jvSj^X{byuXo1s$taOp*pADKf$ z$|E6#1Ux$`@!-eTclg@MO8?i{yE#Tni-<2Zp6FquMBi$pt?}|KYDTU7iya-m>#gh9 z-XkqtvW8~1fPmW_A#1%JHsPSV+TYlhUjp+<|{po$t2B2 z*grb!%K6w5Rst=YKPFA&BAds4xoXB2iw*xg+iE|Y` zg*inM#a{I4ii7xw_3!{*OiH!gHD-0=#0VW5t~3L=qW5ZYX+A4nctP{~HBYhTh6!4) z6GxWXPVMSCDJ8w~+-JN&!M9D8tVFJT8p7R_0=uCh(~A-k3_+KQuHR$_$Ki%@W07{p zSsKsdcC>F{h1#2rV+#}$pSYGDM+*8w@XJS81C(IGU@za#iCcru>gpc1uGBRVE{Gev zAVUwyQH5AKahG3iFzuCx*ZnND`FOsv{BF$g|4@;Zjje0A&6oQWHYAjr`ex^uy0ma` z74A-A9ibe}aq{(tI2``vik>$$3rpRztG>AuJ>U${p;}Q!-oCQhRY|8guYQk4Uj9J? z3QQCQZ1_K!>03)pEmwd-wZ#*QF1NZ2_)Q5@D?)08ujH`cY4)#o-6#^e!i3g2 zPl<3xBNp?#nOcjA4#&klBDcZCEGFPCYgre;a8e}*>2aj z(qL%H<~JrqrlJxFPEWN-zeqYa>d>Je=nEY5#Z z0MZvbwvV*CDn2ZxQq8C;eH%W8hXkS#B=y~fAlYPO9H7)s!gZEM<1kS;7i&JoGabGF zv76;jCTeGO%I7FRjloICoJYr-}c@bBicl^^^IGYbHXcM;IcXI*cKcwYN z%3_i7&5Lk-XQQHtMDopVuKwkbd{Su%vC2@zS`90uAS5(sNKhNF z)A1Fsb2NX^1~mZy;NQAZ)iVuw-u2*~O_yLK0|0o#Qg8;F(h;qdvX7c>N%=KW(i1Xs za|j8JtkAZsybzL7W1Zw*uCU!E8cPYnR&KYYg1`ejj`e36x_PZGtCM|#xWl^6ok}wG zEh@z-k-khX^sD2Y#O?PaOagPR59YBa zve+niK)-nk>H?{t?`u_BAq=drE}<1|$E9?4HeuzQ#pha`#PB*X#aUm|@-_c_YuE9U z`zNnhFu4L1LV2LsE6f*w+^L~Gy{FK3_&b%mL`4t|1&2v8Yq^suO`7N9t z?k{MlZXeOZ!`*d}WNG7~sJJ9Om^X=ztj!Y?v>rycRyKZrc&ET5`1xa9+Jm%$__Fq* zwD9v3UE4=E29;Fh&x6T!FMmCsDR=Q4H{deMfr5Vuf}S!`t|mHaws>!<(@%DADa2y2 zYZmio>-AR9!M5!C>uCJq={{17XN6VYJ;fK3Hnozd*~-Zr>^8=@;-(9kzFxlmNdHnG zX69Tr;b&YL>8S8<>Q|hffd4#&Qc@5JzX(i{EUk#c036F9gykuxvncl38aTgj&jma! z$7lV|B=m2Ne~|zH)1&(5m-Z{AsMP_RwN`#Ev=}Sdxgb3@An1mqZm9JchxD9 zI@4AUMxS=qIyf@`sTbw?ey52$2$gElj|~}$%Q+CW6^**ZonUezM1a&0#rp2SXy(d= zm;fLU{gayWAN5%m*DjK9T6Rl9-f#Ny`*HXx87DN ztCNv@3Hiq{bj^k)ca%9*OdZ^(n7e|s-7zX{Dd5$=4`5;-Uct8GEbnHKH_7v{G@TD{ZlV!G>NurKNV=tmZWe-5$Bgr>=SV znIlzR5uH%Wh*E@r`eDYR8h(Cee!4%&MyM*OY-n}py=?Fy-|++jcD&;H;aDu4-2 zm^SN2lq3=H(0q|F9s`5d|29o~@9=kE04<`5h-V86*z2A+bmV}33G$f(p4_;X1&4Rt zeLmm4WQ-^PEPf;$5WwGTUZk4Pr{vu`afs~nzIKd|gRPV{WJgLsQuhcSvYjAJ+T?r5 zmWl`@Lmgs8#aby^{HWi7)&l!91Vzp%5c+IQo&bMbQVK^@04g|gu*G$xe)TiWQ~}PR z)Lt(+4txYs`azZNol+lR_Zz~~k3-h59he@o=ip#IkM(x*?}6F$K2r!r&T8%}OdbY? z$$3>hFhSw~vQMRH!r0hj zU8|XSaBwF&Up5F+Rdyz7MQ~j{@(x-AXsAB{&aXTL7n+jvxow?rlo$BDVGcmnlO^ zXAEvH_}P>_Pl=*MGO`n0FBd-9%*~B;D4#058%skOYT*^)mGn~xx= zEr2KygyaeU=()iUvoOa!ta;RwRnm-hY*Q5m73BjE@k0P3l2Nx$i+CBF*x1~305a3D zk9+ZlFVhz}q~9^WHM8W>h~@J>c4dN)8J(-1GI4s0 z)||7@Kbbf{|LeV*J6*$CA_IT%!m1}*gsAL?B!?h0X6PTEjhD~f!>dCRquxCS)%vHu zH%-&u0g6BnEN_r_1XP_5EY-_ItqcAURc499T4y^}??a$azM9Cnginbl2Wx<${eE<2W+WJd;TGw9WlG^lrK}Iqar_g`q^XRt< zfp)UtHS?_UJq3kWw3u*z_J7g+$iUXW_&SEXUL$ItnK(3MYDUw%u&A`$*|x;nD3?Oy z&>#TkwJd8OLP&s1_j$|dD#1s188UdtGNJrOS;=hw5CEXZxX5e}kbb+q6!F}Zaj@~2 zVlAKB|7^M=NDYcmQ^$tWbU7|9b&2|1LMybdcu^(M*U&^$r7kJCOr$sy$SEbsOHG4< zSLJxOm{WGHG{F$75(OA~#4p3bu21LWI$S8);}x)u&8y)ut<_GzTNYr&Ax@)AC4@%v z{rGBEG3?n19Kou;-sK9vKX0y!;^T8tj}UiC-{Q<->l?Z`}D(uglgdTh4sQ=Ygef`+F znFl9D*g}ll!2LBjX>oi+R%J9r4)YKkZ6%fA(NJ4hZq~n+^5;Nc*}J~Dbp{TY!px?s zEHj6xR=iTAE((PE8z_gzx1g#2Zy`(jcL(hV5QuAIbBUi0z$#WPRnOW{ps(xOmK#$* zRKaCPXB3$~LhIf0q^Oyz*5kh1YMT9ymy?;e_keIy|F6T|!_+r;=%VX%Ll+|@6`ij< zd9TQbEIBLZ%dHnqot4SN{7fqXG7*A!1Ec`wRDrs9djGnps1z2!>fzuanqV|NAW3J} zuy;?0m+HVkeCKFIN9PCkQsgv!Ot6z%vupYc&+y1X8#;&G0TL?Z&?=QK`Rw3yU! z_e!4DHhPN}AM(mAc^;7FB1hQxp%x z)rlEjyYLFCVun1*tgXADzf#2zwsy--+jG6&L4m5Dnzy?g5#Y6GA}NE!u76Wg!WAHg#3zeqIB{W;o^Nkjwt__ z@RwHnEpnsb;|V+RHg{U;X29ZvR=FkXdPU&>(*igqG_j;uaobIiAEY$+f920<>|}_0 zv{h)xS`?Kx9a)V)p_Xqo-bFV~;B;$ya=rYdB+E9j^Q{`JpyS`A5T2reT|)~9yqs-kDEbc zr5|H0Gqp&$yV|)lNY{DQcKkS7tOeSEA4%b#Lm>?+w2xsrQ(EXl>_j~>L@#kF!vijH z4wQmJ^@3zbJ6WrtHWr#Z&-)8f-RP`Dcw3K))A6E|e5DBiHEyB_GLKxYhgq;n@rFZ3 z?^%xD)%SUpVZQT%A2GiCsoXMboqIumHR&2xc-r|LC-44kO6P{EKs4<_C|9WDh#`A& z%3wY%hP4&+^}2QCam`*|Oh1oi9(N~!8U4Sf*~|`0j%P;V$L!x_EMMqcGlb65gzkS< zys)pl4*?CbBK5&W-v@t=Wj>@#IDF=4x5fUjc+zT91%k(Za}JDa{}2N~x)-OMZY>I< zyFgF@#D54DAt*t|p_v7_=0E2V!G%_X0$kha1fpEx>47G*1Uq^rpLx(&7+;(ji3>}{ z#AD4?rZng07Z)}1td0n7m#h6h`-fsfy&J~C?xk7#(-y*^Xa5cN&s)PmjvgNWQmy<( zf5?1T{DqGz-o=OfN{dn))mXf@BsFgh_&~1(6Yg)!h*lIsTvuO1QWG zFoPVt7u=+bW65C0c!N|c zf!c(*`9{zF!7>OEW^S4Jbd7Se312fA+LN1sAoH~eo*xy z*j7+JB>zQr-c<`%zs72nUtz-nQ$o6YvjKN8vHyk1NdFM(d06@5@kHRu5Wz^77 zn2XF7Xu;$b&Y(1xOZk1q4A(p54^pXm(=6ChnD|F|Ifm2~{!9-7oRx zv|+gfTquCRDUsXhNsgx2gN3H1_n%=Vn&ud5VUE_$W%ss2w*q0;9BZKtM!PdYyBz(d z-@*#hhxa(6U)X#4Aut9x%YoRhzB|Bi{V{?E>xFDdu~dkC7+y)iDqtBE5U3sy{XN zWtgYK{C4aX2I&);`qjpP7^7xo>tU|$g2;oOOpQMD)#ruV&z831t`0HnecwYlPVCJO z!yn_8bjiDdr8nK{!R;IAxd5uT|M%-e*pAa9z(3FH`~loq%E^~`413tv-0NS64SePE zKHQwy{NATiB>L9Z!dGX6Cq*5ImjPsxWEkGz{!d#URnId&#EI>cni(ACsrCE^qdHeBpq+e_>C%YG8}J}@22+3Z}jBVB2_$Z1G!c}~S+p!3)u z7Rh61u3C5F94-%dc-@r)90juU|Bc1=d6ZoFYeLG?cw77Y#37_BY$`WL6$xdI<16ir z>uRp@tEq6(u>Ea#3G~|C?M^*a%L~{U8sZiX$Y1wZ&lIrNSA_snx*gua!*!5rKkhwh zf4;B(2}qUd-+1boT8<^wRdP>=IwIZZ^d2g~80WsP6L~E++a;|ehJ_G(tWjXt`kY6G zftzWqHg*PnVnU$VP9G0%)vBR99|t}tdiD;(e6N!N4jFd+*i#>MR_87$>hU4znhYd_ zc!Ez^4i4UjF(eG{k2h1zRXztH;*@HGLe3^GD`Y57|pvD3SlCrs;agiL<8hgrJaTe&;`Wgzb~N zrcGS=Pvm;1_P+BmSr=PmX8i^F9Fq?m{10OM1aVt-BQ5ZTB1;_Tp(x!Rtkx2LhhsRA zm+$k4wUV38KFi?_7b~wb%6S3v9=36h2O$;2rwmyuYN_w6*1gxGCUK)^#{r(V-IV0U zmSt1B7Cc?=QLOB}$6_CEOUfRdFZV4&o2;M~zcqHFE9Hh{JHBNmwXBP7vyt~|(k!N2 z($2?H6Vlp$wK$rWw)k1uqXtjE5TF+wvr1gJx0v@5fPZdNv$DyWETpY}AHErfeX?Zu zzIg4iv9fjFrZ~VOE3HgqBl|WnwM&yZDvv>;%zaGA5F4`;Jk|BI_%}+~om3e2&(?c* zcP9|Ag#qsbdbB+4y7gSPnd&yjrV(*6oczC!l!J$y`(UnI9Cl;E~C+ zGoD4FLws{!xS54T+4XuhH2^Qnx72mDtN6qHufxZq?ZnH}0A+j;9ZN9mG8;ogF(Et8t7py zNkm;m!0BYe{EDDT0dtvuFT? z+fLwd6s6mm@9}#YO-1KZ8Sh(|Z&xaC$OT$Li%dD;)@A(%gnpK(O0-5_9l9P*dpz;*P@`@x+UP`rB{-=$hWYZ0XC6qOE=Du`Y_h29UM@cV z*7FXnm;{CL4MyI3YiZ>E{%8=-J@VkaX!&6N0kyc9gl6ziosQgmm;7B`MCK~ruxsTZ$yb9HW-q}1n+>w^d_ zIYjoNNxqLe_;qh`mw{^W31SREM?@f6N8{A>EJwGJ)=FG1!Q?mZe~BHY;Ghw-`1Qf=FL-Z_rMD2ON8Y{ht#`n{JO7Iu+>;!LZ$^Y3BM zPdjcXod4M>RE5&-@esr0;wtc8+biDG%sCC#%}p`v-^WLwq^e@)MQPr9W2C*lj}fcG z_S&W2;X4N+1|HM!L##(C7aNPv&1ovRSgoPHK!twItf{BMdaV;{@>C~IP$9gP&PA!V_N`BZdD4aWy>Cwok znJcb(ymFgOYeq9KgT-5(FG86=d(7V|WvQ8rvJz-~nhUvar6G+1qQ#9l*Z-ozD?IS_ z_AzsAWLq(^;!Sz@fmis$FVk{=q$1X;oTTHDKSopD*ztF*NmNYRVd~CN10Tit`O}R& zGF}z?lXqt%3TpO0;RVOv#6DNYhIll`QsNa)%L(WDy9}vQq?a{>Zo4N{xZT=RUjA9< zZ+IV-I~p#wwy(EIv|X5bKCH9=z<)$6T37`}`OU{mx~HQ!$e8{4i{I~_{J@`wH7G?p z#)O)VFCEa@_#z0p++4Qb??}%C+!riPy#v+qG5W`@MFj>5fsir9#|b>S)+ep;$fN<);sVL77)G%;Z3Dgc*05zc$(Wb~rgjy!{Xg^HTyx;7<&&?r3hfD$j?YqJBuRdFEJQ-#6 zjSW*$0*ofFzy7_Cf)ZAgcE{h*E>nqxqhxPkp-LXw(lKdrVf_DE&xI30`dKC70pMse zw&;5VU*V`6^gVf6j}AndqOBGoJ@ZPQ3tPfAPy0$Ko^ zJ0Tz?ZpjpY>QND8d*mOd2QiweH(eP6o{andaQ2bI%cwT^`8rM}_MXIj)G&0Q!Bwe* zz>pXP9(ti~@e(6@!flYDIH3X&09kdFX@?0CV&oybfxGzI58lW5KgiksXB(v~6cSt6 zchAb2^sV=@aG3(aMxZ0`MOX86JoGhQUY!(;H;l^^92V2$ks`wa0LtOM@A(Q8p8~0Y zv)1;{kH4xL-D3Pd@21C#;6tFd5F7Oo2?@sQGaPT&ukS85ZO#9~I`RhmtpN==S^Gg$ zD|V_64XyroW#k9wjHopNuYg0qslBaOCS4_sTqkuher7HqtoQv4yb0znfF6VrbbWlW zetl!DD$y{~rQ7#hnHUI=6Mio4|s@?pxtBEM1L}uVkoc zJfkv?_}=aj1t5%ANFRO=D1Kr!-rQeYmFg?fDb<6ehJj|86h8p zIG@d>3CU^EB?d}xOOB_qtrjwjXK(Ous83{rWJt~AqGH0Z%=ALcm)Nt@()c+|Gtym? zoF(OSyydL1kN{?j^i|bg01|yTdUFo0>Nio5Rg|QVK3=Olj z3p5xRu%QR4VJGOSR3&b~yue2(Xnv}0VYas}(<4z+sikb9x_(tM~gK91dhmN z(G60j$?7erx~ZX?5dIwdmYh#56Uoj@$Hc~++4DW%<(mMAhPtRquPNTltC5?WqLfm0 zBHPaTi$@6i_4SaCwE*MAJkKTszH|;LoP3Kk6|n~5pqKv3Dz zTyND<0p{ZMzC1!i0FN<~u0bdzyQ|K-2CqKhrqzFot~TF1k4pzOzFW7kYfc1Sk9*uMC;PNBZr zcg6QJ>9&_lxj(Z(1}7;W0n#c}#@>It2ZC*0{iPY@)AlS=Oi#rmL`Rnk@O8L^j*{fh znzke6da0~tuPY8j0gMKn{Q|<7$!Qcu9ryXJ19#uZi9pDb-@k|bX&;Ep*DR(ao0=uj zUnneJY2(`LRvv#0=KO2{ie+2DFW_Of2wR?pY;^*k2dv-M z_)~sV<7ZhHSl8Iv+FU6X2a%T5tnLMXHO?@3-*zTil^B5}E`ftSvNnG7?&Kk7OeFEz zuc8dlvM8m(ZV)0<){Q5aAnQ$!{}%rl5$3ldpRq!MiKeo>j;Y@tK5jZb1{REE{vVmi zmW{TarsO;VIoAr$A(&r~O4;yX`btgvUER zd3QtBldM79?&#my%f%ctjvAbttW>cK$i7mQm=6+CIGz!@z@1b^8t+&}^~t~l)wvE6 z=Fica4Q!HR={${3)V0VkqQgV5B7xwIQ}-m}3~iZNaJNW59S$gFs~c;j~hWSnS|# z8c~LMYa%CuI7Fz-o17d6RaB1_2Lz~7DwQVJLULm6ha^Bdr>cL+#;%IAA;y6v_ysas zPOShsO&Li5AQkKGJ( z6bes{xkX#cLJN`)g@yg$s1p;SO^t~a1fWWY2=>Pq*rpFnE(lH+?N@;|PmLgAdXxol z22p*J0d7k4vB=Yb$xuCnBXjA`WZGg_8Mcl<%96{u@L;eSIWCqqD+o)zA0{tcDnyQ1 z3;@V2{uX$JN*)?-<`@)@{7DkaY54GfEC?GGmQ9B2v(fK|=^=}L1Re{*d21?Tt2h?2 z6gm9Q@w~7Aa#R{8R7ejiW546@KV}Ef8Wj{E5ODnz%$~uEgDj>;M#)y%7l~4gT+WIQ zL>?%#B9MTvZ(ThS7*uP8eDr6km}0ZzOOLO(qf~%^QR$9<4$C37}E{=o2s3M)iym zgT>liBgxaK!2#g|A`0;n`^CXJBu z&(FV?Z_@m@E7#4)56w|pU)HAkSk@XpeE9l%L!Nkctk;h$u&5?=U?E4uq-)UN>7-B) z#C5sP!r%MK1_-|X#!xxg2K!p2^%Dd!-z-TrV+_5K5`y&JZ`7P zyST|a{yeB_wS7dv0TkxuL4>uBrPdhs*A>Y`vw6V;)+kRTz2Dcdf) z`aV7vA0sw7)P;rAN%a|>mJFYF!cizHWMxSYydZ_2qD0&SDUNQwAg)@&}z6e4%4-KvF}`lC4)IGQYm+-Ydo zq%7G`6{68dmYWY1ZbTv0^oNZX>)-eXB6bViEaJ|Y1(xmSA{V;esHZJte!#Vl($A?n z$$_=H{BDkGkU}+*b5l~>D;Si@beiuFt zZ&cs;O(yqi!~UrGe#1%=sSZ*pUw&xDOCMHnZ*ZEL`J!%oGAHx!KARJ4sqW`>969)R zZ!TS(W{O#t9|MAay)yccnp;JxFe-CgDeT+k5xgDILaS&vR-TimX{i`#fsrO{Uer!4 z#h9wvUhFmWw_>IL;Lf`#>bM*8Ih9td!8km+fI)+x7LI^2;Y07i5n2*YGqy zu!l>yi4}SCU5HnkbyimURf$=afme+~(M{hu%~#hC!eVG_LY&*)&yceLExWhSCcUt6F#a+eBh9F%g^mO$mfwuCt&apk0H9?#i1`5~7HmiKvgf{P5z# zdkF{96($8-PRjfp@X5p9+4OiPc%kY3+@XUNw~>`6k>9xxN*#!08kJX`Vjaon=96E0 z-KZO)#X39P=*32_?#8p^aDkKITu+4JJL zC0P|Z_~ke}pF?XyQmi_ayXelP%s@mlT=2Z>=f8c&Q&SRtB2q&_C-+bIW1RH#OB>}3 zL2m)ak73HKl33Epki$Pr_wElyvzEvI@S zT$VR0Wu7W&Y5HndF;7N#K3|pcf$j^w_xcL|6HuRg69a6`*T(2bl^jfsX%ft;D_TeG z79+=Ch0BmdC@Mz$jNGC93>AdXg8A4+@Uw`ie)CHgtfeRCT4=-r00Hr-!$qR9@wb(4vdH zn4O!Ooei9N9V%6I9}?2S$2Y>s((W_?yKv~GRBw`^wUO}wEJutm&#&aif z%25)qZ#%t|WwWLwRNB=W>9mcaWOzL&^1o60rsI<>xpZO+Ir*Wu2|4$MUT(7l%JG<} ziQodGk@JW7^Y=2SP}5|tKchh=Ussri%CoCApfM#3>E;q8q=#^8{rx6DSXkm$C3>HZ z*Xl%V$HR&$)=xP`NAx+2SY^J~Ai!8SEi!aA`rkjM48jTn0@mFbdE~?>o8eu;CRFCm z!%_f1T%!p7(f{Mt;f{c3&1o^Jlq3LB#`$jDNDl(S=9UtC!e~|IQhH3ozX4;N?wHJ5q#`#$J)KXt0e zoFvwl2+$(kr;<2)OHLS>6^oMeSohpTT;-0hC?b^P1w`y>X9f|8tD*)xFg16yyZsQ& zas8=QU){tm6LnY<5kn=tA@H?@{cpF^X{p!Z`u&eQk^f3Ro`~r}Mi5X+PHFr)(W=dL zEnYAuqvdKmlw&)d_b$JlEO8;PNf#s+t&LVNlxC2GOsZKO`}{vpy0hsfeWFJgVWq_F;tFX(|{}A zD5#C^DXp)5Ef_)4XEb)iH1Toi$bRgr!Cd(N>ZAa6ieI~*>cq*Qji_bO`1lBKpN~H* wCw(DMqu`0rTi@GxkP!$F2 Date: Tue, 11 Sep 2012 12:39:10 -0700 Subject: [PATCH 287/502] bah --- v3/css/index.css | 3 ++- v3/index.html | 3 +-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index e629d001b..e9ab8d514 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -109,8 +109,9 @@ div#sharePane { } div#detailsPane { - margin-top: 15px; + margin-top: 0px; margin-left: 5px; + border: 0px; /* NO BORDER! */ } table#embedShareTable { diff --git a/v3/index.html b/v3/index.html index 66d57f040..bcfbcd4cb 100644 --- a/v3/index.html +++ b/v3/index.html @@ -170,9 +170,8 @@

Share visualizations online

-

More Details

-

+More details:

    From 0aa81340d47d6d9b3035d56fbc9846c812d52e3a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 13:00:33 -0700 Subject: [PATCH 288/502] picky --- v3/css/index.css | 10 +++++++--- v3/index.html | 46 ++++++++++++++++++++++++++-------------------- v3/tutor.html | 2 +- 3 files changed, 34 insertions(+), 24 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index e9ab8d514..02054333e 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -100,6 +100,10 @@ div#learnPane h3 { margin-bottom: 8px; } +tt { + font-size: 85%; +} + div#embedPane { margin-right: 5px; } @@ -126,9 +130,9 @@ table#embedShareTable td { #footer { color: #666666; font-size: 9pt; - /*border-top: 1px solid #bbbbbb;*/ - padding-top: 5px; - margin-top: 10px; + border-top: 1px solid #bbbbbb; + padding-top: 0px; + margin-top: 15px; max-width: 100%; /* center align */ diff --git a/v3/index.html b/v3/index.html index bcfbcd4cb..cadcd9887 100644 --- a/v3/index.html +++ b/v3/index.html @@ -133,13 +133,6 @@

    Embed visualizations in digital textbooks and course l

    -

- - -
@@ -170,14 +163,15 @@

Share visualizations online

-

-More details: +

+More Details:

    -
  • Supports Python 2.7 - and 3.2 with limited - module imports and no file I/O +
  • Online Python Tutor supports Python 2.7 and 3.2 with limited module + imports and no file I/O
  • BSD-licensed source code available in this GitHub @@ -185,22 +179,18 @@

    Share visualizations online

  • Main technologies: Python bdb debugger - framework for backend execution trace generation, D3.js for frontend data management and visualization, jsPlumb for graphical arrow rendering, and CodeMirror for syntax highlighting. - -
  • Join our low-traffic Google Group to receive project announcements. - -
  • To report bugs, email bugs@pythontutor.com + href="http://codemirror.net/">CodeMirror for syntax highlighting
-

-
+ +
@@ -210,6 +200,22 @@

Share visualizations online

+ + + + diff --git a/v3/tutor.html b/v3/tutor.html index ce7020296..d9b0d630d 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -170,7 +170,7 @@

To report a bug, click the 'Generate URL' button, paste the URL along with a brief error description in an email, and send the email to -bugs@pythontutor.com +feedback@pythontutor.com

From f92ee2a15aa8a05a3afd06eab752dee5031bd10d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 14:28:14 -0700 Subject: [PATCH 289/502] width tweak --- v3/css/index.css | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index 02054333e..b65071189 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -7,7 +7,7 @@ body { font-family: Georgia, Palatino, Times, serif; font-size: 12pt; - max-width: 1000px; + max-width: 900px; margin-left: auto; margin-right: auto; } @@ -51,7 +51,6 @@ h2 { } div.mainBodyPane { - width: 100%; margin-left: auto; margin-right: auto; } From 7b65e547d54ae21a914975a91fdacc4a146ad467 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 14:34:42 -0700 Subject: [PATCH 290/502] tiny --- v3/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/index.html b/v3/index.html index cadcd9887..d8388e020 100644 --- a/v3/index.html +++ b/v3/index.html @@ -108,7 +108,7 @@

Start using Online Python Tutor now

-

Embed visualizations in digital textbooks and course lessons

+

Embed visualizations in digital textbooks

Using just one line of JavaScript code, you can embed an Online Python Tutor visualization within your web page. For example, the From 3616451330ea2630f647dd3d03ee0429b7a50b42 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 14:39:53 -0700 Subject: [PATCH 291/502] testing --- v3/css/index.css | 9 +++++++++ v3/index.html | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index b65071189..f6cff6493 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -126,6 +126,15 @@ table#embedShareTable td { vertical-align: top; } +table#embedShareTable td#embedPaneTd { + width: 60%; +} + +table#embedShareTable td#sharePaneTd { + width: 40%; +} + + #footer { color: #666666; font-size: 9pt; diff --git a/v3/index.html b/v3/index.html index d8388e020..0914a9997 100644 --- a/v3/index.html +++ b/v3/index.html @@ -104,7 +104,7 @@

Start using Online Python Tutor now

- +
@@ -137,7 +137,7 @@

Embed visualizations in digital textbooks

- +
From 3ebabb3ffb87ee3fca3bd4f2a0bcfe7621fb3fb5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 14:44:51 -0700 Subject: [PATCH 292/502] tiny --- v3/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/index.html b/v3/index.html index 0914a9997..1b95de58a 100644 --- a/v3/index.html +++ b/v3/index.html @@ -204,9 +204,9 @@

Share visualizations online

Join the pythontutor-users -mailing list to participate in user discussions or the low-traffic pythontutor-announce -mailing list to receive occasional announcements.

+to receive occasional announcements.

To privately report bugs, suggestions, or feature requests, email feedback@pythontutor.com

From fef9e69a636f78fefbd1e4829b896172f02a6567 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 17:06:22 -0700 Subject: [PATCH 293/502] more tweaks --- v3/css/index.css | 3 +-- v3/index.html | 47 ++++++++++++++++++++++++++--------------------- v3/tutor.html | 10 ++++++++-- 3 files changed, 35 insertions(+), 25 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index f6cff6493..39c374155 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -15,7 +15,6 @@ body { h1 { font-weight: normal; - font-size: 20pt; line-height: 1em; /* enforce single spacing so that Georgia works */ margin-top: 0px; @@ -23,7 +22,7 @@ h1 { } h2 { - font-size: 14pt; + font-size: 16pt; font-weight: normal; margin-top: 2px; diff --git a/v3/index.html b/v3/index.html index 1b95de58a..0ce42180c 100644 --- a/v3/index.html +++ b/v3/index.html @@ -31,7 +31,7 @@ -Online Python Tutor: Visually learn Python programming +Online Python Tutor: Learn programming visually @@ -58,7 +58,7 @@

Online Python Tutor

-

Visually learn Python programming

+

Learn programming visually

@@ -75,7 +75,7 @@

Learn to program in Python by writing code and visuali

Online Python Tutor allows teachers and students to write Python programs directly in the web browser, execute those programs, step -forwards and backwards through execution to view the run-time +forwards and backwards through execution to view the run-time state of data structures, and share their visualizations on the web.

Rather than simply displaying a text-based console, Online Python @@ -84,13 +84,17 @@

Learn to program in Python by writing code and visuali
-

Since its inception in January 2010, over 100,000 people have used -Online Python Tutor to understand and debug their programs. In addition, -instructors in over a dozen universities including MIT, UC Berkeley, UC -Davis, Sonoma State University, the University of Washington, the -University of Waterloo, the University of Toronto, Luther College, and -Swarthmore College have adopted it for teaching introductory computer -science courses.

+

Over 100,000 people so far have used Online Python Tutor to +understand and debug their programs, often as a supplement to textbooks, +lecture notes, and online tutorials.

+ +

In addition, instructors in over a dozen universities including MIT, +UC Berkeley, UC Davis, Sonoma State University, the University of +Washington, the University of Waterloo, the University of Toronto, +Luther College, and Swarthmore College have adopted it for teaching +introductory computer science courses. We +are seeking partnerships with educators at all grade levels; email +philip@pythontutor.com if you are interested.

@@ -123,8 +127,8 @@

Embed visualizations in digital textbooks

-These visualizations have also been embedded within two other web-based -digital Python textbook projects: How to Think Like a Computer Scientist: Interactive Edition and Computer Science Circles. @@ -147,16 +151,16 @@

Share visualizations online

URL” button and send that URL link in an email, social networking post, or forum thread. When recipients click on that link, they will see exactly what you are looking at. This is a more effective way for -students to seek assistance than simply copying-and-pasting code.

+students to seek assistance rather than simply copying-and-pasting code.

For example, clicking this -link brings you directly to step 44 of 57 in a program to find prime -numbers using the Python for-else construct.

+link brings you directly to step 44 of 57 in a program that finds +prime numbers using the Python for-else construct.

-

In the future, we plan to create an authoring environment where you -can add annotations, discussion threads, and even interactive activities -on top of your visualizations.

+

In the future, we plan to create an online authoring environment so +that you can add annotations, discussion threads, and interactive +activities on top of your visualizations.

@@ -171,7 +175,8 @@

Share visualizations online

  • Online Python Tutor supports Python 2.7 and 3.2 with limited module - imports and no file I/O + imports and no file I/O, hosted on either a CGI-capable web server or + on Google App Engine
  • BSD-licensed source code available in this GitHub @@ -179,7 +184,7 @@

    Share visualizations online

  • Main technologies: Python bdb debugger - framework for backend trace generation, D3.js for frontend data management and visualization, jsPlumb for graphical arrow rendering, and Share visualizations online href="https://groups.google.com/forum/#!forum/pythontutor-announce">pythontutor-announce to receive occasional announcements.

    -

    To privately report bugs, suggestions, or feature requests, email feedback@pythontutor.com

    +

    To privately report bugs, suggestions, or feature requests, email philip@pythontutor.com

    Copyright © 2010-2012 Philip Guo. All rights reserved.

    diff --git a/v3/tutor.html b/v3/tutor.html index d9b0d630d..ef51d79a5 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -170,16 +170,22 @@

    To report a bug, click the 'Generate URL' button, paste the URL along with a brief error description in an email, and send the email to -feedback@pythontutor.com +philip@pythontutor.com

    +

    Join the pythontutor-users +mailing list to participate in user discussions or pythontutor-announce +to receive occasional announcements.

    +

    Online Python Tutor supports Python 2.7 and Python 3.2 with limited module imports and no file I/O. It is designed for teaching programming, not -for running or debugging production code. The code is open source on GitHub.

    From 79bb63e89343da13d6eab0613faf90c75a206b53 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 17:10:40 -0700 Subject: [PATCH 294/502] minor --- v3/css/index.css | 1 + v3/index.html | 14 ++++++-------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index 39c374155..116e180e4 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -119,6 +119,7 @@ div#detailsPane { table#embedShareTable { border: 0px; width: 100%; + table-layout: fixed; /* to get IE to work */ } table#embedShareTable td { diff --git a/v3/index.html b/v3/index.html index 0ce42180c..f8e82d0d3 100644 --- a/v3/index.html +++ b/v3/index.html @@ -73,14 +73,12 @@

    Learn programming visually

    Learn to program in Python by writing code and visualizing execution

    -

    Online Python Tutor allows teachers and students to write Python -programs directly in the web browser, execute those programs, step -forwards and backwards through execution to view the run-time -state of data structures, and share their visualizations on the web.

    - -

    Rather than simply displaying a text-based console, Online Python -Tutor visualizes stack frames, variables, and heap objects. For example, -here is a recursive function that sums linked list elements:

    +

    Online Python Tutor allows teachers and students to write Python programs directly in the web +browser, execute those programs, and then step forwards and backwards +through execution to view the run-time state of data structures. For +example, here is a recursive function that sums linked list +elements:

    From e7adbfe9feab5572919a6c61d14c98a1ac8208f4 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 17:16:20 -0700 Subject: [PATCH 295/502] bah --- v3/css/index.css | 1 - 1 file changed, 1 deletion(-) diff --git a/v3/css/index.css b/v3/css/index.css index 116e180e4..39c374155 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -119,7 +119,6 @@ div#detailsPane { table#embedShareTable { border: 0px; width: 100%; - table-layout: fixed; /* to get IE to work */ } table#embedShareTable td { From 9f32258f0f74dbbeba640b61d6e0d96c1ae32da6 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 17:48:30 -0700 Subject: [PATCH 296/502] teeny --- v3/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/index.html b/v3/index.html index f8e82d0d3..8e0518acb 100644 --- a/v3/index.html +++ b/v3/index.html @@ -121,7 +121,7 @@

    Embed visualizations in digital textbooks

    - +

    From 3159470719a08514b29ef4bef6aaf5608dd21cd3 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 20:13:02 -0700 Subject: [PATCH 297/502] revamped --- v3/css/index.css | 58 ++++++++++++++++++------------------------------ v3/index.html | 44 ++++++++++++++---------------------- v3/js/index.js | 9 ++------ 3 files changed, 41 insertions(+), 70 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index 39c374155..ef22e42e6 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -7,6 +7,7 @@ body { font-family: Georgia, Palatino, Times, serif; font-size: 12pt; + max-width: 900px; margin-left: auto; margin-right: auto; @@ -15,20 +16,10 @@ body { h1 { font-weight: normal; - line-height: 1em; /* enforce single spacing so that Georgia works */ - margin-top: 0px; margin-bottom: 8px; } -h2 { - font-size: 16pt; - font-weight: normal; - - margin-top: 2px; - margin-bottom: 0px; -} - .smallH1 { font-size: 14pt; } @@ -37,16 +28,13 @@ h2 { .titlePane { margin-left: auto; margin-right: auto; - margin-bottom: 20px; + margin-bottom: 0px; text-align: center; } .titlePane h1 { - font-size: 24pt; -} - -.titlePane h2 { - margin-top: 8px; + font-size: 22pt; + margin-bottom: 5px; } div.mainBodyPane { @@ -56,25 +44,28 @@ div.mainBodyPane { div.activityPane { /* TOP RIGHT BOTTOM LEFT */ - padding: 15px 25px 5px 20px; + padding: 15px 0px /* make right padding ZERO and just right-pad 'p' */ 5px 20px; text-align: left; border: 3px solid #005583; } +div.activityPane p { + padding-right: 30px; +} + div.activityPane h1 { font-size: 22pt; margin-bottom: 20pt; } - ul { padding-left: 18px; } li { - margin-bottom: 6px; - font-size: 11pt; + margin-bottom: 8px; + font-size: 10pt; } a, @@ -88,18 +79,18 @@ div#learnPane { } div#learnPane p { - padding-right: 80px; + padding-right: 100px; } div#learnPane h3 { - font-size: 16pt; + font-size: 17pt; font-weight: normal; - margin-top: 3px; - margin-bottom: 8px; + margin-top: 5px; + margin-bottom: 10px; } tt { - font-size: 85%; + /*font-size: 85%;*/ } div#embedPane { @@ -116,20 +107,20 @@ div#detailsPane { border: 0px; /* NO BORDER! */ } -table#embedShareTable { +table.layoutTbl { border: 0px; - width: 100%; + max-width: 900px; } -table#embedShareTable td { +table.layoutTbl td { vertical-align: top; } -table#embedShareTable td#embedPaneTd { +table.layoutTbl td#embedPaneTd { width: 60%; } -table#embedShareTable td#sharePaneTd { +table.layoutTbl td#sharePaneTd { width: 40%; } @@ -139,16 +130,11 @@ table#embedShareTable td#sharePaneTd { font-size: 9pt; border-top: 1px solid #bbbbbb; padding-top: 0px; - margin-top: 15px; + margin-top: 10px; - max-width: 100%; /* center align */ margin-left: auto; margin-right: auto; font-family: verdana, arial, helvetica, sans-serif; } - - -/* necessary for CodeMirror error line highlighting to work! */ -.CodeMirror .errorLine { background: #ffff3f !important; } diff --git a/v3/index.html b/v3/index.html index 8e0518acb..165bb5c34 100644 --- a/v3/index.html +++ b/v3/index.html @@ -31,7 +31,7 @@ -Online Python Tutor: Learn programming visually +Online Python Tutor: Learn Python programming in your web browser @@ -46,9 +46,7 @@ - - @@ -56,18 +54,14 @@

    - -

    Online Python Tutor

    -

    Learn programming visually

    - +

    Online Python Tutor

    -
    - +
    - +
    +
    @@ -76,9 +70,11 @@

    Learn to program in Python by writing code and visuali

    Online Python Tutor allows teachers and students to write Python programs directly in the web browser, execute those programs, and then step forwards and backwards -through execution to view the run-time state of data structures. For -example, here is a recursive function that sums linked list -elements:

    +through execution to view the run-time state of data structures.

    + +

    For example, here is a recursive function that finds the sum of +linked list elements. Click the “Forward” button to start +stepping through execution.

    @@ -86,12 +82,12 @@

    Learn to program in Python by writing code and visuali understand and debug their programs, often as a supplement to textbooks, lecture notes, and online tutorials.

    -

    In addition, instructors in over a dozen universities including MIT, -UC Berkeley, UC Davis, Sonoma State University, the University of -Washington, the University of Waterloo, the University of Toronto, -Luther College, and Swarthmore College have adopted it for teaching -introductory computer science courses. We -are seeking partnerships with educators at all grade levels; email +

    Instructors in over a dozen universities such as MIT, UC Berkeley, UC +Davis, Sonoma State University, the University of Washington, the +University of Waterloo, the University of Toronto, Luther College, and +Swarthmore College have adopted it for teaching introductory computer +science courses. We are seeking +partnerships with educators at all grade levels; email philip@pythontutor.com if you are interested.

    @@ -100,11 +96,11 @@

    Start using Online Python Tutor now

    - -
    + @@ -218,7 +210,5 @@

    Share visualizations online

    - - diff --git a/v3/js/index.js b/v3/js/index.js index 3396929ee..c63f8febe 100644 --- a/v3/js/index.js +++ b/v3/js/index.js @@ -1,18 +1,13 @@ -var demoTrace = {"code": "myList = (1, (2, (3, None)))\n\ndef sumList(n):\n if not n:\n return 0\n else:\n return n[0] + sumList(n[1])\n\ntotal = sumList(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 1]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "n": null}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f4", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 5, "event": "return"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f3", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f2", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "sumList"], "stdout": "", "func_name": "sumList", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "sumList", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sumList_f1", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "sumList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 1], "sumList": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "sumList(n)", null]}, "line": 9, "event": "return"}]}; +var demoTrace = {"code": "myList = (1, (2, (3, None)))\n\ndef listSum(n):\n if not n:\n return 0\n else:\n return n[0]+listSum(n[1])\n\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 1]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "n": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 5, "event": "return"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "listSum", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 9, "event": "return"}]}; $(document).ready(function() { // for rounded corners $(".activityPane").corner('15px'); - var demoViz = new ExecutionVisualizer('demoViz', demoTrace, {startingInstruction: 1, - embeddedMode: true, + var demoViz = new ExecutionVisualizer('demoViz', demoTrace, {embeddedMode: true, editCodeBaseURL: 'http://pythontutor.com/'}); - // customize size a bit: - demoViz.domRoot.find('#pyCodeOutputDiv').css('max-width', '400px'); - demoViz.redrawConnectors(); // don't forget to redraw after resize! - // redraw connector arrows on window resize $(window).resize(function() { demoViz.redrawConnectors(); From d8c42de0487023f5ea986b549e93dc5681ccae69 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 23:04:45 -0700 Subject: [PATCH 298/502] one more big design push! --- v3/css/index.css | 67 +++++++++++++++++++++++++++++++++++++++++++----- v3/index.html | 30 ++++++++++++++-------- 2 files changed, 81 insertions(+), 16 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index ef22e42e6..c423b0707 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -22,8 +22,20 @@ h1 { .smallH1 { font-size: 14pt; + margin-left: -2px; } +#optLink { + font-size: 14pt; + text-decoration: none; + color: black; + font-weight: bold; +} + +#optLink:hover { + color: #3D58A2; + text-decoration: underline; +} .titlePane { margin-left: auto; @@ -74,19 +86,38 @@ a:hover { color: #3D58A2; } +#learnHeading, #embedHeading, #shareHeading { + font-family: verdana, arial, helvetica, sans-serif; + font-weight: bold; + font-size: 24pt; +} + +#learnHeading { + color: #062270; +} + div#learnPane { - margin-bottom: 10pt; + margin-top: 6pt; + margin-bottom: 8pt; + border: 5px solid #062270; } div#learnPane p { padding-right: 100px; } -div#learnPane h3 { - font-size: 17pt; +div#learnPane #startLink { + font-size: 16pt; font-weight: normal; - margin-top: 5px; - margin-bottom: 10px; + margin-top: 10px; + margin-bottom: 20px; + font-family: verdana, arial, helvetica, sans-serif; +} + +div#learnPane #startLink a { + border-bottom-style: solid; + border-bottom-width: 2px; + text-decoration: none; } tt { @@ -95,10 +126,21 @@ tt { div#embedPane { margin-right: 5px; + border: 5px solid #5a7973; +} + + +#embedHeading { + color: #5a7973; } div#sharePane { margin-left: 5px; + border: 5px solid #4284d3; +} + +#shareHeading { + color: #4284d3; } div#detailsPane { @@ -107,6 +149,19 @@ div#detailsPane { border: 0px; /* NO BORDER! */ } +#partnershipDiv { + /*background-color: #d8e1e3;*/ + background-color: #d9cdb6; + width: 60%; + padding: 8px; + margin-left: auto; + margin-right: auto; + text-align: center; + + font-size: 10pt; + font-family: Monaco, arial, sans-serif; +} + table.layoutTbl { border: 0px; max-width: 900px; @@ -130,7 +185,7 @@ table.layoutTbl td#sharePaneTd { font-size: 9pt; border-top: 1px solid #bbbbbb; padding-top: 0px; - margin-top: 10px; + margin-top: 30px; /* center align */ margin-left: auto; diff --git a/v3/index.html b/v3/index.html index 165bb5c34..8d6edf30d 100644 --- a/v3/index.html +++ b/v3/index.html @@ -53,9 +53,11 @@ +
    @@ -65,9 +67,10 @@

    Online Python Tutor

    -

    Learn to program in Python by writing code and visualizing execution

    +

    LEARN to program in Python by writing code and visualizing execution

    -

    Online Python Tutor allows teachers and students to write Online Python Tutor +enables teachers and students to write Python programs directly in the web browser, execute those programs, and then step forwards and backwards through execution to view the run-time state of data structures.

    @@ -86,13 +89,19 @@

    Learn to program in Python by writing code and visuali Davis, Sonoma State University, the University of Washington, the University of Waterloo, the University of Toronto, Luther College, and Swarthmore College have adopted it for teaching introductory computer -science courses. We are seeking -partnerships with educators at all grade levels; email -philip@pythontutor.com if you are interested.

    +science courses. +

    +

    +We are seeking partnerships with educators at all grade levels. +Please email philip@pythontutor.com if you are interested.

    -

    Start using Online Python Tutor now

    +

    + +

    @@ -106,7 +115,7 @@

    Start using Online Python Tutor now

    -

    Embed visualizations in digital textbooks

    +

    EMBED visualizations in digital textbooks

    Using just one line of JavaScript code, you can embed an Online Python Tutor visualization within your web page. For example, the @@ -138,7 +147,7 @@

    Embed visualizations in digital textbooks

    -

    Share visualizations online

    +

    SHARE visualizations online

    To share your current visualization, click the “Generate URL” button and send that URL link in an email, social networking @@ -167,8 +176,9 @@

    Share visualizations online

  • Online Python Tutor supports Python 2.7 and 3.2 with limited module - imports and no file I/O, hosted on either a CGI-capable web server or - on Google App Engine + imports and no file I/O, hosted on either a CGI-capable server or on + Google App + Engine
  • BSD-licensed source code available in this GitHub From efaab747c3f2645c1e4ebe107f4c057438a583b2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 23:15:39 -0700 Subject: [PATCH 299/502] minor --- v3/css/index.css | 2 +- v3/index.html | 12 ++++-------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index c423b0707..6ddc27098 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -76,7 +76,7 @@ ul { } li { - margin-bottom: 8px; + margin-bottom: 12px; font-size: 10pt; } diff --git a/v3/index.html b/v3/index.html index 8d6edf30d..5bb52060e 100644 --- a/v3/index.html +++ b/v3/index.html @@ -173,21 +173,17 @@

    SHARE visualizations on More Details:
      -
    • Online Python Tutor supports Python 2.7 and 3.2 with limited module +
    • Online Python Tutor supports Python 2.7 and 3.2 with limited module imports and no file I/O, hosted on either a CGI-capable server or on Google App Engine -
    • BSD-licensed source code available in this GitHub - repository +
    • BSD-licensed source code available on GitHub
    • Main technologies: Python bdb debugger - framework for backend execution trace generation, D3.js for frontend data management and + framework for execution trace generation, D3.js for data mapping and visualization, jsPlumb for graphical arrow rendering, and CodeMirror for syntax highlighting From 940fa54a9a20e3b7d699a4a05e449b476e940237 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 23:29:25 -0700 Subject: [PATCH 300/502] bah --- v3/index.html | 2 +- v3/js/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/index.html b/v3/index.html index 5bb52060e..5b62c5c29 100644 --- a/v3/index.html +++ b/v3/index.html @@ -156,7 +156,7 @@

      SHARE visualizations on students to seek assistance rather than simply copying-and-pasting code.

      For example, clicking this +href="tutor.html#code=%23+find+primes+using+a+for-else+construct%0Afor+n+in+range(2,+10)%3A%0A++++x_range+%3D+range(2,+n)%0A++++for+x+in+x_range%3A%0A++++++++if+n+%25+x+%3D%3D+0%3A%0A++++++++++++break%0A++++else%3A%0A++++++++%23+loop+fell+through+without+finding+a+factor%0A++++++++print(n)&curInstr=43&mode=visualize&cumulative_mode=false&python_version=2">this link brings you directly to step 44 of 57 in a program that finds prime numbers using the Python for-else construct.

      diff --git a/v3/js/index.js b/v3/js/index.js index c63f8febe..73c070adc 100644 --- a/v3/js/index.js +++ b/v3/js/index.js @@ -6,7 +6,7 @@ $(document).ready(function() { $(".activityPane").corner('15px'); var demoViz = new ExecutionVisualizer('demoViz', demoTrace, {embeddedMode: true, - editCodeBaseURL: 'http://pythontutor.com/'}); + editCodeBaseURL: ''}); // redraw connector arrows on window resize $(window).resize(function() { From 9f71383a67dce5fe702071b8b9f1846201556528 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 23:30:51 -0700 Subject: [PATCH 301/502] t --- v3/js/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/index.js b/v3/js/index.js index 73c070adc..c63f8febe 100644 --- a/v3/js/index.js +++ b/v3/js/index.js @@ -6,7 +6,7 @@ $(document).ready(function() { $(".activityPane").corner('15px'); var demoViz = new ExecutionVisualizer('demoViz', demoTrace, {embeddedMode: true, - editCodeBaseURL: ''}); + editCodeBaseURL: 'http://pythontutor.com/'}); // redraw connector arrows on window resize $(window).resize(function() { From 0677f8baef66d4e49898b747ee603e32c5fd10a8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 11 Sep 2012 23:31:33 -0700 Subject: [PATCH 302/502] tough --- v3/js/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/index.js b/v3/js/index.js index c63f8febe..45daad561 100644 --- a/v3/js/index.js +++ b/v3/js/index.js @@ -6,7 +6,7 @@ $(document).ready(function() { $(".activityPane").corner('15px'); var demoViz = new ExecutionVisualizer('demoViz', demoTrace, {embeddedMode: true, - editCodeBaseURL: 'http://pythontutor.com/'}); + editCodeBaseURL: 'tutor.html'}); // redraw connector arrows on window resize $(window).resize(function() { From 07a2a652afb820bfd7d9579b03bd246f545e3f91 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 00:07:36 -0700 Subject: [PATCH 303/502] more copyediting --- README | 40 ++++++++++++++++++++++++++++++++++++++-- v3/index.html | 17 +++++++++-------- 2 files changed, 47 insertions(+), 10 deletions(-) diff --git a/README b/README index fec3998f6..8401ea695 100644 --- a/README +++ b/README @@ -25,8 +25,44 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ====== v1-v2/ - Version 1 - Released on January 19, 2010 - Version 2 - Released on October 4, 2011 + Version 1 - released on January 19, 2010 + "Release" email to 15 friends: + + Subject: version 0.0000001alpha of my online Python tutor + + Body: + ''' + hi python fans (and non-fans) ... + + this is what i've been hacking on for the past few days instead of doing my research ;) i'm planning to use it as a platform for creating interactive online programming tutorials as part of a volunteer project ... + + http://python.pgrind.com/ + + it'd be great to get your feedback on what i have so far. i'd love to hear suggestions or complaints. thanks in advance! + + please don't share this link yet, mostly because my app is still buggy and insecure (i definitely don't want random peoples from the internet trying to hack it right now!) + + pg + ''' + + Version 2 - released on October 4, 2011 + "Release" email to 13 friends: + + Body: + ''' + Dear subset of people who cared about my prior email from almost 2 years ago ... + + I've recently kicked it up a notch with a "2.0" version and am about to do a public release soon. I'd really appreciate any feedback, criticism, and especially bug reports on Internet Explorer ;) + + http://people.csail.mit.edu/pgbovine/opt-prerelease/ + + Please don't share the link yet since it will be dead soon when I move this app to its permanent home. I just want to get some early feedback to eliminate the obviously embarrassing bugs before launch. + + THANKS! + + pg + ''' + v3/ Version 3 - Released in September 2012 diff --git a/v3/index.html b/v3/index.html index 5b62c5c29..b0326e5b6 100644 --- a/v3/index.html +++ b/v3/index.html @@ -93,8 +93,8 @@

      LEARN to program in Pyt

      -We are seeking partnerships with educators at all grade levels. -Please email philip@pythontutor.com if you are interested. +We are actively seeking partnerships with educators at all levels. +Email philip@pythontutor.com if you are interested.

      @@ -150,18 +150,19 @@

      EMBED visualizations in

      SHARE visualizations online

      To share your current visualization, click the “Generate -URL” button and send that URL link in an email, social networking -post, or forum thread. When recipients click on that link, they will see -exactly what you are looking at. This is a more effective way for -students to seek assistance rather than simply copying-and-pasting code.

      +URL” button and paste that URL link in an email, social networking +post, or forum question. When recipients click on that link, they will +see that exact visualization. This feature is a more effective way for +students to seek assistance as opposed to copying-and-pasting code +snippets.

      For example, clicking this link brings you directly to step 44 of 57 in a program that finds prime numbers using the Python for-else construct.

      -

      In the future, we plan to create an online authoring environment so -that you can add annotations, discussion threads, and interactive +

      In the near future, we plan to add an online authoring environment so +that you can create annotations, discussion threads, and interactive activities on top of your visualizations.

  • From b18a86a626e11cd4c60ae5d2b623ca0c0a83a53f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 00:12:32 -0700 Subject: [PATCH 304/502] more text --- v3/index.html | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/v3/index.html b/v3/index.html index b0326e5b6..2e400895d 100644 --- a/v3/index.html +++ b/v3/index.html @@ -152,18 +152,18 @@

    SHARE visualizations on

    To share your current visualization, click the “Generate URL” button and paste that URL link in an email, social networking post, or forum question. When recipients click on that link, they will -see that exact visualization. This feature is a more effective way for -students to seek assistance as opposed to copying-and-pasting code -snippets.

    +see your exact visualization. This feature is a more effective way for +students to seek assistance than copying-and-pasting code snippets.

    For example, clicking this link brings you directly to step 44 of 57 in a program that finds prime numbers using the Python for-else construct.

    -

    In the near future, we plan to add an online authoring environment so -that you can create annotations, discussion threads, and interactive -activities on top of your visualizations.

    +

    In the near future, we plan to add an online authoring environment so +that you can save code examples and then create annotations, lessons, +discussion threads, and interactive activities on top of your +visualizations.

    From 6ea849c3e586bfb263668d8cdb98ee6385cdc8a3 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 00:15:41 -0700 Subject: [PATCH 305/502] bam --- v3/index.html | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/v3/index.html b/v3/index.html index 2e400895d..dc1ee5a0d 100644 --- a/v3/index.html +++ b/v3/index.html @@ -81,16 +81,15 @@

    LEARN to program in Pyt
    -

    Over 100,000 people so far have used Online Python Tutor to -understand and debug their programs, often as a supplement to textbooks, -lecture notes, and online tutorials.

    - -

    Instructors in over a dozen universities such as MIT, UC Berkeley, UC -Davis, Sonoma State University, the University of Washington, the -University of Waterloo, the University of Toronto, Luther College, and -Swarthmore College have adopted it for teaching introductory computer -science courses. -

    +

    Over 100,000 people have used Online Python Tutor to understand and +debug their programs, often as a supplement to textbooks, lecture notes, +and online programming tutorials.

    + +

    In addition, instructors in over a dozen universities such as MIT, UC +Berkeley, UC Davis, Sonoma State University, the University of +Washington, the University of Waterloo, Luther College, and Swarthmore +College have adopted it for teaching introductory computer science +courses.

    We are actively seeking partnerships with educators at all levels. From 71074bc52faf14904ece3645ba7c9a5f3b2f65ea Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 00:42:24 -0700 Subject: [PATCH 306/502] minor --- README | 58 ++++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 38 insertions(+), 20 deletions(-) diff --git a/README b/README index 8401ea695..b82a158a0 100644 --- a/README +++ b/README @@ -23,47 +23,65 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ====== +Repository contents: v1-v2/ - Version 1 - released on January 19, 2010 + + Online Python Tutor version 1 - released on January 19, 2010 "Release" email to 15 friends: Subject: version 0.0000001alpha of my online Python tutor - Body: - ''' - hi python fans (and non-fans) ... + ''' + hi python fans (and non-fans) ... - this is what i've been hacking on for the past few days instead of doing my research ;) i'm planning to use it as a platform for creating interactive online programming tutorials as part of a volunteer project ... + this is what i've been hacking on for the past few days instead of + doing my research ;) i'm planning to use it as a platform for + creating interactive online programming tutorials as part of a + volunteer project ... - http://python.pgrind.com/ + http://python.pgrind.com/ - it'd be great to get your feedback on what i have so far. i'd love to hear suggestions or complaints. thanks in advance! + it'd be great to get your feedback on what i have so far. i'd love + to hear suggestions or complaints. thanks in advance! - please don't share this link yet, mostly because my app is still buggy and insecure (i definitely don't want random peoples from the internet trying to hack it right now!) + please don't share this link yet, mostly because my app is still + buggy and insecure (i definitely don't want random peoples from the + internet trying to hack it right now!) - pg - ''' + pg + ''' - Version 2 - released on October 4, 2011 + Online Python Tutor version 2 - released on October 4, 2011 "Release" email to 13 friends: + Subject: Re: version 0.0000001alpha of my online Python tutor Body: - ''' - Dear subset of people who cared about my prior email from almost 2 years ago ... + ''' + Dear subset of people who cared about my prior email from almost 2 + years ago ... - I've recently kicked it up a notch with a "2.0" version and am about to do a public release soon. I'd really appreciate any feedback, criticism, and especially bug reports on Internet Explorer ;) + I've recently kicked it up a notch with a "2.0" version and am about + to do a public release soon. I'd really appreciate any feedback, + criticism, and especially bug reports on Internet Explorer ;) - http://people.csail.mit.edu/pgbovine/opt-prerelease/ + http://people.csail.mit.edu/pgbovine/opt-prerelease/ - Please don't share the link yet since it will be dead soon when I move this app to its permanent home. I just want to get some early feedback to eliminate the obviously embarrassing bugs before launch. + Please don't share the link yet since it will be dead soon when I + move this app to its permanent home. I just want to get some early + feedback to eliminate the obviously embarrassing bugs before launch. - THANKS! + THANKS! - pg - ''' + pg + ''' v3/ - Version 3 - Released in September 2012 + + Version 3 - Released on September ??, 2012 + + +Acknowledgments: + TODO From e195d5d5674a73b046401b18cace0f23223e4c3b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 00:48:19 -0700 Subject: [PATCH 307/502] applied reset styles! --- v3/css/pytutor.css | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 364c79822..b10b2a0c6 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -33,6 +33,18 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +/* reset style to nullify effects of existing stylesheets + e.g., http://meyerweb.com/eric/tools/css/reset/ +*/ +div.ExecutionVisualizer { + background-color: white; + line-height: 1; + margin: 0; + padding: 0; + border: 0; + font-size: 100%; +} + div.ExecutionVisualizer table.visualizer { font-family: verdana, arial, helvetica, sans-serif; font-size: 10pt; From 7fba131717da6dbf92c71bb5e168f70e174fdcdc Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 00:55:59 -0700 Subject: [PATCH 308/502] bah --- v3/css/index.css | 5 ++++- v3/css/pytutor.css | 9 ++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index 6ddc27098..1280e1ccc 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -3,7 +3,6 @@ body { background-color: white; - line-height: 1.5; /* slightly more than single spacing, for prose text */ font-family: Georgia, Palatino, Times, serif; font-size: 12pt; @@ -13,6 +12,10 @@ body { margin-right: auto; } +/* for prose text only */ +p, li { + line-height: 1.5; +} h1 { font-weight: normal; diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index b10b2a0c6..b31d4c925 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -33,16 +33,11 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ -/* reset style to nullify effects of existing stylesheets +/* reset some styles to nullify effects of existing stylesheets e.g., http://meyerweb.com/eric/tools/css/reset/ */ div.ExecutionVisualizer { - background-color: white; - line-height: 1; - margin: 0; - padding: 0; - border: 0; - font-size: 100%; + /* none for now */ } div.ExecutionVisualizer table.visualizer { From 61a4c20a95878520359ae297b19cb32bb1e92388 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 01:03:18 -0700 Subject: [PATCH 309/502] teeny --- v3/css/index.css | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/v3/css/index.css b/v3/css/index.css index 1280e1ccc..8fbda305c 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -21,6 +21,7 @@ h1 { font-weight: normal; margin-top: 0px; margin-bottom: 8px; + line-height: 1.5; } .smallH1 { @@ -112,7 +113,7 @@ div#learnPane p { div#learnPane #startLink { font-size: 16pt; font-weight: normal; - margin-top: 10px; + margin-top: 20px; margin-bottom: 20px; font-family: verdana, arial, helvetica, sans-serif; } From 827983648fab0889eb84841afff9743ca3b53eff Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 07:22:06 -0700 Subject: [PATCH 310/502] bamm --- v3/css/index.css | 6 ++---- v3/index.html | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index 8fbda305c..7639ca8ea 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -171,16 +171,14 @@ table.layoutTbl { max-width: 900px; } -table.layoutTbl td { - vertical-align: top; -} - table.layoutTbl td#embedPaneTd { width: 60%; + vertical-align: top; } table.layoutTbl td#sharePaneTd { width: 40%; + vertical-align: top; } diff --git a/v3/index.html b/v3/index.html index dc1ee5a0d..4147d390a 100644 --- a/v3/index.html +++ b/v3/index.html @@ -93,7 +93,7 @@

    LEARN to program in Pyt

    We are actively seeking partnerships with educators at all levels. -Email philip@pythontutor.com if you are interested. +Please email philip@pythontutor.com if you are interested.

    @@ -173,14 +173,11 @@

    SHARE visualizations on More Details:
      -
    • Online Python Tutor supports Python 2.7 and 3.2 with limited module - imports and no file I/O, hosted on either a CGI-capable server or on - Google App - Engine +
    • Online Python Tutor supports Python 2.7 and 3.2, hosted on either + a CGI-capable web server or on Google App Engine -
    • BSD-licensed source code available on GitHub - -
    • Main technologies: Python Main technologies: Python bdb debugger framework for execution trace generation, D3.js for data mapping and @@ -188,6 +185,13 @@

      SHARE visualizations on graphical arrow rendering, and CodeMirror for syntax highlighting +
    • Free, open-source BSD-licensed code on GitHub + +
    • Want to help out? We have ideas that might interest students + seeking a thesis project or anyone who loves to hack. Email + philip@pythontutor.com to learn more. +

    @@ -209,8 +213,6 @@

    SHARE visualizations on href="https://groups.google.com/forum/#!forum/pythontutor-announce">pythontutor-announce to receive occasional announcements.

    -

    To privately report bugs, suggestions, or feature requests, email philip@pythontutor.com

    -

    Copyright © 2010-2012 Philip Guo. All rights reserved.

    From 94db9c8e21bc5cbfca9c24e19496e1a91554259a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 07:25:00 -0700 Subject: [PATCH 311/502] sweating details --- v3/css/pytutor.css | 1 + 1 file changed, 1 insertion(+) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index b31d4c925..86c0640be 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -78,6 +78,7 @@ div.ExecutionVisualizer table#pyCodeOutput { /* don't wrap lines within code output ... FORCE scrollbars to appear */ div.ExecutionVisualizer table#pyCodeOutput td { white-space: nowrap; + vertical-align: middle; /* explicitly force, to override external CSS conflicts */ } div.ExecutionVisualizer #leftCodeGutterSVG { From a1892a54bc4fbe022a1a478a2da3760089651177 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 07:27:18 -0700 Subject: [PATCH 312/502] minor --- v3/css/index.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/css/index.css b/v3/css/index.css index 7639ca8ea..ca3edf737 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -187,7 +187,7 @@ table.layoutTbl td#sharePaneTd { font-size: 9pt; border-top: 1px solid #bbbbbb; padding-top: 0px; - margin-top: 30px; + margin-top: 20px; /* center align */ margin-left: auto; From 30fc8034e79aaaeeb0693312b6a0c7e09d5ea774 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 08:03:59 -0700 Subject: [PATCH 313/502] bam --- v3/index.html | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/v3/index.html b/v3/index.html index 4147d390a..24bfa5118 100644 --- a/v3/index.html +++ b/v3/index.html @@ -53,11 +53,6 @@ -
    @@ -177,13 +172,13 @@

    SHARE visualizations on a CGI-capable web server or on Google App Engine -
  • Main technologies: Python bdb debugger - framework for execution trace generation, D3.js for data mapping and - visualization, jsPlumb for - graphical arrow rendering, and CodeMirror for syntax highlighting +
  • Main technologies: Python with bdb for the + backend; HTML/CSS/JavaScript with jQuery, D3.js, jsPlumb, and CodeMirror for the frontend
  • Free, open-source BSD-licensed code on GitHub From f2e70b4230373dbb4c070a53d7d6df317515e88a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 15:17:11 -0700 Subject: [PATCH 314/502] minor tweaks --- README | 18 ++++++++++++++++++ v3/docs/embedding-HOWTO.txt | 4 ++++ v3/docs/opt-trace-format.txt | 5 +++++ v3/index.html | 8 ++++---- v3/js/index.js | 2 +- 5 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 v3/docs/embedding-HOWTO.txt create mode 100644 v3/docs/opt-trace-format.txt diff --git a/README b/README index b82a158a0..a99e89665 100644 --- a/README +++ b/README @@ -23,8 +23,24 @@ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ====== + +Summary: + + Online Python Tutor (located at pythontutor.com) enables teachers and + students to write Python programs directly in the web browser, execute + those programs, and then step forwards and backwards through execution + to view the run-time state of data structures. + + Over 100,000 people have used Online Python Tutor to understand and + debug their programs, often as a supplement to textbooks, lecture + notes, and online programming tutorials. + +--- + Repository contents: + tl;dr: the v3/ sub-directory contains the latest version of the code. + v1-v2/ Online Python Tutor version 1 - released on January 19, 2010 @@ -82,6 +98,8 @@ v3/ Version 3 - Released on September ??, 2012 +--- + Acknowledgments: TODO diff --git a/v3/docs/embedding-HOWTO.txt b/v3/docs/embedding-HOWTO.txt new file mode 100644 index 000000000..16bae366d --- /dev/null +++ b/v3/docs/embedding-HOWTO.txt @@ -0,0 +1,4 @@ +Instructions for embedding Online Python Tutor visualizations +------ + +[Full documentation coming soon! For now, please email philip@pythontutor.com] diff --git a/v3/docs/opt-trace-format.txt b/v3/docs/opt-trace-format.txt new file mode 100644 index 000000000..c65b4098b --- /dev/null +++ b/v3/docs/opt-trace-format.txt @@ -0,0 +1,5 @@ +Online Python Tutor execution trace format +------ + +[TODO: write me!] + diff --git a/v3/index.html b/v3/index.html index 24bfa5118..340dfb769 100644 --- a/v3/index.html +++ b/v3/index.html @@ -111,7 +111,7 @@

    LEARN to program in Pyt

    EMBED visualizations in digital textbooks

    -

    Using just one line of JavaScript code, you can embed an Online +

    Using just one line of JavaScript code, you can embed an Online Python Tutor visualization within your web page. For example, the HTML textbook for the introductory CS course at UC Berkeley (CS61A) contains @@ -183,9 +183,9 @@

    SHARE visualizations on
  • Free, open-source BSD-licensed code on GitHub -
  • Want to help out? We have ideas that might interest students - seeking a thesis project or anyone who loves to hack. Email - philip@pythontutor.com to learn more. +
  • Want to help out? We have ideas for student thesis projects or + for anyone else who loves to hack. Email philip@pythontutor.com for + more info.

    diff --git a/v3/js/index.js b/v3/js/index.js index 45daad561..66fd49dd7 100644 --- a/v3/js/index.js +++ b/v3/js/index.js @@ -1,4 +1,4 @@ -var demoTrace = {"code": "myList = (1, (2, (3, None)))\n\ndef listSum(n):\n if not n:\n return 0\n else:\n return n[0]+listSum(n[1])\n\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 1]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 3, "event": "call"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"n": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["n"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"n": ["REF", 3]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "n": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 5, "event": "return"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"n": ["REF", 2]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "n": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"n": ["REF", 1]}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "n": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "listSum"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "n": ["REF", 1]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["n", "__return__"]}], "globals": {"myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 7, "event": "return"}, {"ordered_globals": ["myList", "listSum", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 1], "listSum": ["REF", 4]}, "heap": {"1": ["TUPLE", 1, ["REF", 2]], "2": ["TUPLE", 2, ["REF", 3]], "3": ["TUPLE", 3, null], "4": ["FUNCTION", "listSum(n)", null]}, "line": 9, "event": "return"}]}; +var demoTrace = {"code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "return"}]}; $(document).ready(function() { From 73c89e2c782f9feef21289160ab005e6197e5a52 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 15:46:41 -0700 Subject: [PATCH 315/502] added favicon from python.org --- v3/favicon | Bin 0 -> 15086 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 v3/favicon diff --git a/v3/favicon b/v3/favicon new file mode 100644 index 0000000000000000000000000000000000000000..c9efc5844a2627a8474949724a2aefe4ab2baee4 GIT binary patch literal 15086 zcmcgz3tUxI_P$#EqsLfjrKaN}rF^8R7zl#$e#lE9E2sH4T54qp=Bv_FY)l=~00C>% zF&`;O=A+c|g@6JoRF;_+O)YUI9mCN{y9!+PeBZujUk}%FFE4Tbe#_&%_nf`g+Uv2` z`qsf@YGS&@bnm?;TsxRvy47UzG?`2tI@mscjPIA>yI#Gt&+aBu=mREG7uBIOT=7iM}d`t)*vk<+$7lLzev?;P$@UuUtE$9x=ZJ;KgrrPHgxHf;L zREU_9LdZFeV2(pVxNCgi_W%&(dJNPKbQg&7bOiZ=o_PKjA=Dgxg=ez*=AT>JE$`gg zj@jqdw%TE%=1U6R#J!xW!>URCi7O}gS(c9T5%?VW>Nz3wa|A&aZ}9Or_~`tNZ9ljt z%@^lQ!To*LPYXKo@tXl+#Y8_5*{AKZiKUl6=Nu!z$J3A{8nUQ4dg|tQDEGHK^6=Tr zP|K&&g2kFQ{6*@Eo>}-VCgJD*t{HRIY8mmbYjXsGkAC1o&7tjQ*tR)?#Ah?Z#3yeB ziPe(_inNzKw}$j?^JmNx1qugI{{bO;PQ4OPVzqFN9^j)BWWo2L+3!Y+FW!j|8|;YSI9)bXCj zMTsr5!o`LeAwuoNl0+Z*Jm(;3a|A`65F!9`cpkQv;rY%5sd2k<7sQGkb0fv(zlIC7 z7t1I3iNBBat~Lkm4d$CEk7yr=h1)ibJz&o9fo%5n-?)JS{IdOncdx59A zfM~N$N6vzn4cliADwBILJy>MIE|$IKYgzP?*FrqRXK&FzeBpMJNs|6c7ynOE_iI-& z)B)rVVtnFAV&JLYP`=DPLL@Ww2Kj)vZ^0mckT<9&s3V9z?*?iDYUtqF%|PzGzWi}| z@BH&ydKUd|?oxEM?2)1h(Z0Y^+B)yDxy9zwS$EC;Gy(TTf*3P8fw->?<>8LNqH~i2 zekd;+@I$5W{=QQ5{jO3xey~Dx`>H~?gNF|LD@5DEa`9k(xwtp?N}1b&ZEs;+?hE$< z8ma$?EwRjuK5iA^N39~rTq&IKFyVNmICZ5;Og&L4?%Pu?+!pR+9Pp7712LB;o%$GK1k=#{*n8zwFa#}{GU}q@i62>^?e`@{a_Cs-@+cWeNgt$dXHS6=UHv{pLR~4 zxd(JVs3oZRs9&mtBM(u~MVMv}dLDX$hpw7Uwkxnu{zpM=L5z)@kMnYV+N9nul#g}B z_gUdAv!(=^KYr7{ zEc1;3@e$5E+!LONGuIUl+=oE;h1`cjHeINF=*;*4-+ZW`T-={`rR?79%VxLK?aX(A zG#Ht@{nd5hm8CY={zf&mYII#nfx8u4%#HfgjE`)vC_ z9-3ueqHR!T?Qkw8ZJRwvY@HP$J_irX7kE}PXTa~#Twn2!0A0KcdrTEx;ev!xp4ZP6-feUiX)|H1k;IkV_JL#0SVlGsf8RVU=5t4DCG5 z)jo9F_Z!d0o`q@gy9yV^iM=U0JxCrLe3EeiKFPSS`t^Z=`R9k@ePvF+IKf-I|H`#| zm^`G6_ArO-J~A^FzB%ZaRfIU`qDS7@kFkEI{TV}(_ov4T2m7 zU8NpS8+`~pEJaPgoPN{lUT|&$K*{7H8R) z7B6TEdG9G(Fz`vn1zmjpXp*u8=m9*~^l*&_u0ITMQu2TtO6|jd!{w}5yMcHHnTpef zPCtyC@JYr6+5*-NYv}qaKL2uPr_67EI~R79fVKTW%=zj)WPFBC z>IZ9S+ga^AJ}*t|Pak9cD}AiK45;}0b77`r;qaDZgZQlFOuG0C8(fVwS%=zvtUf&K zPl*jGNEvLoEw;OA*+P<|uYdSu|7`ZnkE*Z91w0nNE*)cvNXR~}d zJ;;pwdH0&v2NEMqx=_Ie6Y^UhO*}lA4GvxDODi zX*kG^QxIXeaf5ZvZ6MZRtbsa#h*L18u|D+!1%g6AtWWrv-?Mh^4q~lB+=F)9AX~!o zbsglLm?~>HkH^*>oX|7(%-YBD|C86f=yJ&;g_ld*frH4LGT(B#^`1*5EpsoGwD{ue z)@JLDFS}#T`b0d(oXsCZnHdY+K%BR+hveNm+Z^Qk&2PEB-DuV|H!#?8f!Bzq7O9M z_?((I1oyV45{>gYwFn1SjU#P#K5?5+j#B z4a`Bwa5MNHiMm5C12NoqL+PtVH^>gC2<65L4C50RFu|F8h@=?Js_3{N z9Few2eJX1H;u+vvN(Nxitl@5y3|NQpljoRPPhB6xcdQF}zPZZZ{tv(N-X5TVAo>$+ zQjr%i)7r{_=a@4N);+K0sq2*(FERH=L6pNN|Gh1JO#klaM`j{lEhE;-I+nN!F$LBy zcrIeBhWn0&9$3RlTXN6?aRuVg(x-uMFfQqB=?P^^!2cMR^tMC{j(vhw=-DtXv1f8O zVyoMVLupu_Ia41HZA^boH(izx><+xRRMwxsD2d6eMcu(Vm^C2#tav73+^<43R0j4I zoXOA;XPl7?&2YxuvE|o1@DK~4ozceCaNCp=VkW*xY>)UNYiQPw#Ff~qX0I7HM-cax zGW^?yzZ>cS*baT#Q4hr92ja|?_@{#m-KhuUd-Q2T8IWgC2DddwKLj5^pw=L%gN;eS ziL5(`kFu9boS2vtu{qe1O$OKz`Bzx2Ga3G@Y{@_dVr9-`AfD|^hL*6U`)Ny%;SV`i zEDpI+(=D?i%*1hsF%#z|*1iEahLiy~g7gK{@rr*}GO!QfOong`?`xT?h`4k!WwI{QjX8R5iK85jdT=E}4E&+KGPK!qnYQ4oa8TmG#J{8r%8uX*(vA$y1>_VZ z@4z20#}H5?s4h88nD_Ec!=k=BpBar>x;`?r-)rNaJ*GXtQ6-+N^}6T_)ncmdTyT|N z@SQZ`%*%jvv-d)*nY|D8UsUgb{g>3yeNQKk?)%lG_^xxhPM-Tzl=(`rk|9{@2kHGm z*%JGNe7A-E@Nj|T-#b5<7^v2t(J*l%Ur=`BD!*Wk#2y~|SF(pj8PKrlLhH|X%?oSJ0-wxr46ZsWgqLFy1Qv26BM>f;Oc97&g_vIofimy&^f55AX{ z;Y5b{FZ9mq@z#4!>TStU55&i8da%jho_%I5Y_@A*>W~fWPf0t{`a^Z~1*2S>GO%yM zcLQZF6a7^7kM#Xar2}5aMm;(;^5FRo^ggX*(BorD2KOz;lEHt+{pmxdvB$?gBkkyB z`+|~zI`H{u%hP;^r8Y9SFW>Vb_-|R565W%1QuOE`1MCR>T4_fMw3upeE;NQOB#-uB zJPc(|Q!fKCzF^=k?6)gDcz!GUoW!}CflLR|;!C9rv?HzW&i4--&joolyT~u}xwfj= z>f#GvCE^)kOF9`8#;2FTtLS1b?(Gb^9b_s_kDtaqt+XQpU#M+0m}-Jms*MBb@w@8e3#w+*-mzk@%(3p2c4TlasFb4*>^P;)mLkj*rTupuW9>_v#Bk&e+WNxH;9s9#{K8q? z=_0>CeZZWCf5&y*xq2goDa89CD%UQ|cvk$ld#N~CkSTIgpOF|$ed+@3YZTTY9&XRa9M`>(pQQ|`LzdGQBz{rPTpN7_ z^FI=N*^^*C)2RFIO#Zz2(Zg~U#4gX7A6=aNZj>4Li^T}bLw})k{fuBU`XZY$r}!^i z{e~~!qhT)7AihN}g)47^^rcD-HTJtKU^)l}Cj9%FUU Date: Wed, 12 Sep 2012 16:18:26 -0700 Subject: [PATCH 316/502] updated email addr --- v3/docs/embedding-HOWTO.txt | 2 +- v3/index.html | 4 ++-- v3/tutor.html | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/v3/docs/embedding-HOWTO.txt b/v3/docs/embedding-HOWTO.txt index 16bae366d..de83d1b72 100644 --- a/v3/docs/embedding-HOWTO.txt +++ b/v3/docs/embedding-HOWTO.txt @@ -1,4 +1,4 @@ Instructions for embedding Online Python Tutor visualizations ------ -[Full documentation coming soon! For now, please email philip@pythontutor.com] +[Full documentation coming soon! For now, please email philip@pgbovine.net] diff --git a/v3/index.html b/v3/index.html index 340dfb769..20275849f 100644 --- a/v3/index.html +++ b/v3/index.html @@ -88,7 +88,7 @@

    LEARN to program in Pyt

    We are actively seeking partnerships with educators at all levels. -Please email philip@pythontutor.com if you are interested. +Please email philip@pgbovine.net if you are interested.

    @@ -184,7 +184,7 @@

    SHARE visualizations on href="https://github.com/pgbovine/OnlinePythonTutor/">GitHub
  • Want to help out? We have ideas for student thesis projects or - for anyone else who loves to hack. Email philip@pythontutor.com for + for anyone else who loves to hack. Email philip@pgbovine.net for more info. diff --git a/v3/tutor.html b/v3/tutor.html index ef51d79a5..0665fbd54 100644 --- a/v3/tutor.html +++ b/v3/tutor.html @@ -170,7 +170,7 @@

    To report a bug, click the 'Generate URL' button, paste the URL along with a brief error description in an email, and send the email to -philip@pythontutor.com +philip@pgbovine.net

    Join the Date: Wed, 12 Sep 2012 16:43:19 -0700 Subject: [PATCH 317/502] renam --- v3/{favicon => favicon.ico} | Bin 1 file changed, 0 insertions(+), 0 deletions(-) rename v3/{favicon => favicon.ico} (100%) diff --git a/v3/favicon b/v3/favicon.ico similarity index 100% rename from v3/favicon rename to v3/favicon.ico From 7a54fadebf6f2b825f50d4098e7f66496a001a46 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 16:48:08 -0700 Subject: [PATCH 318/502] change tutor.html -> visualize.html --- v3/css/opt-frontend.css | 2 +- v3/index.html | 6 +++--- v3/js/index.js | 2 +- v3/pythontutor.py | 2 +- v3/{tutor.html => visualize.html} | 0 5 files changed, 6 insertions(+), 6 deletions(-) rename v3/{tutor.html => visualize.html} (100%) diff --git a/v3/css/opt-frontend.css b/v3/css/opt-frontend.css index bb02dace3..6f2953680 100644 --- a/v3/css/opt-frontend.css +++ b/v3/css/opt-frontend.css @@ -1,4 +1,4 @@ -/* CSS accompanying ../tutor.html */ +/* CSS accompanying ../visualize.html */ h1 { font-weight: normal; diff --git a/v3/index.html b/v3/index.html index 20275849f..ec34a815f 100644 --- a/v3/index.html +++ b/v3/index.html @@ -64,7 +64,7 @@

    LEARN to program in Python by writing code and visualizing execution

    -

    Online Python Tutor +

    Online Python Tutor enables teachers and students to write Python programs directly in the web browser, execute those programs, and then step forwards and backwards @@ -94,7 +94,7 @@

    LEARN to program in Pyt

  • @@ -150,7 +150,7 @@

    SHARE visualizations on students to seek assistance than copying-and-pasting code snippets.

    For example, clicking this +href="visualize.html#code=%23+find+primes+using+a+for-else+construct%0Afor+n+in+range(2,+10)%3A%0A++++x_range+%3D+range(2,+n)%0A++++for+x+in+x_range%3A%0A++++++++if+n+%25+x+%3D%3D+0%3A%0A++++++++++++break%0A++++else%3A%0A++++++++%23+loop+fell+through+without+finding+a+factor%0A++++++++print(n)&curInstr=43&mode=visualize&cumulative_mode=false&python_version=2">this link brings you directly to step 44 of 57 in a program that finds prime numbers using the Python for-else construct.

    diff --git a/v3/js/index.js b/v3/js/index.js index 66fd49dd7..3747abd66 100644 --- a/v3/js/index.js +++ b/v3/js/index.js @@ -6,7 +6,7 @@ $(document).ready(function() { $(".activityPane").corner('15px'); var demoViz = new ExecutionVisualizer('demoViz', demoTrace, {embeddedMode: true, - editCodeBaseURL: 'tutor.html'}); + editCodeBaseURL: 'visualize.html'}); // redraw connector arrows on window resize $(window).resize(function() { diff --git a/v3/pythontutor.py b/v3/pythontutor.py index 3bb731160..be76d4b1e 100644 --- a/v3/pythontutor.py +++ b/v3/pythontutor.py @@ -44,7 +44,7 @@ class TutorPage(webapp2.RequestHandler): def get(self): self.response.headers['Content-Type'] = 'text/html' - template = JINJA_ENVIRONMENT.get_template('tutor.html') + template = JINJA_ENVIRONMENT.get_template('visualize.html') self.response.out.write(template.render()) diff --git a/v3/tutor.html b/v3/visualize.html similarity index 100% rename from v3/tutor.html rename to v3/visualize.html From 0ff03e57e7aafaa710cec2aeb52e0c1b9be67b3b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 19:05:27 -0700 Subject: [PATCH 319/502] sometimes highlighting is buggy on Safari, so nix it --- v3/js/pytutor.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index a7990285d..09aac3bc5 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -1693,6 +1693,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // Render globals and then stack frames using d3: + // TODO: this sometimes seems buggy on Safari, so nix it for now: function highlightAliasedConnectors(d, i) { // if this row contains a stack pointer, then highlight its arrow and // ALL aliases that also point to the same heap object @@ -1752,8 +1753,6 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // ENTER globalsD3.enter() .append('tr') - .on('mouseover', highlightAliasedConnectors) - .on('mouseout', unhighlightAllConnectors) .selectAll('td.stackFrameVar,td.stackFrameValue') .data(function(d, i){return d;}) /* map varname down both columns */ .enter() @@ -1898,9 +1897,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable .enter() - .append('tr') - .on('mouseover', highlightAliasedConnectors) - .on('mouseout', unhighlightAllConnectors); + .append('tr'); var stackVarTableCells = stackVarTable From d56607488547b18b18e4be5587d745d179771c32 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 12 Sep 2012 23:47:28 -0700 Subject: [PATCH 320/502] minor --- README | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README b/README index a99e89665..c4957c3ac 100644 --- a/README +++ b/README @@ -26,10 +26,10 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Summary: - Online Python Tutor (located at pythontutor.com) enables teachers and - students to write Python programs directly in the web browser, execute - those programs, and then step forwards and backwards through execution - to view the run-time state of data structures. + Online Python Tutor enables teachers and students to write Python + programs directly in the web browser, execute those programs, and then + step forwards and backwards through execution to view the run-time + state of data structures. Over 100,000 people have used Online Python Tutor to understand and debug their programs, often as a supplement to textbooks, lecture From 723b370933b71d7b902937b5f6960962277561a5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 13 Sep 2012 09:43:11 -0700 Subject: [PATCH 321/502] eliminated "About to run" --- v3/css/pytutor.css | 4 ++-- v3/js/pytutor.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 86c0640be..1898d1f5f 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -146,8 +146,8 @@ div.ExecutionVisualizer #vcrControls { } div.ExecutionVisualizer #vcrControls button { - margin-left: 3px; - margin-right: 3px; + margin-left: 4px; + margin-right: 4px; } div.ExecutionVisualizer #pyStdout { diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 09aac3bc5..a8e066dfa 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -819,7 +819,7 @@ ExecutionVisualizer.prototype.updateOutput = function(smoothTransition) { } } else { - vcrControls.find("#curInstr").html("About to run step " + + vcrControls.find("#curInstr").html("Step " + String(this.curInstr + 1) + " of " + String(totalInstrs-1)); } From a92b904757ad76a53a7e7907bf53a868e1859947 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 13 Sep 2012 09:47:14 -0700 Subject: [PATCH 322/502] more space tweaks --- v3/css/pytutor.css | 5 +++++ v3/js/pytutor.js | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 1898d1f5f..ec6772eb5 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -146,6 +146,11 @@ div.ExecutionVisualizer #vcrControls { } div.ExecutionVisualizer #vcrControls button { + margin-left: 2px; + margin-right: 2px; +} + +div.ExecutionVisualizer #vcrControls #curInstr { margin-left: 4px; margin-right: 4px; } diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index a8e066dfa..9bfa9f887 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -809,13 +809,13 @@ ExecutionVisualizer.prototype.updateOutput = function(smoothTransition) { var vcrControls = myViz.domRoot.find("#vcrControls"); - // to be user-friendly, if we're on the LAST instruction, print "Program has terminated" + // to be user-friendly, if we're on the LAST instruction, print "Program terminated" if (isLastInstr) { if (this.instrLimitReached) { vcrControls.find("#curInstr").html("Instruction limit reached"); } else { - vcrControls.find("#curInstr").html("Program has terminated"); + vcrControls.find("#curInstr").html("Program terminated"); } } else { From 8a15992168d67e5b82a8537f6d228075eadc4947 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 13 Sep 2012 18:42:09 -0700 Subject: [PATCH 323/502] gray out return value display in zombie frames --- v3/css/pytutor.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index ec6772eb5..6c7dda325 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -185,9 +185,12 @@ div.ExecutionVisualizer .funcObj { div.ExecutionVisualizer .retval { font-size: 9pt; - color: #e93f34; /* should match brightRed JavaScript variable */ } +div.ExecutionVisualizer .stackFrame .retval { + color: #e93f34; /* highlight non-zombie stack frame return values - + should match brightRed JavaScript variable */ +} /* Rendering of basic compound types */ From 0fb66ec5032c1a07f1e7ba687ea88031a9ac7ace Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 13 Sep 2012 22:37:13 -0700 Subject: [PATCH 324/502] added acknowledgments --- README | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/README b/README index c4957c3ac..563673bad 100644 --- a/README +++ b/README @@ -100,6 +100,22 @@ v3/ --- -Acknowledgments: - TODO +Special thanks to ... + +John Dalbey +John DeNero +Michael Ernst +David Evans +Paul Gries +Adam Hartz +Tomas Lozano-Perez +Bertram Ludaescher +Brad Miller +Rob Miller +Peter Norvig +Andrew Petersen +David Pritchard +Suzanne Rivoire +Peter Wentworth +David Wilkins From 6e943a39571063026fb4a9d43f4e950284f42b99 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 10:24:52 -0700 Subject: [PATCH 325/502] minor copyediting changes --- v3/index.html | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/v3/index.html b/v3/index.html index ec34a815f..2eb13283a 100644 --- a/v3/index.html +++ b/v3/index.html @@ -111,11 +111,13 @@

    LEARN to program in Pyt

    EMBED visualizations in digital textbooks

    -

    Using just one line of JavaScript code, you can embed an Online -Python Tutor visualization within your web page. For example, the -HTML textbook for the introductory CS course at UC Berkeley (CS61A) contains -dozens of embedded visualizations: +

    Using a single line of JavaScript code, you can embed an Online Python Tutor +visualization within your web page (as shown in the “Learn” +box above). The author of the HTML textbook for the introductory CS +course at UC Berkeley (CS61A) has embedded +dozens of such visualizations, as shown in this screenshot:

    @@ -124,8 +126,8 @@

    EMBED visualizations in

    -Similar visualizations have also been embedded within two other -web-based digital Python textbook projects: How to Think Like a Computer Scientist: Interactive Edition and Computer Science Circles. From 4e81c38e216cd9e1bc3acdfca489383a2cdca44a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 11:04:22 -0700 Subject: [PATCH 326/502] started cleaning up URL hashes --- v3/js/opt-frontend.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index b2ac77f57..b989d03fc 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -38,7 +38,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. var python2_backend_script = 'exec'; var python3_backend_script = null; -var appMode = 'edit'; // 'edit' or 'visualize' +var appMode = 'edit'; // 'edit' or 'display' var preseededCode = null; // if you passed in a 'code=' in the URL, then set this var var preseededCurInstr = null; // if you passed in a 'curInstr=' in the URL, then set this var @@ -89,25 +89,25 @@ $(document).ready(function() { // ugh, ugly tristate due to the possibility of being undefined :) - if ($.bbq.getState('cumulative_mode') == 'true') { + if ($.bbq.getState('cumulative') == 'true') { $('#cumulativeModeSelector').val('yes'); } - else if ($.bbq.getState('cumulative_mode') == 'false') { + else if ($.bbq.getState('cumulative') == 'false') { $('#cumulativeModeSelector').val('no'); } // else if it's undefined, don't do anything ... - if ($.bbq.getState('python_version') == '3') { + if ($.bbq.getState('py') == '3') { $('#pythonVersionSelector').val('3'); } - else if ($.bbq.getState('python_version') == '2') { + else if ($.bbq.getState('py') == '2') { $('#pythonVersionSelector').val('2'); } // else if it's undefined, don't do anything ... // only bother with curInstr when we're visualizing ... - if (!preseededCurInstr && preseededMode == 'visualize') { // TODO: kinda gross hack + if (!preseededCurInstr && preseededMode == 'display') { // TODO: kinda gross hack preseededCurInstr = Number($.bbq.getState('curInstr')); } @@ -121,11 +121,11 @@ $(document).ready(function() { if (!myVisualizer) { appMode = 'edit'; - if (preseededCode && preseededMode == 'visualize') { + if (preseededCode && preseededMode == 'display') { // punt for now ... } else { - $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); + //$.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); } } @@ -134,7 +134,7 @@ $(document).ready(function() { $("#pyInputPane").show(); $("#pyOutputPane").hide(); } - else if (appMode == 'visualize') { + else if (appMode == 'display') { $("#pyInputPane").hide(); $("#pyOutputPane").show(); @@ -261,7 +261,7 @@ $(document).ready(function() { // also scroll to top to make the UI more usable on smaller monitors $(document).scrollTop(0); - $.bbq.pushState({ mode: 'visualize' }, 2 /* completely override other hash strings to keep URL clean */); + $.bbq.pushState({ mode: 'display' }); } }, "json"); @@ -510,7 +510,7 @@ $(document).ready(function() { // redraw connector arrows on window resize $(window).resize(function() { - if (appMode == 'visualize') { + if (appMode == 'display') { myVisualizer.redrawConnectors(); } }); @@ -518,12 +518,12 @@ $(document).ready(function() { $('#genUrlBtn').bind('click', function() { var urlStr = $.param.fragment(window.location.href, {code: pyInputCodeMirror.getValue(), - curInstr: (appMode == 'visualize') ? myVisualizer.curInstr : 0, + curInstr: (appMode == 'display') ? myVisualizer.curInstr : 0, mode: appMode, - cumulative_mode: ($('#cumulativeModeSelector').val() == 'yes'), - python_version: $('#pythonVersionSelector').val() + cumulative: ($('#cumulativeModeSelector').val() == 'yes'), + py: $('#pythonVersionSelector').val() }, - 2); + 2 /* clobber all */); $('#urlOutput').val(urlStr); }); }); From 1ae48553f98bd59127d32af01b88422569123ead Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 12:01:51 -0700 Subject: [PATCH 327/502] more cleanups of dubious quality --- v3/js/opt-frontend.js | 26 ++++++++++++++------------ v3/visualize.html | 4 ++-- 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index b989d03fc..d1ac8c4a9 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -90,10 +90,10 @@ $(document).ready(function() { // ugh, ugly tristate due to the possibility of being undefined :) if ($.bbq.getState('cumulative') == 'true') { - $('#cumulativeModeSelector').val('yes'); + $('#cumulativeModeSelector').val('true'); } else if ($.bbq.getState('cumulative') == 'false') { - $('#cumulativeModeSelector').val('no'); + $('#cumulativeModeSelector').val('false'); } // else if it's undefined, don't do anything ... @@ -125,7 +125,7 @@ $(document).ready(function() { // punt for now ... } else { - //$.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); + $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); } } @@ -187,7 +187,7 @@ $(document).ready(function() { $.get(backend_script, {user_script : pyInputCodeMirror.getValue(), - cumulative_mode: ($('#cumulativeModeSelector').val() == 'yes')}, + cumulative_mode: ($('#cumulativeModeSelector').val() == 'true') /* ugh types! */}, function(dataFromBackend) { var trace = dataFromBackend.trace; @@ -516,14 +516,16 @@ $(document).ready(function() { }); $('#genUrlBtn').bind('click', function() { - var urlStr = $.param.fragment(window.location.href, - {code: pyInputCodeMirror.getValue(), - curInstr: (appMode == 'display') ? myVisualizer.curInstr : 0, - mode: appMode, - cumulative: ($('#cumulativeModeSelector').val() == 'yes'), - py: $('#pythonVersionSelector').val() - }, - 2 /* clobber all */); + var myArgs = {code: pyInputCodeMirror.getValue(), + mode: appMode, + cumulative: $('#cumulativeModeSelector').val(), + py: $('#pythonVersionSelector').val()}; + + if (appMode == 'display') { + myArgs.curInstr = myVisualizer.curInstr; + } + + var urlStr = $.param.fragment(window.location.href, myArgs, 2 /* clobber all */); $('#urlOutput').val(urlStr); }); }); diff --git a/v3/visualize.html b/v3/visualize.html index 0665fbd54..adf720106 100644 --- a/v3/visualize.html +++ b/v3/visualize.html @@ -73,8 +73,8 @@ and

    From 00f4ed24fd7c063bb8bcd399990f4ed2a11be2df Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 12:12:05 -0700 Subject: [PATCH 328/502] more dubious hash cleanups --- v3/js/opt-frontend.js | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index d1ac8c4a9..da76dff32 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -84,26 +84,22 @@ $(document).ready(function() { $(window).bind("hashchange", function(e) { appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode + console.log('hashchange:', appMode); + preseededCode = $.bbq.getState('code'); // yuck, global! var preseededMode = $.bbq.getState('mode'); // ugh, ugly tristate due to the possibility of being undefined :) - if ($.bbq.getState('cumulative') == 'true') { - $('#cumulativeModeSelector').val('true'); - } - else if ($.bbq.getState('cumulative') == 'false') { - $('#cumulativeModeSelector').val('false'); + var cumulativeState = $.bbq.getState('cumulative'); + if (cumulativeState !== undefined) { + $('#cumulativeModeSelector').val(cumulativeState); } - // else if it's undefined, don't do anything ... - if ($.bbq.getState('py') == '3') { - $('#pythonVersionSelector').val('3'); - } - else if ($.bbq.getState('py') == '2') { - $('#pythonVersionSelector').val('2'); + var pyState = $.bbq.getState('py'); + if (pyState !== undefined) { + $('#pythonVersionSelector').val(pyState); } - // else if it's undefined, don't do anything ... // only bother with curInstr when we're visualizing ... @@ -187,7 +183,7 @@ $(document).ready(function() { $.get(backend_script, {user_script : pyInputCodeMirror.getValue(), - cumulative_mode: ($('#cumulativeModeSelector').val() == 'true') /* ugh types! */}, + cumulative_mode: $('#cumulativeModeSelector').val()}, function(dataFromBackend) { var trace = dataFromBackend.trace; From d39b492596a46e93ea30a8c924db99a5500e8669 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 12:17:00 -0700 Subject: [PATCH 329/502] more subtleties --- v3/js/opt-frontend.js | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index da76dff32..22b3cfa91 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -84,7 +84,7 @@ $(document).ready(function() { $(window).bind("hashchange", function(e) { appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode - console.log('hashchange:', appMode); + //console.log('hashchange:', appMode); preseededCode = $.bbq.getState('code'); // yuck, global! var preseededMode = $.bbq.getState('mode'); @@ -113,16 +113,9 @@ $(document).ready(function() { } // if there's no myVisualizer, then default to edit mode since there's - // nothing to visualize: + // nothing to visualize yet: if (!myVisualizer) { appMode = 'edit'; - - if (preseededCode && preseededMode == 'display') { - // punt for now ... - } - else { - $.bbq.pushState({ mode: 'edit' }, 2 /* completely override other hash strings to keep URL clean */); - } } @@ -257,7 +250,7 @@ $(document).ready(function() { // also scroll to top to make the UI more usable on smaller monitors $(document).scrollTop(0); - $.bbq.pushState({ mode: 'display' }); + $.bbq.pushState({ mode: 'display' }, 2 /* completely override other hash strings to keep URL clean */); } }, "json"); From 9862ab533571919eb7d543300c5387058483aedd Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 12:29:17 -0700 Subject: [PATCH 330/502] bam --- v3/js/opt-frontend.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 22b3cfa91..0dcb1fc01 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -478,7 +478,7 @@ $(document).ready(function() { if (preseededCode) { setCodeMirrorVal(preseededCode); - if ($.bbq.getState('mode') != 'edit') { + if ($.bbq.getState('mode') == 'display') { $("#executeBtn").trigger('click'); } } From a617727a18829fec557362cb586c9cfd380750bf Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 12:32:49 -0700 Subject: [PATCH 331/502] teeny --- v3/js/opt-frontend.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 0dcb1fc01..fd60d06df 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -108,7 +108,7 @@ $(document).ready(function() { } // default mode is 'edit' - if (appMode == undefined) { + if (appMode === undefined) { appMode = 'edit'; } @@ -144,6 +144,8 @@ $(document).ready(function() { else { assert(false); } + + $('#urlOutput').val(''); // clear to avoid stale values }); // From: http://benalman.com/projects/jquery-bbq-plugin/ From b0b461f2a90a3d2e36e463721bb525b7a1ed5891 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 16:12:06 -0700 Subject: [PATCH 332/502] tweaks --- v3/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/v3/index.html b/v3/index.html index 2eb13283a..4f4bc59f7 100644 --- a/v3/index.html +++ b/v3/index.html @@ -114,10 +114,10 @@

    EMBED visualizations in

    Using a single line of JavaScript code, you can embed an Online Python Tutor visualization within your web page (as shown in the “Learn” -box above). The author of the HTML textbook for the introductory CS -course at UC Berkeley (CS61A) has embedded -dozens of such visualizations, as shown in this screenshot: +box above). The screenshot below shows a few of these visualizations +embedded within the HTML textbook for the introductory CS course at UC +Berkeley (CS61A):

    From 290c2b772d13f8378614d05ef04d6be8324bec43 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 16:34:25 -0700 Subject: [PATCH 333/502] more tweaks --- v3/docs/embedding-HOWTO.txt | 2 ++ v3/docs/opt-trace-format.txt | 1 + v3/index.html | 15 ++++++++------- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/v3/docs/embedding-HOWTO.txt b/v3/docs/embedding-HOWTO.txt index de83d1b72..268b50dad 100644 --- a/v3/docs/embedding-HOWTO.txt +++ b/v3/docs/embedding-HOWTO.txt @@ -2,3 +2,5 @@ Instructions for embedding Online Python Tutor visualizations ------ [Full documentation coming soon! For now, please email philip@pgbovine.net] + +[TODO: move to GitHub Markdown format] diff --git a/v3/docs/opt-trace-format.txt b/v3/docs/opt-trace-format.txt index c65b4098b..45d8617bf 100644 --- a/v3/docs/opt-trace-format.txt +++ b/v3/docs/opt-trace-format.txt @@ -3,3 +3,4 @@ Online Python Tutor execution trace format [TODO: write me!] +[TODO: move to GitHub Markdown format] diff --git a/v3/index.html b/v3/index.html index 4f4bc59f7..e6d4093cb 100644 --- a/v3/index.html +++ b/v3/index.html @@ -76,9 +76,9 @@

    LEARN to program in Pyt
    -

    Over 100,000 people have used Online Python Tutor to understand and -debug their programs, often as a supplement to textbooks, lecture notes, -and online programming tutorials.

    +

    So far, over 100,000 people have used Online Python Tutor to +understand and debug their programs, often as a supplement to reading +textbooks, lecture notes, and online programming tutorials.

    In addition, instructors in over a dozen universities such as MIT, UC Berkeley, UC Davis, Sonoma State University, the University of @@ -115,7 +115,7 @@

    EMBED visualizations in href="docs/embedding-HOWTO.txt">embed an Online Python Tutor visualization within your web page (as shown in the “Learn” box above). The screenshot below shows a few of these visualizations -embedded within the HTML textbook for the introductory CS course at UC +embedded within the online textbook for the introductory CS course at UC Berkeley (CS61A): @@ -126,8 +126,8 @@

    EMBED visualizations in

    -Similar visualizations have been embedded within two other web-based -digital Python textbook projects: How to Think Like a Computer Scientist: Interactive Edition and Computer Science Circles. @@ -146,7 +146,8 @@

    EMBED visualizations in

    SHARE visualizations online

    To share your current visualization, click the “Generate -URL” button and paste that URL link in an email, social networking +URL” button (at the bottom of this +page) and paste that URL link in an email, social networking post, or forum question. When recipients click on that link, they will see your exact visualization. This feature is a more effective way for students to seek assistance than copying-and-pasting code snippets.

    From 1967e68adf7228a7e749076608dbd8230d10e8b5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 16:46:06 -0700 Subject: [PATCH 334/502] minor --- v3/index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/index.html b/v3/index.html index e6d4093cb..7dc4c0246 100644 --- a/v3/index.html +++ b/v3/index.html @@ -153,7 +153,7 @@

    SHARE visualizations on students to seek assistance than copying-and-pasting code snippets.

    For example, clicking this +href="visualize.html#code=%23+find+primes+using+a+for-else+construct%0Afor+n+in+range(2,+10)%3A%0A++++x_range+%3D+range(2,+n)%0A++++for+x+in+x_range%3A%0A++++++++if+n+%25+x+%3D%3D+0%3A%0A++++++++++++break%0A++++else%3A%0A++++++++%23+loop+fell+through+without+finding+a+factor%0A++++++++print(n)&mode=display&cumulative=false&py=2&curInstr=43">this link brings you directly to step 44 of 57 in a program that finds prime numbers using the Python for-else construct.

    From 2c581abc70d6d7737ecd386a4b5498e93eba4c75 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 18:18:05 -0700 Subject: [PATCH 335/502] more copyediting --- v3/index.html | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/v3/index.html b/v3/index.html index 7dc4c0246..c0c8b511d 100644 --- a/v3/index.html +++ b/v3/index.html @@ -62,7 +62,7 @@
    -

    LEARN to program in Python by writing code and visualizing execution

    +

    LEARN programming by writing code and visualizing execution

    Online Python Tutor enables teachers and students to write LEARN to program in Pyt

    So far, over 100,000 people have used Online Python Tutor to -understand and debug their programs, often as a supplement to reading -textbooks, lecture notes, and online programming tutorials.

    +understand and debug their programs, often as a supplement to learning +from textbooks, lecture notes, and online programming tutorials.

    In addition, instructors in over a dozen universities such as MIT, UC Berkeley, UC Davis, Sonoma State University, the University of Washington, the University of Waterloo, Luther College, and Swarthmore -College have adopted it for teaching introductory computer science +College have used it for teaching introductory computer science courses.

    -We are actively seeking partnerships with educators at all levels. -Please email philip@pgbovine.net if you are interested. +But this is just the beginning. We are seeking partnerships with +educators at all levels to deploy and improve this tool. Please email +philip@pgbovine.net if you are interested in collaborating.

    From e4841e331020dedc5b8f876bd488b6a150701c38 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 18:28:35 -0700 Subject: [PATCH 336/502] more minor edits --- v3/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/index.html b/v3/index.html index c0c8b511d..ce1bb6649 100644 --- a/v3/index.html +++ b/v3/index.html @@ -72,7 +72,7 @@

    LEARN programming by wr

    For example, here is a recursive function that finds the sum of linked list elements. Click the “Forward” button to start -stepping through execution.

    +visualizing its execution one step at a time.

    @@ -160,7 +160,7 @@

    SHARE visualizations on

    In the near future, we plan to add an online authoring environment so that you can save code examples and then create annotations, lessons, -discussion threads, and interactive activities on top of your +discussion threads, and interactive exercises on top of your visualizations.

    From efccc69ff344e25937a96e6e0b4514755acb572c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 22:39:24 -0700 Subject: [PATCH 337/502] more tweaks but not completely happy yet --- v3/index.html | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/v3/index.html b/v3/index.html index ce1bb6649..127b89020 100644 --- a/v3/index.html +++ b/v3/index.html @@ -31,7 +31,7 @@ -Online Python Tutor: Learn Python programming in your web browser +Online Python Tutor - Learn programming by visualizing code execution @@ -62,17 +62,28 @@
    -

    LEARN programming by writing code and visualizing execution

    +

    LEARN programming by visualizing code execution

    + + + +

    Online Python Tutor is a +free educational tool that helps students overcome a central difficulty +in learning programming: understanding how each line of a program's +source code affects its execution. This tool allows a teacher or student +to write a Python program directly +in the web browser and then visualize what the computer is doing as the +program executes.

    -

    For example, here is a recursive function that finds the sum of -linked list elements. Click the “Forward” button to start -visualizing its execution one step at a time.

    +

    For example, I wrote the following program to sum up the numbers in a +linked list. Click the “Forward” button below to execute it +one step at a time and visualize its run-time data.

    @@ -83,8 +94,8 @@

    LEARN programming by wr

    In addition, instructors in over a dozen universities such as MIT, UC Berkeley, UC Davis, Sonoma State University, the University of Washington, the University of Waterloo, Luther College, and Swarthmore -College have used it for teaching introductory computer science -courses.

    +College have used it for teaching introductory computer science and +programming courses.

    But this is just the beginning. We are seeking partnerships with From 35b17bafa16f0989f34eb65d60a7b620b2a8d887 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 22:39:54 -0700 Subject: [PATCH 338/502] bah --- v3/visualize.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/visualize.html b/v3/visualize.html index adf720106..230ccd1b1 100644 --- a/v3/visualize.html +++ b/v3/visualize.html @@ -30,7 +30,7 @@ --> - Online Python Tutor (v3) + Online Python Tutor - Visualize program execution From 137be43bdc9506b41e677bb5d72d81435685b83b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 14 Sep 2012 23:19:41 -0700 Subject: [PATCH 339/502] ugh still progressing ... --- v3/index.html | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/v3/index.html b/v3/index.html index 127b89020..2a056bb54 100644 --- a/v3/index.html +++ b/v3/index.html @@ -74,16 +74,19 @@

    LEARN programming by vi

    Online Python Tutor is a -free educational tool that helps students overcome a central difficulty -in learning programming: understanding how each line of a program's -source code affects its execution. This tool allows a teacher or student -to write a Python program directly -in the web browser and then visualize what the computer is doing as the -program executes.

    - -

    For example, I wrote the following program to sum up the numbers in a -linked list. Click the “Forward” button below to execute it -one step at a time and visualize its run-time data.

    +free educational tool that helps students overcome a fundamental +difficulty of learning programming: understanding what happens as the +computer executes each line of a program's source code. Using this +tool, a teacher or student can write a Python program directly in the web +browser and visualize what the computer is doing step-by-step as it +executes the program.

    + +

    For example, I wrote the following Python program to recursively +find the sum of a linked list of numbers. Click the +“Forward” button to see what happens as the computer +executes one line of code at a time.

    From 4fe666089e17cec4aed0fadadb4702939ce61e8d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 08:29:41 -0700 Subject: [PATCH 340/502] minor --- v3/index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/v3/index.html b/v3/index.html index 2a056bb54..d8828c718 100644 --- a/v3/index.html +++ b/v3/index.html @@ -101,8 +101,8 @@

    LEARN programming by vi programming courses.

    -But this is just the beginning. We are seeking partnerships with -educators at all levels to deploy and improve this tool. Please email +But this is just the beginning. We are actively seeking partnerships with +educators at all grade levels to deploy and improve this tool. Email philip@pgbovine.net if you are interested in collaborating.

    @@ -173,8 +173,8 @@

    SHARE visualizations on prime numbers using the Python for-else construct.

    In the near future, we plan to add an online authoring environment so -that you can save code examples and then create annotations, lessons, -discussion threads, and interactive exercises on top of your +that you can save code examples and then create annotations, +discussion threads, lessons, and interactive exercises on top of your visualizations.

    From bd6c72ca73b70e358d91478e0ee5e9280f89a301 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 09:02:44 -0700 Subject: [PATCH 341/502] privacy --- v3/index.html | 5 +++-- v3/visualize.html | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/v3/index.html b/v3/index.html index d8828c718..f102ae43c 100644 --- a/v3/index.html +++ b/v3/index.html @@ -222,9 +222,10 @@

    SHARE visualizations on

    Join the pythontutor-users -mailing list to participate in user discussions or pythontutor-announce -to receive occasional announcements.

    +to receive occasional announcements. +(Your name and email address will be kept private; only the list owner can see them.)

    Copyright © 2010-2012 Philip Guo. All rights reserved.

    diff --git a/v3/visualize.html b/v3/visualize.html index 230ccd1b1..316033114 100644 --- a/v3/visualize.html +++ b/v3/visualize.html @@ -175,9 +175,10 @@

    Join the pythontutor-users -mailing list to participate in user discussions or pythontutor-announce -to receive occasional announcements.

    +to receive occasional announcements. +(Your name and email address will be kept private; only the list owner can see them.)

    From f839a50155a3241964ce6e69dfb86618c650a761 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 09:41:52 -0700 Subject: [PATCH 342/502] cleaned up more --- v3/js/opt-frontend.js | 78 ++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 49 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index fd60d06df..8ba908163 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -84,42 +84,7 @@ $(document).ready(function() { $(window).bind("hashchange", function(e) { appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode - //console.log('hashchange:', appMode); - - preseededCode = $.bbq.getState('code'); // yuck, global! - var preseededMode = $.bbq.getState('mode'); - - - // ugh, ugly tristate due to the possibility of being undefined :) - var cumulativeState = $.bbq.getState('cumulative'); - if (cumulativeState !== undefined) { - $('#cumulativeModeSelector').val(cumulativeState); - } - - var pyState = $.bbq.getState('py'); - if (pyState !== undefined) { - $('#pythonVersionSelector').val(pyState); - } - - - // only bother with curInstr when we're visualizing ... - if (!preseededCurInstr && preseededMode == 'display') { // TODO: kinda gross hack - preseededCurInstr = Number($.bbq.getState('curInstr')); - } - - // default mode is 'edit' - if (appMode === undefined) { - appMode = 'edit'; - } - - // if there's no myVisualizer, then default to edit mode since there's - // nothing to visualize yet: - if (!myVisualizer) { - appMode = 'edit'; - } - - - if (appMode == 'edit') { + if (appMode === undefined || appMode == 'edit') { $("#pyInputPane").show(); $("#pyOutputPane").hide(); } @@ -139,7 +104,6 @@ $(document).ready(function() { $('#pyOutputPane #editBtn').click(function() { enterEditMode(); }); - } else { assert(false); @@ -148,12 +112,6 @@ $(document).ready(function() { $('#urlOutput').val(''); // clear to avoid stale values }); - // From: http://benalman.com/projects/jquery-bbq-plugin/ - // Since the event is only triggered when the hash changes, we need - // to trigger the event now, to handle the hash the page may have - // loaded with. - $(window).trigger( "hashchange" ); - $("#executeBtn").attr('disabled', false); $("#executeBtn").click(function() { @@ -477,19 +435,41 @@ $(document).ready(function() { }); - if (preseededCode) { - setCodeMirrorVal(preseededCode); + // handle hash parameters passed in when loading the page + preseededCode = $.bbq.getState('code'); + preseededCurInstr = Number($.bbq.getState('curInstr')); - if ($.bbq.getState('mode') == 'display') { - $("#executeBtn").trigger('click'); - } + // ugh, ugly tristate due to the possibility of them being undefined + var cumulativeState = $.bbq.getState('cumulative'); + if (cumulativeState !== undefined) { + $('#cumulativeModeSelector').val(cumulativeState); + } + var pyState = $.bbq.getState('py'); + if (pyState !== undefined) { + $('#pythonVersionSelector').val(pyState); + } + + appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode + if ((appMode == "display") && preseededCode) { + setCodeMirrorVal(preseededCode); + $("#executeBtn").trigger('click'); } else { // select a canned example on start-up: $("#aliasExampleLink").trigger('click'); - } + if (appMode === undefined) { + // default mode is 'edit', don't trigger a "hashchange" event + appMode = 'edit'; + } + else { + // fail-soft by killing all passed-in hashes and triggering a "hashchange" + // event, which will then go to 'edit' mode + $.bbq.removeState(); + } + } + // log a generic AJAX error handler $(document).ajaxError(function() { alert("Server error (possibly due to memory/resource overload)."); From adbf947d68f0794af58c871a53ffe5c651b7272c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 09:51:24 -0700 Subject: [PATCH 343/502] subtle bugfix --- v3/js/opt-frontend.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 8ba908163..9e777da84 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -436,8 +436,11 @@ $(document).ready(function() { // handle hash parameters passed in when loading the page - preseededCode = $.bbq.getState('code'); preseededCurInstr = Number($.bbq.getState('curInstr')); + preseededCode = $.bbq.getState('code'); + if (preseededCode) { + setCodeMirrorVal(preseededCode); + } // ugh, ugly tristate due to the possibility of them being undefined var cumulativeState = $.bbq.getState('cumulative'); @@ -451,7 +454,6 @@ $(document).ready(function() { appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode if ((appMode == "display") && preseededCode) { - setCodeMirrorVal(preseededCode); $("#executeBtn").trigger('click'); } else { From cf0bcbaa267b570d0d278799ab3b8267f9151aa6 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 09:55:31 -0700 Subject: [PATCH 344/502] dum --- v3/js/opt-frontend.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 9e777da84..c4463515d 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -441,6 +441,10 @@ $(document).ready(function() { if (preseededCode) { setCodeMirrorVal(preseededCode); } + else { + // select a canned example on start-up: + $("#aliasExampleLink").trigger('click'); + } // ugh, ugly tristate due to the possibility of them being undefined var cumulativeState = $.bbq.getState('cumulative'); @@ -453,13 +457,10 @@ $(document).ready(function() { } appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode - if ((appMode == "display") && preseededCode) { + if ((appMode == "display") && preseededCode /* ONLY jump to display when there's pre-seeded code */) { $("#executeBtn").trigger('click'); } else { - // select a canned example on start-up: - $("#aliasExampleLink").trigger('click'); - if (appMode === undefined) { // default mode is 'edit', don't trigger a "hashchange" event appMode = 'edit'; From af1dd7f57ad45d7556e86570e0c51cdb0cbad1fe Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 10:04:27 -0700 Subject: [PATCH 345/502] teeny --- v3/index.html | 2 +- v3/visualize.html | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/index.html b/v3/index.html index f102ae43c..cd521a69b 100644 --- a/v3/index.html +++ b/v3/index.html @@ -75,7 +75,7 @@

    LEARN programming by vi

    Online Python Tutor is a free educational tool that helps students overcome a fundamental -difficulty of learning programming: understanding what happens as the +barrier to learning programming: understanding what happens as the computer executes each line of a program's source code. Using this tool, a teacher or student can write a Python program directly in the web diff --git a/v3/visualize.html b/v3/visualize.html index 316033114..dade7317c 100644 --- a/v3/visualize.html +++ b/v3/visualize.html @@ -182,7 +182,7 @@

    -Online Python Tutor supports Online Python Tutor supports Python 2.7 and Python 3.2 with limited module imports and no file I/O. It is designed for teaching programming, not From e18b909bc5429d42d29e3bc70bcffff68d564a8c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 11:28:40 -0700 Subject: [PATCH 346/502] subtle --- v3/js/opt-frontend.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index c4463515d..63ec82072 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -436,7 +436,6 @@ $(document).ready(function() { // handle hash parameters passed in when loading the page - preseededCurInstr = Number($.bbq.getState('curInstr')); preseededCode = $.bbq.getState('code'); if (preseededCode) { setCodeMirrorVal(preseededCode); @@ -457,7 +456,8 @@ $(document).ready(function() { } appMode = $.bbq.getState('mode'); // assign this to the GLOBAL appMode - if ((appMode == "display") && preseededCode /* ONLY jump to display when there's pre-seeded code */) { + if ((appMode == "display") && preseededCode /* jump to display only with pre-seeded code */) { + preseededCurInstr = Number($.bbq.getState('curInstr')); $("#executeBtn").trigger('click'); } else { From 6171383d139fc75291d1abc46eee6ebe9f009bc2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 12:44:10 -0700 Subject: [PATCH 347/502] thanks kevin! --- v3/css/index.css | 4 ++++ v3/index.html | 1 + 2 files changed, 5 insertions(+) diff --git a/v3/css/index.css b/v3/css/index.css index ca3edf737..d2e7aa29f 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -7,7 +7,11 @@ body { font-size: 12pt; + /* use fixed width for simplicity */ max-width: 900px; + min-width: 900px; + width: 900px; + margin-left: auto; margin-right: auto; } diff --git a/v3/index.html b/v3/index.html index cd521a69b..2a1431b28 100644 --- a/v3/index.html +++ b/v3/index.html @@ -225,6 +225,7 @@

    SHARE visualizations on mailing list to participate in user discussions and pythontutor-announce to receive occasional announcements. +
    (Your name and email address will be kept private; only the list owner can see them.)

    Copyright © 2010-2012 Philip Guo. All rights reserved.

    From f147cd1c122c6d9bb744df7bdec479fb61680318 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 13:06:32 -0700 Subject: [PATCH 348/502] added --- v3/docs/user-FAQ.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 v3/docs/user-FAQ.md diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md new file mode 100644 index 000000000..e955fd15a --- /dev/null +++ b/v3/docs/user-FAQ.md @@ -0,0 +1,6 @@ +# Frequently Asked Questions +## Online Python Tutor + +Email philip@pgbovine.net if you have a question that isn't addressed +here. + From eb68d8d3c986b42287d3fc0105839ab882085da8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 13:14:38 -0700 Subject: [PATCH 349/502] Update v3/docs/user-FAQ.md --- v3/docs/user-FAQ.md | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md index e955fd15a..f66802040 100644 --- a/v3/docs/user-FAQ.md +++ b/v3/docs/user-FAQ.md @@ -1,6 +1,15 @@ -# Frequently Asked Questions -## Online Python Tutor +# Frequently Asked Questions from users of Online Python Tutor -Email philip@pgbovine.net if you have a question that isn't addressed -here. +Email philip@pgbovine.net if you have a question that isn't addressed here. +#### I thought all objects in Python are on the heap; why does Online Python Tutor render primitive values (e.g., numbers, strings) inside of stack frames? + +This was a design decision made to keep the display less cluttered; +if we were truly faithful to Python's semantics, that would result in far too many arrows (pointers) being drawn. +However, note that since primitives are **immutable** and thus behave identically regardless of aliasing, +it doesn't matter whether they're rendered in the stack or heap. + + +#### Did you know that stepping through code with generators looks weird when "display frames of exited functions" is selected? + +Yes, this is a known bug, but the fix isn't straightforward at the moment. From efe46519ebab99f32550b5d17d5443bac9fab737 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 13:19:42 -0700 Subject: [PATCH 350/502] yeah faq --- v3/visualize.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/visualize.html b/v3/visualize.html index dade7317c..ee9201c6f 100644 --- a/v3/visualize.html +++ b/v3/visualize.html @@ -173,6 +173,12 @@ philip@pgbovine.net

    +

    Have a question? Maybe the FAQ +or other documentation +can help.

    +

    Join the pythontutor-users mailing list to participate in user discussions and Date: Sat, 15 Sep 2012 14:38:07 -0700 Subject: [PATCH 351/502] set memory limits to protect against memory bombs --- v3/web_exec.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/v3/web_exec.py b/v3/web_exec.py index 229cb841b..e6cc4d497 100644 --- a/v3/web_exec.py +++ b/v3/web_exec.py @@ -18,6 +18,14 @@ import sys +# set ~50MB limit on virtual memory to protect against memory bombs such as: +# +# x = 2 +# while True: x = x*x +import resource +resource.setrlimit(resource.RLIMIT_AS, (50000000,50000000)) + + # set to true if you want to log queries in DB_FILE LOG_QUERIES = False From ec9cd33336f26a335b83e3007d42ffd4ff58e3a9 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 14:54:05 -0700 Subject: [PATCH 352/502] better dos protection --- v3/web_exec.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/v3/web_exec.py b/v3/web_exec.py index e6cc4d497..702c3e33a 100644 --- a/v3/web_exec.py +++ b/v3/web_exec.py @@ -18,12 +18,14 @@ import sys -# set ~50MB limit on virtual memory to protect against memory bombs such as: +# set ~300MB limit on virtual memory AND a 10-second CPU time limit +# to protect against memory bombs such as: # # x = 2 # while True: x = x*x import resource -resource.setrlimit(resource.RLIMIT_AS, (50000000,50000000)) +resource.setrlimit(resource.RLIMIT_AS, (300000000, 300000000)) +resource.setrlimit(resource.RLIMIT_CPU, (10, 10)) # set to true if you want to log queries in DB_FILE From ebb3071f93d66cab9fcfc0a54f027bc37196f96a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 15:00:22 -0700 Subject: [PATCH 353/502] more tuning --- v3/web_exec.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/v3/web_exec.py b/v3/web_exec.py index 702c3e33a..2c7752f73 100644 --- a/v3/web_exec.py +++ b/v3/web_exec.py @@ -18,14 +18,14 @@ import sys -# set ~300MB limit on virtual memory AND a 10-second CPU time limit -# to protect against memory bombs such as: +# set ~200MB virtual memory limit AND a 5-second CPU time limit +# (tuned for Webfaction shared hosting) to protect against memory bombs such as: # # x = 2 # while True: x = x*x import resource -resource.setrlimit(resource.RLIMIT_AS, (300000000, 300000000)) -resource.setrlimit(resource.RLIMIT_CPU, (10, 10)) +resource.setrlimit(resource.RLIMIT_AS, (200000000, 200000000)) +resource.setrlimit(resource.RLIMIT_CPU, (5, 5)) # set to true if you want to log queries in DB_FILE From f2e17354a22f188da60ba97f730ed7602522aec8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 16:50:47 -0700 Subject: [PATCH 354/502] Update v3/docs/user-FAQ.md --- v3/docs/user-FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md index f66802040..986017904 100644 --- a/v3/docs/user-FAQ.md +++ b/v3/docs/user-FAQ.md @@ -2,7 +2,7 @@ Email philip@pgbovine.net if you have a question that isn't addressed here. -#### I thought all objects in Python are on the heap; why does Online Python Tutor render primitive values (e.g., numbers, strings) inside of stack frames? +#### I thought all objects in Python are (conceptually) on the heap; why does Online Python Tutor render primitive values (e.g., numbers, strings) inside of stack frames? This was a design decision made to keep the display less cluttered; if we were truly faithful to Python's semantics, that would result in far too many arrows (pointers) being drawn. From 5e255e58fbfa85f55d3c8fa70e4541adbf9be7ee Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 15 Sep 2012 16:58:03 -0700 Subject: [PATCH 355/502] Update v3/docs/user-FAQ.md --- v3/docs/user-FAQ.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md index 986017904..4e65eef8a 100644 --- a/v3/docs/user-FAQ.md +++ b/v3/docs/user-FAQ.md @@ -10,6 +10,13 @@ However, note that since primitives are **immutable** and thus behave identicall it doesn't matter whether they're rendered in the stack or heap. +#### Visualizations of object-oriented programs are confusing; why are there grayed-out frames everywhere? + +We haven't "cleaned-up" the visualizations to look better for OOP code examples; +they are simply displaying what Python is doing step-by-step as those programs execute. +Please email if you have suggestions for more aesthetically-pleasing yet accurate visualizations. + + #### Did you know that stepping through code with generators looks weird when "display frames of exited functions" is selected? -Yes, this is a known bug, but the fix isn't straightforward at the moment. +Yes, this is a known bug, but sadly the fix isn't straightforward at the moment. From b732885ffa71a056ccbad47e2d233c01314f8521 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 15:29:06 -0700 Subject: [PATCH 356/502] added --- v3/docs/developer-overview.md | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 v3/docs/developer-overview.md diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md new file mode 100644 index 000000000..251174f7d --- /dev/null +++ b/v3/docs/developer-overview.md @@ -0,0 +1,4 @@ +# Overview for Developers of Online Python Tutor + +This document is a starting point for someone who wants to hack on +Online Python Tutor (thereafter abbreviated as OPT). From 736e3984fbc913719248a03783eb5f374a9e2b6a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 15:37:25 -0700 Subject: [PATCH 357/502] Update v3/docs/developer-overview.md asdf --- v3/docs/developer-overview.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 251174f7d..984845578 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -1,4 +1,29 @@ # Overview for Developers of Online Python Tutor -This document is a starting point for someone who wants to hack on +This document is a starting point for anyone who wants to hack on Online Python Tutor (thereafter abbreviated as OPT). + +Look at the Git history to see when this document was last updated; the more time +elapsed since that date, the more likely things are out-of-date. Please email +philip@pgbovine.net if you have questions. + + +## Running OPT locally on your machine + +When you check out OPT from GitHub, it's configured by default to run on +Google App Engine. So download the Google App Engine [Python SDK](https://developers.google.com/appengine/downloads) +for your OS and then run: + + cd OnlinePythonTutor/ + dev_appserver.py v3/ + +Now if you visit http://localhost:8080/ on your browser, you should see the main OPT editor screen. + +Congrats! Now you can edit your code and reload the page to test your changes. You don't need to shut down and restart +the local webserver after every edit. + +The main caveat here is that Google App Engine runs Python 2.7, so you won't be able to test Python 3 locally this way. + + +## Overall system architecture + From fa41f9431102d27d94e585a80d8de989e8680137 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 15:44:59 -0700 Subject: [PATCH 358/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 984845578..b34474a1c 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -7,6 +7,8 @@ Look at the Git history to see when this document was last updated; the more tim elapsed since that date, the more likely things are out-of-date. Please email philip@pgbovine.net if you have questions. +And please excuse the sloppy writing; I'm not trying to win any style awards here :) + ## Running OPT locally on your machine @@ -19,11 +21,22 @@ for your OS and then run: Now if you visit http://localhost:8080/ on your browser, you should see the main OPT editor screen. -Congrats! Now you can edit your code and reload the page to test your changes. You don't need to shut down and restart -the local webserver after every edit. +Congrats! Now you can edit any code in `OnlinePythonTutor/v3/` and reload the page to test your changes. +You don't need to shut down and restart the local webserver after every edit. The main caveat here is that Google App Engine runs Python 2.7, so you won't be able to test Python 3 locally this way. ## Overall system architecture +OPT consists of a pure-Python backend and an HTML/CSS/JavaScript frontend. All of the relevant files are located in `OnlinePythonTutor/v3/`, since v3 is the currently active version. + +Here is a typical user interaction sequence: + +1. The user types in Python code in the editor (powered by [CodeMirror](http://www.codemirror.net/)). +2. The user hits the "Visualize execution" button. +3. The OPT frontend sends the user's Python code as a string to the backend by making an AJAX GET request. +4. The backend executes the Python code under the supervision of the Python [bdb](http://docs.python.org/library/bdb.html) debugger module, produces an execution trace, and send that trace back to the frontend. +5. The frontend switches to a visualization pane, parses the execution trace, and renders the appropriate stack frames and heap objects. +6. When the user interacts with the frontend by stepping through execution points (forwards and backwards), the frontend renders the proper data structures WITHOUT making another call to the backend. + From 6aa3d705e3b621353d3f8c92debf05e48cf99f49 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 15:53:20 -0700 Subject: [PATCH 359/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index b34474a1c..b2cfad127 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -29,14 +29,36 @@ The main caveat here is that Google App Engine runs Python 2.7, so you won't be ## Overall system architecture -OPT consists of a pure-Python backend and an HTML/CSS/JavaScript frontend. All of the relevant files are located in `OnlinePythonTutor/v3/`, since v3 is the currently active version. - +OPT consists of a pure-Python backend and an HTML/CSS/JavaScript frontend. Here is a typical user interaction sequence: -1. The user types in Python code in the editor (powered by [CodeMirror](http://www.codemirror.net/)). +1. The user types in Python code in the web-based text editor (powered by [CodeMirror](http://www.codemirror.net/)). 2. The user hits the "Visualize execution" button. 3. The OPT frontend sends the user's Python code as a string to the backend by making an AJAX GET request. -4. The backend executes the Python code under the supervision of the Python [bdb](http://docs.python.org/library/bdb.html) debugger module, produces an execution trace, and send that trace back to the frontend. +4. The backend executes the Python code under the supervision of the Python [bdb](http://docs.python.org/library/bdb.html) debugger module, produces an execution trace, and send that trace back to the frontend in JSON format. 5. The frontend switches to a visualization pane, parses the execution trace, and renders the appropriate stack frames and heap objects. 6. When the user interacts with the frontend by stepping through execution points (forwards and backwards), the frontend renders the proper data structures WITHOUT making another call to the backend. +All relevant files are located in `OnlinePythonTutor/v3/`, since v3 is the currently-active version. + +The frontend consists of: + visualize.html + css/opt-frontend.css + js/opt-frontend.js + css/pytutor.css + js/pytutor.js + + +`pytutor.[js|css]` contains the bulk of the OPT frontend code. +`opt-frontend.[js|css]` contains code that is specific to `visualize.html` and doesn't make sense for, say, +embedding OPT visualizations into other types of webpages. + +The backend consists of: + + pg_logger.py : the main entry point for the OPT backend + pg_encoder.py : encodes the trace format into JSON to send to frontend + generate_json_trace.py : script to test the backend independent of the frontend + app.yaml and pythontutor.py : config files for Google App Engine + web_exec.py : example CGI script for deploying on CGI-enabled webservers + +bah \ No newline at end of file From 635498e8b217cc63cfc8b3a2da7c45a18fd2af2a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 16:02:08 -0700 Subject: [PATCH 360/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index b2cfad127..c0df5610e 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -24,7 +24,13 @@ Now if you visit http://localhost:8080/ on your browser, you should see the main Congrats! Now you can edit any code in `OnlinePythonTutor/v3/` and reload the page to test your changes. You don't need to shut down and restart the local webserver after every edit. -The main caveat here is that Google App Engine runs Python 2.7, so you won't be able to test Python 3 locally this way. +btw, using the default configuration, http://localhost:8080/ is actually loading the `v3/visualize.html` HTML file. +(See `v3/pythontutor.py` for details.) + +The benefit of running OPT locally is that you can test all changes without going online. So even +if you're eventually going to deploy NOT on Google App Engine, it makes good sense to install locally +for development and testing. The main caveat here is that Google App Engine currently runs Python 2.7, +so you won't be able to test Python 3 locally this way. ## Overall system architecture @@ -47,10 +53,18 @@ The frontend consists of: js/opt-frontend.js css/pytutor.css js/pytutor.js - + + +`pytutor.[js|css]` contain the bulk of the OPT frontend code. In theory, if you set things up correctly, +you should be able to **embed** an OPT visualization into any webpage with one line of JavaScript that looks like: + + var v = new ExecutionVisualizer(domRoot, traceFromBackend, optionalParams); + +Thus, the design of `pytutor.[js|css]` is meant to be as modular as possible, which means abstracting +everything in an `ExecutionVisualizer` object. This way, you can create multiple visualizer objects +to embed on the same webpage and not have them interfere with one another. -`pytutor.[js|css]` contains the bulk of the OPT frontend code. -`opt-frontend.[js|css]` contains code that is specific to `visualize.html` and doesn't make sense for, say, +`opt-frontend.[js|css]` contain code that is specific to the `visualize.html` page and doesn't make sense for, say, embedding OPT visualizations into other types of webpages. The backend consists of: @@ -61,4 +75,3 @@ The backend consists of: app.yaml and pythontutor.py : config files for Google App Engine web_exec.py : example CGI script for deploying on CGI-enabled webservers -bah \ No newline at end of file From eda1672968e046da35a447dddefeac029e13a87e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 16:17:33 -0700 Subject: [PATCH 361/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 36 ++++++++++++++++++++++++++++++++--- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index c0df5610e..72db66d1b 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -1,7 +1,9 @@ -# Overview for Developers of Online Python Tutor +# Developer's Guide Overview This document is a starting point for anyone who wants to hack on -Online Python Tutor (thereafter abbreviated as OPT). +Online Python Tutor (thereafter abbreviated as OPT). View it online at: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/developer-overview.md Look at the Git history to see when this document was last updated; the more time elapsed since that date, the more likely things are out-of-date. Please email @@ -73,5 +75,33 @@ The backend consists of: pg_encoder.py : encodes the trace format into JSON to send to frontend generate_json_trace.py : script to test the backend independent of the frontend app.yaml and pythontutor.py : config files for Google App Engine - web_exec.py : example CGI script for deploying on CGI-enabled webservers + web_exec.py : example CGI script for deploying backend on CGI-enabled webservers + + +## Hacking on the backend + +To modify the backend, you will mainly need to understand `pg_logger.py` and `pg_encoder.py`. + +### Two quick tips for starters + +First, run `generate_json_trace.py` to see the trace that the backend generates for a given input Python program. +This is the main way to do an "end-to-end" test on your backend modifications. For example, if you wrote a Python +program stored in `example.py`, then running: + + python generate_json_trace.py example.py + +will print a JSON-formatted execution trace to stdout. This is exactly what the backend sends to the frontend. +(Actually not quite: the sent trace is actually compressed to eliminate all extraneous spaces and newlines. +But for testing, I've made the trace more human-readable.) + +Second, when you're "print debugging" in the backend, you can't simply print to stdout, since `pg_logger.py` +*redirects* stdout to a buffer. Instead, you need to write all of your print statements as: + + print >> sys.stderr, +so that the output goes to stderr. + +The easiest way to debug is to insert in print statements (to stderr) and then run `generate_json_trace.py` on +small code examples. + +### \ No newline at end of file From df0eb7ef89dd88c4f91a04c581d46bd8c23a63e8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 16:38:19 -0700 Subject: [PATCH 362/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 81 +++++++++++++++++++++++++++++++---- 1 file changed, 73 insertions(+), 8 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 72db66d1b..daad58ac7 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -6,16 +6,22 @@ Online Python Tutor (thereafter abbreviated as OPT). View it online at: https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/developer-overview.md Look at the Git history to see when this document was last updated; the more time -elapsed since that date, the more likely things are out-of-date. Please email -philip@pgbovine.net if you have questions. +elapsed since that date, the more likely things are out-of-date. + +I'm assuming that you're competent in Python, JavaScript, command-line-fu, and Google-fu, +so I won't do much hand-holding in these directions. +But feel free to email philip@pgbovine.net if you have questions. And please excuse the sloppy writing; I'm not trying to win any style awards here :) -## Running OPT locally on your machine +## Getting Started: Running OPT locally on your machine + +When you check out OPT from GitHub, it's configured by default to run on Google App Engine +(but it can also run fine on a CGI-enabled webserver such as Apache). -When you check out OPT from GitHub, it's configured by default to run on -Google App Engine. So download the Google App Engine [Python SDK](https://developers.google.com/appengine/downloads) +To run a local instance, download/install +the Google App Engine [Python SDK](https://developers.google.com/appengine/downloads) for your OS and then run: cd OnlinePythonTutor/ @@ -60,7 +66,9 @@ The frontend consists of: `pytutor.[js|css]` contain the bulk of the OPT frontend code. In theory, if you set things up correctly, you should be able to **embed** an OPT visualization into any webpage with one line of JavaScript that looks like: - var v = new ExecutionVisualizer(domRoot, traceFromBackend, optionalParams); +```javascript +var v = new ExecutionVisualizer(domRoot, traceFromBackend, optionalParams); +``` Thus, the design of `pytutor.[js|css]` is meant to be as modular as possible, which means abstracting everything in an `ExecutionVisualizer` object. This way, you can create multiple visualizer objects @@ -82,6 +90,7 @@ The backend consists of: To modify the backend, you will mainly need to understand `pg_logger.py` and `pg_encoder.py`. + ### Two quick tips for starters First, run `generate_json_trace.py` to see the trace that the backend generates for a given input Python program. @@ -97,11 +106,67 @@ But for testing, I've made the trace more human-readable.) Second, when you're "print debugging" in the backend, you can't simply print to stdout, since `pg_logger.py` *redirects* stdout to a buffer. Instead, you need to write all of your print statements as: - print >> sys.stderr, +```python +print >> sys.stderr, +``` so that the output goes to stderr. The easiest way to debug is to insert in print statements (to stderr) and then run `generate_json_trace.py` on small code examples. -### \ No newline at end of file + +### Backend control flow + +Let's trace through a typical backend run to get a sense of how it works: + +The main entry point is this function in `pg_logger.py`: + +```python +def exec_script_str(script_str, cumulative_mode, finalizer_func): +``` + +`script_str` is the entire string contents of the Python program for the backend to execute. +Ignore `cumulative_mode` for now (just set it to `False`). `finalizer_func` is the function to call +after the backend is done generating a trace. + +Let's look at how `generate_json_trace.py` calls `exec_script_str` (using a simplified version of the code): + +```python +import pg_logger, json + +def json_finalizer(input_code, output_trace): + ret = dict(code=input_code, trace=output_trace) + json_output = json.dumps(ret, indent=2) + print(json_output) + +pg_logger.exec_script_str(open("example.py").read(), False, json_finalizer) +``` + +In this simplified example, the script opens `example.py`, reads its contents into a string, and passes it +into `exec_script_str`. The finalizer function is `json_finalizer`, which takes two parameters -- +the original code from `example.py` (`input_code`) and the execution trace that it produced (`output_trace`) -- +inserts both into a dict, encodes that dict as a JSON object, and then prints that JSON object to stdout. +That's why when you run `generate_json_trace.py`, its output is a JSON object printed to stdout. + +Note that if you pass in another finalizer function, then you can do other actions like postprocessing +the output trace or saving it to a file rather than printing to stdout. + +Now that you know what you pass into `exec_script_str` and what comes out of it, let's dive into its guts +to see how that execution trace (`output_trace`) is produced. Here is the code for `exec_script_str` in `pg_logger.py`: + +```python +def exec_script_str(script_str, cumulative_mode, finalizer_func): + logger = PGLogger(cumulative_mode, finalizer_func) + + try: + logger._runscript(script_str) + except bdb.BdbQuit: + pass + finally: + logger.finalize() +``` + +This code creates a `PGLogger` object then calls its `_runscript` method to run the script passed in as `script_str`. +After execution finishes (possibly due to a bdb-related exception), the `finalize` method is run. This method +does some postprocessing of the trace (`self.trace`) and then calls the user-supplied `finalizer_func`. From e6541327d51e70e8a48ec86e7b0ae6422345da1e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 16:46:05 -0700 Subject: [PATCH 363/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index daad58ac7..4ada5b1ab 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -170,3 +170,23 @@ def exec_script_str(script_str, cumulative_mode, finalizer_func): This code creates a `PGLogger` object then calls its `_runscript` method to run the script passed in as `script_str`. After execution finishes (possibly due to a bdb-related exception), the `finalize` method is run. This method does some postprocessing of the trace (`self.trace`) and then calls the user-supplied `finalizer_func`. + +`PGLogger` is a subclass of [bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb), +which is the Python standard debugger module. It stores a ton of fields to record what +is going on as the target program (that the user passed in) executes. Its `_runscript` method +is where the action starts. This method first sets up a sandboxed environment containing a restricted +set of builtins (`user_builtins`) and redirection for stdout (`user_stdout`), and then executes: + +```python + try: + self.run(script_str, user_globals, user_globals) + except SystemExit: + raise bdb.BdbQuit +``` + +The `run` method is actually [inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb.run). +It executes the script in a modified global environment (`user_globals`). + +Ok, the debugger has just started executing the script that the user has passed in (from `example.py` in our example). +What happens now? + From 93bbe9c9b0cae47c3ace683a1f9f7cd2388487b6 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 18:17:23 -0700 Subject: [PATCH 364/502] bam --- v3/README | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/v3/README b/v3/README index b63b1d1fc..1fd36b8f4 100644 --- a/v3/README +++ b/v3/README @@ -1,4 +1,7 @@ -Thanks to John DeNero, this version of Online Python Tutor (v3) should work on both Python 2 and 3. +This is the latest version of Online Python Tutor -TODO: write more detailed instructions for running on Google App Engine (Python 2.7) and CGI (Python 2.X or 3.X) +Thanks to John DeNero, this version works on both Python 2 and 3. + +All documentation is viewable online at: + https://github.com/pgbovine/OnlinePythonTutor/tree/master/v3/docs From 8d4cb581cf122dd5e37ef72ae39bb32cda32c9f2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 18:34:08 -0700 Subject: [PATCH 365/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 113 +++++++++++++++++++--------------- 1 file changed, 64 insertions(+), 49 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 4ada5b1ab..00fd98a21 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -10,7 +10,10 @@ elapsed since that date, the more likely things are out-of-date. I'm assuming that you're competent in Python, JavaScript, command-line-fu, and Google-fu, so I won't do much hand-holding in these directions. -But feel free to email philip@pgbovine.net if you have questions. + +This guy isn't meant to be comprehensive; rather, it's just a starting point for learning about the code +and development workflow. You will undoubtedly still be confused about details after reading it, so +feel free to email philip@pgbovine.net if you have questions. And please excuse the sloppy writing; I'm not trying to win any style awards here :) @@ -36,7 +39,7 @@ btw, using the default configuration, http://localhost:8080/ is actually loading (See `v3/pythontutor.py` for details.) The benefit of running OPT locally is that you can test all changes without going online. So even -if you're eventually going to deploy NOT on Google App Engine, it makes good sense to install locally +if you're eventually going to deploy on something other than Google App Engine, it still makes sense to install locally for development and testing. The main caveat here is that Google App Engine currently runs Python 2.7, so you won't be able to test Python 3 locally this way. @@ -46,45 +49,49 @@ so you won't be able to test Python 3 locally this way. OPT consists of a pure-Python backend and an HTML/CSS/JavaScript frontend. Here is a typical user interaction sequence: -1. The user types in Python code in the web-based text editor (powered by [CodeMirror](http://www.codemirror.net/)). +1. The user visits [visualize.html](http://pythontutor.com/visualize.html) and types in Python code in the web-based text editor. 2. The user hits the "Visualize execution" button. 3. The OPT frontend sends the user's Python code as a string to the backend by making an AJAX GET request. -4. The backend executes the Python code under the supervision of the Python [bdb](http://docs.python.org/library/bdb.html) debugger module, produces an execution trace, and send that trace back to the frontend in JSON format. -5. The frontend switches to a visualization pane, parses the execution trace, and renders the appropriate stack frames and heap objects. -6. When the user interacts with the frontend by stepping through execution points (forwards and backwards), the frontend renders the proper data structures WITHOUT making another call to the backend. +4. The backend executes the Python code under the supervision of the Python [bdb](http://docs.python.org/library/bdb.html) debugger, produces an execution trace, and send that trace back to the frontend in JSON format. +5. The frontend switches to a visualization display, parses the execution trace, and renders the appropriate stack frames, heap objects, and pointers. +6. When the user interacts with the frontend by stepping through execution points (forwards and backwards), the frontend renders the proper data structures **without** making another subsequent call to the backend. All relevant files are located in `OnlinePythonTutor/v3/`, since v3 is the currently-active version. The frontend consists of: - visualize.html - css/opt-frontend.css - js/opt-frontend.js - css/pytutor.css - js/pytutor.js - +``` +visualize.html +css/opt-frontend.css +js/opt-frontend.js +css/pytutor.css +js/pytutor.js + +``` -`pytutor.[js|css]` contain the bulk of the OPT frontend code. In theory, if you set things up correctly, -you should be able to **embed** an OPT visualization into any webpage with one line of JavaScript that looks like: +`pytutor.[js|css]` contain the bulk of the OPT frontend code. In theory, you should be able to **embed** an +OPT visualization into any webpage with one line of JavaScript that looks like: ```javascript var v = new ExecutionVisualizer(domRoot, traceFromBackend, optionalParams); ``` Thus, the design of `pytutor.[js|css]` is meant to be as modular as possible, which means abstracting -everything in an `ExecutionVisualizer` object. This way, you can create multiple visualizer objects -to embed on the same webpage and not have them interfere with one another. +everything in an `ExecutionVisualizer` class. This way, you can create multiple visualizer objects +to embed on the same webpage without them interfering with one another. `opt-frontend.[js|css]` contain code that is specific to the `visualize.html` page and doesn't make sense for, say, -embedding OPT visualizations into other types of webpages. +embedding OPT visualizations into other webpages. The backend consists of: +``` +pg_logger.py - the main entry point to the OPT backend +pg_encoder.py - encodes the trace format into JSON to send to frontend +generate_json_trace.py - script to test the backend independent of the frontend +app.yaml, pythontutor.py - files for deploying on Google App Engine +web_exec.py - example CGI script for deploying backend on CGI-enabled webservers +``` - pg_logger.py : the main entry point for the OPT backend - pg_encoder.py : encodes the trace format into JSON to send to frontend - generate_json_trace.py : script to test the backend independent of the frontend - app.yaml and pythontutor.py : config files for Google App Engine - web_exec.py : example CGI script for deploying backend on CGI-enabled webservers - +The backend works with both Python 2 and 3. ## Hacking on the backend @@ -93,15 +100,21 @@ To modify the backend, you will mainly need to understand `pg_logger.py` and `pg ### Two quick tips for starters +Since the backend's details might change, rather than documenting every last detail, I'd rather equip you with +the knowledge needed to experiment with the code yourself, since that knowledge is less likely to get outdated. + First, run `generate_json_trace.py` to see the trace that the backend generates for a given input Python program. -This is the main way to do an "end-to-end" test on your backend modifications. For example, if you wrote a Python -program stored in `example.py`, then running: +This is the main way to do an "end-to-end" test on your backend modifications. For example, if you want the backend +to process a Python program stored in `example.py`, then run: - python generate_json_trace.py example.py - -will print a JSON-formatted execution trace to stdout. This is exactly what the backend sends to the frontend. +``` +python generate_json_trace.py example.py +``` + +Doing so will print a JSON-formatted execution trace to stdout. +This data is exactly what the backend sends to the frontend. (Actually not quite: the sent trace is actually compressed to eliminate all extraneous spaces and newlines. -But for testing, I've made the trace more human-readable.) +But for testing purposes, I've made the trace more human-readable.) Second, when you're "print debugging" in the backend, you can't simply print to stdout, since `pg_logger.py` *redirects* stdout to a buffer. Instead, you need to write all of your print statements as: @@ -112,13 +125,14 @@ print >> sys.stderr, so that the output goes to stderr. -The easiest way to debug is to insert in print statements (to stderr) and then run `generate_json_trace.py` on -small code examples. +The easiest way to debug or investigate how some part of the code works is to **insert in print statements (to stderr) +and then run `generate_json_trace.py` on small code examples**. Trust me -- being able to do this is way more +effective than memorizing detailed documentation (which could be outdated by the time you read it!) ### Backend control flow -Let's trace through a typical backend run to get a sense of how it works: +Let's now trace through a typical backend run to get a sense of how it works. The main entry point is this function in `pg_logger.py`: @@ -126,11 +140,11 @@ The main entry point is this function in `pg_logger.py`: def exec_script_str(script_str, cumulative_mode, finalizer_func): ``` -`script_str` is the entire string contents of the Python program for the backend to execute. +`script_str` contains the entire string contents of the Python program for the backend to execute. Ignore `cumulative_mode` for now (just set it to `False`). `finalizer_func` is the function to call after the backend is done generating a trace. -Let's look at how `generate_json_trace.py` calls `exec_script_str` (using a simplified version of the code): +Let's look at how `generate_json_trace.py` calls `exec_script_str` (using a simplified version of its code): ```python import pg_logger, json @@ -143,7 +157,7 @@ def json_finalizer(input_code, output_trace): pg_logger.exec_script_str(open("example.py").read(), False, json_finalizer) ``` -In this simplified example, the script opens `example.py`, reads its contents into a string, and passes it +In this simplified example, the script opens `example.py`, reads its contents into a string, and passes that string into `exec_script_str`. The finalizer function is `json_finalizer`, which takes two parameters -- the original code from `example.py` (`input_code`) and the execution trace that it produced (`output_trace`) -- inserts both into a dict, encodes that dict as a JSON object, and then prints that JSON object to stdout. @@ -152,13 +166,13 @@ That's why when you run `generate_json_trace.py`, its output is a JSON object pr Note that if you pass in another finalizer function, then you can do other actions like postprocessing the output trace or saving it to a file rather than printing to stdout. -Now that you know what you pass into `exec_script_str` and what comes out of it, let's dive into its guts -to see how that execution trace (`output_trace`) is produced. Here is the code for `exec_script_str` in `pg_logger.py`: +Now that you know what's passed into `exec_script_str` and what comes out of it, let's dive into its guts +to see how that all-important execution trace (`output_trace`) is produced. +Here is the code for `exec_script_str` in `pg_logger.py`: ```python def exec_script_str(script_str, cumulative_mode, finalizer_func): logger = PGLogger(cumulative_mode, finalizer_func) - try: logger._runscript(script_str) except bdb.BdbQuit: @@ -167,26 +181,27 @@ def exec_script_str(script_str, cumulative_mode, finalizer_func): logger.finalize() ``` -This code creates a `PGLogger` object then calls its `_runscript` method to run the script passed in as `script_str`. +This code creates a `PGLogger` object then calls its `_runscript` method to run the user's program (from `example.py`), +which is passed in as `script_str`. After execution finishes (possibly due to a bdb-related exception), the `finalize` method is run. This method -does some postprocessing of the trace (`self.trace`) and then calls the user-supplied `finalizer_func`. +does some postprocessing of the trace (`self.trace`) and then finally calls the user-supplied `finalizer_func`. `PGLogger` is a subclass of [bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb), -which is the Python standard debugger module. It stores a ton of fields to record what -is going on as the target program (that the user passed in) executes. Its `_runscript` method +which is the Python standard debugger module. It stores lots of fields to record what +is going on as it executes the program that the user passed in as `script_str`. Its `_runscript` method is where the action starts. This method first sets up a sandboxed environment containing a restricted -set of builtins (`user_builtins`) and redirection for stdout (`user_stdout`), and then executes: +set of builtins (`user_builtins`) and redirection for stdout (`user_stdout`), and then executes this code: ```python - try: - self.run(script_str, user_globals, user_globals) - except SystemExit: - raise bdb.BdbQuit +try: + self.run(script_str, user_globals, user_globals) +except SystemExit: + raise bdb.BdbQuit ``` The `run` method is actually [inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb.run). -It executes the script in a modified global environment (`user_globals`). +It executes the contents of `script_str` in a modified global environment (`user_globals`). -Ok, the debugger has just started executing the script that the user has passed in (from `example.py` in our example). +Ok, the debugger has just started executing the script that the user passed in (from `example.py` in our example). What happens now? From 7ddb75ffd0ffd91c2b183962c561bac8f0c8a35f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 19:11:57 -0700 Subject: [PATCH 366/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 00fd98a21..b278de022 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -202,6 +202,26 @@ except SystemExit: The `run` method is actually [inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb.run). It executes the contents of `script_str` in a modified global environment (`user_globals`). -Ok, the debugger has just started executing the script that the user passed in (from `example.py` in our example). -What happens now? +Ok, the debugger has just started executing the program that the user passed in (from `example.py` in our example). +What happens now? Here's where the magic happens. Look at the methods called +`user_call`, `user_return`, `user_exception`, and `user_line`. Again, those are all +[inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb). As the user's program is running, bdb +will pause execution at every function call, return, exception, and single-step and transfer control +over to the respective handler methods. Since `PGLogger` overrides those methods, it can hijack control at +crucial points during program execution to do what it needs to do. + +Since `PGLogger` does similar things regardless of why execution was paused (function call, return, exception, or single-step), +all handlers dispatch to a giant method called `interaction`. + +During a call to `interaction`, the backend collects the state of the stack and all run-time data and then creates a +trace entry (`trace_entry` dict). Then it appends `trace_entry` onto `self.trace`: + +```python +self.trace.append(trace_entry) +``` + +Every time bdb pauses the user's program's execution and dispatches to `interaction` in `PGLogger`, one new trace +entry is created. At the end of execution, `self.trace` contains as many trace entries as there were "steps" +in the user's program execution. +(To guard against infinite loops, `PGLogger` terminates execution when `MAX_EXECUTED_LINES` steps have been executed.) From 506134d4ec1451cea548052b6ae31c3227ef676f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 19:15:17 -0700 Subject: [PATCH 367/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index b278de022..81fa602e9 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -93,7 +93,7 @@ web_exec.py - example CGI script for deploying backend on CGI-enabled webservers The backend works with both Python 2 and 3. -## Hacking on the backend +## Hacking the backend To modify the backend, you will mainly need to understand `pg_logger.py` and `pg_encoder.py`. @@ -205,7 +205,10 @@ It executes the contents of `script_str` in a modified global environment (`user Ok, the debugger has just started executing the program that the user passed in (from `example.py` in our example). What happens now? Here's where the magic happens. Look at the methods called `user_call`, `user_return`, `user_exception`, and `user_line`. Again, those are all -[inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb). As the user's program is running, bdb +[inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb); +take a minute to read up on what they're supposed to do. + +As the user's program is running, bdb will pause execution at every function call, return, exception, and single-step and transfer control over to the respective handler methods. Since `PGLogger` overrides those methods, it can hijack control at crucial points during program execution to do what it needs to do. @@ -225,3 +228,12 @@ entry is created. At the end of execution, `self.trace` contains as many trace e in the user's program execution. (To guard against infinite loops, `PGLogger` terminates execution when `MAX_EXECUTED_LINES` steps have been executed.) +### Execution Trace Format + +A lot of complicated stuff happens within `interaction` to grab a snapshot of the execution state and encode +it into an execution trace entry. I've written up a separate document describing the exact format of an execution trace: + + +## Hacking the frontend + +(TODO: write me sometime!) \ No newline at end of file From aa620a2d3b7f29c36161ac65df56bee7d72cd53e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 19:18:10 -0700 Subject: [PATCH 368/502] bah --- v3/docs/opt-trace-format.md | 25 +++++++++++++++++++++++++ v3/docs/opt-trace-format.txt | 6 ------ 2 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 v3/docs/opt-trace-format.md delete mode 100644 v3/docs/opt-trace-format.txt diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md new file mode 100644 index 000000000..251f52211 --- /dev/null +++ b/v3/docs/opt-trace-format.md @@ -0,0 +1,25 @@ +# Execution Trace Format + +This document describes the execution trace format that serves as the +interface between the frontend and backend of Online Python Tutor +(thereafter abbreviated as OPT). + +It is a starting point for anyone who wants to create a different +backend (e.g., for another programming language) or a different frontend +(e.g., for visually-impaired students). View it online at: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-format.md + +Look at the Git history to see when this document was last updated; the +more time elapsed since that date, the more likely things are +out-of-date. + +I'm assuming that you're competent in Python, JSON, command-line-fu, and +Google-fu. Feel free to email philip@pgbovine.net if you have questions. + +And please excuse the sloppy writing; I'm not trying to win any style awards here :) + + +## Trace Overview + +(TODO: write me sometime!) diff --git a/v3/docs/opt-trace-format.txt b/v3/docs/opt-trace-format.txt deleted file mode 100644 index 45d8617bf..000000000 --- a/v3/docs/opt-trace-format.txt +++ /dev/null @@ -1,6 +0,0 @@ -Online Python Tutor execution trace format ------- - -[TODO: write me!] - -[TODO: move to GitHub Markdown format] From 47ad26cc4337c72fea8bc39427f6ccc8a4b7dae8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 19:18:48 -0700 Subject: [PATCH 369/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 81fa602e9..0eed09985 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -233,6 +233,8 @@ in the user's program execution. A lot of complicated stuff happens within `interaction` to grab a snapshot of the execution state and encode it into an execution trace entry. I've written up a separate document describing the exact format of an execution trace: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-format.md + ## Hacking the frontend From 392e9f457d4862a244aa4fc90c83c4533464f324 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 19:23:08 -0700 Subject: [PATCH 370/502] Update v3/docs/developer-overview.md lazy eval --- v3/docs/developer-overview.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 0eed09985..80519f678 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -236,6 +236,12 @@ it into an execution trace entry. I've written up a separate document describing https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-format.md +### Backend regression tests + +If you're paranoid about your backend changes breaking stuff, please bug me, and I'll write up docs +on how to run the regression test suite. + + ## Hacking the frontend (TODO: write me sometime!) \ No newline at end of file From 0c99555561933a70be308e253d7d1e52b4cc2ab0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 20:11:17 -0700 Subject: [PATCH 371/502] bah --- README | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README b/README index 563673bad..8ed37cb90 100644 --- a/README +++ b/README @@ -1,6 +1,9 @@ Online Python Tutor + +http://pythontutor.com/ https://github.com/pgbovine/OnlinePythonTutor/ + Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) Permission is hereby granted, free of charge, to any person obtaining a @@ -31,9 +34,9 @@ Summary: step forwards and backwards through execution to view the run-time state of data structures. - Over 100,000 people have used Online Python Tutor to understand and - debug their programs, often as a supplement to textbooks, lecture - notes, and online programming tutorials. + So far, over 100,000 people have used Online Python Tutor to + understand and debug their programs, often as a supplement to + textbooks, lecture notes, and online programming tutorials. --- From ddb5d7e612a975509c4ffb7efb8f49e54f762f09 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 20:15:32 -0700 Subject: [PATCH 372/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 80519f678..9fa09061c 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -1,4 +1,4 @@ -# Developer's Guide Overview +# Overview for Developers This document is a starting point for anyone who wants to hack on Online Python Tutor (thereafter abbreviated as OPT). View it online at: @@ -11,7 +11,7 @@ elapsed since that date, the more likely things are out-of-date. I'm assuming that you're competent in Python, JavaScript, command-line-fu, and Google-fu, so I won't do much hand-holding in these directions. -This guy isn't meant to be comprehensive; rather, it's just a starting point for learning about the code +This guide isn't meant to be comprehensive; rather, it's just a starting point for learning about the code and development workflow. You will undoubtedly still be confused about details after reading it, so feel free to email philip@pgbovine.net if you have questions. From c6ff50e4402673678a5a197e84e278a5107a9ef8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 20:20:16 -0700 Subject: [PATCH 373/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 9fa09061c..a74345f8e 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -51,10 +51,10 @@ Here is a typical user interaction sequence: 1. The user visits [visualize.html](http://pythontutor.com/visualize.html) and types in Python code in the web-based text editor. 2. The user hits the "Visualize execution" button. -3. The OPT frontend sends the user's Python code as a string to the backend by making an AJAX GET request. -4. The backend executes the Python code under the supervision of the Python [bdb](http://docs.python.org/library/bdb.html) debugger, produces an execution trace, and send that trace back to the frontend in JSON format. +3. The OPT frontend sends the user's Python code as a string to the backend by making an Ajax GET request. +4. The backend executes the Python code under the supervision of the Python [bdb](http://docs.python.org/library/bdb.html) debugger, produces an execution trace, and sends that trace back to the frontend in JSON format. 5. The frontend switches to a visualization display, parses the execution trace, and renders the appropriate stack frames, heap objects, and pointers. -6. When the user interacts with the frontend by stepping through execution points (forwards and backwards), the frontend renders the proper data structures **without** making another subsequent call to the backend. +6. When the user interacts with the frontend by stepping through execution points, the frontend renders the proper data structures **without** making another subsequent call to the backend. All relevant files are located in `OnlinePythonTutor/v3/`, since v3 is the currently-active version. From 65912b2444da7a5e3fc2b006de17f100f68c7575 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 20:24:18 -0700 Subject: [PATCH 374/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index a74345f8e..0e988dca9 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -113,21 +113,21 @@ python generate_json_trace.py example.py Doing so will print a JSON-formatted execution trace to stdout. This data is exactly what the backend sends to the frontend. -(Actually not quite: the sent trace is actually compressed to eliminate all extraneous spaces and newlines. +(Actually not quite: The sent trace is actually compressed to eliminate all extraneous spaces and newlines. But for testing purposes, I've made the trace more human-readable.) Second, when you're "print debugging" in the backend, you can't simply print to stdout, since `pg_logger.py` *redirects* stdout to a buffer. Instead, you need to write all of your print statements as: ```python -print >> sys.stderr, +print >> sys.stderr, ``` so that the output goes to stderr. The easiest way to debug or investigate how some part of the code works is to **insert in print statements (to stderr) and then run `generate_json_trace.py` on small code examples**. Trust me -- being able to do this is way more -effective than memorizing detailed documentation (which could be outdated by the time you read it!) +effective than memorizing detailed documentation (which could be outdated by the time you read it). ### Backend control flow From 574b49532a5e14774ed777cd1ae4ae7ee56d9695 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 20:26:05 -0700 Subject: [PATCH 375/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 1 + 1 file changed, 1 insertion(+) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 0e988dca9..469f5033d 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -147,6 +147,7 @@ after the backend is done generating a trace. Let's look at how `generate_json_trace.py` calls `exec_script_str` (using a simplified version of its code): ```python +# simplified version of generate_json_trace.py import pg_logger, json def json_finalizer(input_code, output_trace): From b597fb8112a01baf96c9ab1ab76439e5d0c1063a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 20:31:52 -0700 Subject: [PATCH 376/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 469f5033d..734e8e42c 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -200,7 +200,7 @@ except SystemExit: raise bdb.BdbQuit ``` -The `run` method is actually [inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb.run). +The `self.run` method is actually [inherited from bdb.Bdb](http://docs.python.org/library/bdb.html#bdb.Bdb.run). It executes the contents of `script_str` in a modified global environment (`user_globals`). Ok, the debugger has just started executing the program that the user passed in (from `example.py` in our example). @@ -210,11 +210,12 @@ What happens now? Here's where the magic happens. Look at the methods called take a minute to read up on what they're supposed to do. As the user's program is running, bdb -will pause execution at every function call, return, exception, and single-step and transfer control -over to the respective handler methods. Since `PGLogger` overrides those methods, it can hijack control at +will pause execution at every function call, return, exception, and single-line step (most common). +It then transfers control over to the respective handler method. +Since `PGLogger` overrides those handler methods, it can hijack control at crucial points during program execution to do what it needs to do. -Since `PGLogger` does similar things regardless of why execution was paused (function call, return, exception, or single-step), +Since `PGLogger` does similar things regardless of why execution was paused (function call, return, exception, or single-line step), all handlers dispatch to a giant method called `interaction`. During a call to `interaction`, the backend collects the state of the stack and all run-time data and then creates a @@ -226,13 +227,15 @@ self.trace.append(trace_entry) Every time bdb pauses the user's program's execution and dispatches to `interaction` in `PGLogger`, one new trace entry is created. At the end of execution, `self.trace` contains as many trace entries as there were "steps" -in the user's program execution. +in the user's program execution. Each step more-or-less corresponds to one line being executed. (To guard against infinite loops, `PGLogger` terminates execution when `MAX_EXECUTED_LINES` steps have been executed.) ### Execution Trace Format A lot of complicated stuff happens within `interaction` to grab a snapshot of the execution state and encode -it into an execution trace entry. I've written up a separate document describing the exact format of an execution trace: +it into an execution trace entry. Insert a bunch of print statements (remember, to stderr) to get a sense of what's going on. + +In addition, I've written up a separate document describing the exact format of an execution trace: https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-format.md From 5a5c139068f8cc3fc7c5bc74ad73c61773ad7da1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 17 Sep 2012 20:32:48 -0700 Subject: [PATCH 377/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 251f52211..a69c27a59 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -22,4 +22,7 @@ And please excuse the sloppy writing; I'm not trying to win any style awards her ## Trace Overview +Before you continue reading, I suggest for you to first skim the Overview for Developers doc: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/developer-overview.md + (TODO: write me sometime!) From 0bb590a608aa1e25a110f86955ed7c2ead08295e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 07:14:44 -0700 Subject: [PATCH 378/502] Update v3/docs/user-FAQ.md --- v3/docs/user-FAQ.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md index 4e65eef8a..c075c6dcf 100644 --- a/v3/docs/user-FAQ.md +++ b/v3/docs/user-FAQ.md @@ -9,6 +9,12 @@ if we were truly faithful to Python's semantics, that would result in far too ma However, note that since primitives are **immutable** and thus behave identically regardless of aliasing, it doesn't matter whether they're rendered in the stack or heap. +#### Whoa, I get an unknown error when I try to use the `re` module (or other modules) + +Yep, I currently have limited support for external modules. The only module functions that work +are those involving native C function calls (e.g., "import math; x = math.sqrt(9)"). Making pure-Python +function calls in modules will lead to an unknown error. + #### Visualizations of object-oriented programs are confusing; why are there grayed-out frames everywhere? From 030db3424c54043b0e09789c87606eba67288d45 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 07:25:22 -0700 Subject: [PATCH 379/502] Update v3/docs/user-FAQ.md --- v3/docs/user-FAQ.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md index c075c6dcf..00cf5405c 100644 --- a/v3/docs/user-FAQ.md +++ b/v3/docs/user-FAQ.md @@ -11,9 +11,9 @@ it doesn't matter whether they're rendered in the stack or heap. #### Whoa, I get an unknown error when I try to use the `re` module (or other modules) -Yep, I currently have limited support for external modules. The only module functions that work -are those involving native C function calls (e.g., "import math; x = math.sqrt(9)"). Making pure-Python -function calls in modules will lead to an unknown error. +Yep, Online Python Tutor currently has very limited support for external modules. The only module functions that work +are those involving native C function calls (e.g., "import math; x = math.sqrt(9)"). Making **pure-Python +function calls** in external modules will lead to an unknown error. #### Visualizations of object-oriented programs are confusing; why are there grayed-out frames everywhere? From aa9881fda455d2cf4f5003189f07055b7b9afd38 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 07:26:04 -0700 Subject: [PATCH 380/502] Update v3/docs/user-FAQ.md --- v3/docs/user-FAQ.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md index 00cf5405c..80f47dbd8 100644 --- a/v3/docs/user-FAQ.md +++ b/v3/docs/user-FAQ.md @@ -20,9 +20,9 @@ function calls** in external modules will lead to an unknown error. We haven't "cleaned-up" the visualizations to look better for OOP code examples; they are simply displaying what Python is doing step-by-step as those programs execute. -Please email if you have suggestions for more aesthetically-pleasing yet accurate visualizations. +Please email if you have suggestions for more aesthetically-pleasing yet accurate OOP visualizations. #### Did you know that stepping through code with generators looks weird when "display frames of exited functions" is selected? -Yes, this is a known bug, but sadly the fix isn't straightforward at the moment. +Yep, this is a known bug, but sadly the fix isn't straightforward at the moment. From 7b486974a6ceb16e83c30b392a0a0759a0699a2b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 09:57:25 -0700 Subject: [PATCH 381/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 194 +++++++++++++++++++++++++++++++++++- 1 file changed, 193 insertions(+), 1 deletion(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index a69c27a59..1f1c35d78 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -25,4 +25,196 @@ And please excuse the sloppy writing; I'm not trying to win any style awards her Before you continue reading, I suggest for you to first skim the Overview for Developers doc: https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/developer-overview.md -(TODO: write me sometime!) +Pay particular attention to what `generate_json_trace.py` is and how to run it: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/developer-overview.md#two-quick-tips-for-starters + +Let's start with a simple example. Create an `example.py` file with the following contents: +```python +x = 5 +y = 10 +z = x + y +``` + +Now run: +``` +python generate_json_trace.py example.py +``` + +and you should see the following output: +```javascript +{ + "code": "x = 5\ny = 10\nz = x + y\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 15 + }, + "heap": {}, + "line": 3, + "event": "return" + } + ] +} +``` + +Recall that when OPT is deployed on a webserver, the backend generates this trace and sends it to the frontend, +where it will be turned into a visualization. + +[Click here](http://pythontutor.com/visualize.html#code=x+%3D+5%0Ay+%3D+10%0Az+%3D+x+%2B+y&mode=display&cumulative=false&py=2&curInstr=0) +to see the visualization of this trace (open it in a new window if possible). +Note that the trace object contains *all* of the information required to create this visualization. + +The trace is a JSON object with two fields: `code` is the string contents of the code +to be visualized, and `trace` is the actual execution trace, which consists of a list of execution points. + +In the above example, `trace` is a list of four elements since there are four execution points. +If you step through the visualization, you'll notice that there are exactly four steps, one for each +element of the `trace` list. +(Sometimes the frontend will filter out some redundant entries in `trace`, but a simplifying assumption +is that `trace.length` is the number of execution steps that the frontend renders.) + +Ok, still with me? Let's now dig into what an individual element in `trace` looks like. + + +## Execution Point Objects + +The central type of object in a trace is an "execution point", which represents the state of the computer's (abstract) +memory at a certain point in execution. Recall that a trace is an ordered list of execution points. + +The key concept to understand is that the frontend renders an execution point by simply looking at +the contents of the corresponding execution point object, **without consulting any of its neighbors**. + +Ok, let's now look at the **four** execution points in our above example in order. The first point +is what the frontend visualizes when it says "Step 1 of 3": + +```javascript + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + } +``` + +This is pretty much what an "empty" execution point object looks like. `line` shows the line number of the +line that is *about to execute*, which is line 1 in this case. And `event` is `step_line`, which indicates +that an ordinary single-line step event is about to occur. `func_name` is the function that's currently +executing: In this case, `` is the faux name for top-level code that's not in any function. +All of the other fields are empty, and if you look at the visualization, nothing is rendered in the "Frames" +or "Objects" panes. + +Ok now let's look at the second point, which corresponds to the frontend visualization when it says +"Step 2 of 3": + +```javascript + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + } +``` + + + +```javascript + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + } +``` + +```javascript + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 15 + }, + "heap": {}, + "line": 3, + "event": "return" + } +``` \ No newline at end of file From edceec1ea1b0619d0e28ee2a91aab50ab92b468f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 10:04:57 -0700 Subject: [PATCH 382/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 1f1c35d78..d267c82bb 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -177,6 +177,12 @@ Ok now let's look at the second point, which corresponds to the frontend visuali } ``` +Ok note that `line` is now 2, which means that line 2 is *about* to execute (yes, this convention is a bit confusing, +but it's what the bdb debugger gives us). `globals` is now populated with one key-value pair: the global variable +`x` has a value of `5`. That makes sense since we just executed line 1 (from the previous execution point), +which was the code `x = 5`. If you look at the +[visualization at this step](http://pythontutor.com/visualize.html#code=x+%3D+5%0Ay+%3D+10%0Az+%3D+x+%2B+y&mode=display&cumulative=false&py=2&curInstr=1), +you'll see that `x` has been assigned to `5`. ```javascript From b046cd53be61713e967c09cc707f86a16a43d66f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 10:14:40 -0700 Subject: [PATCH 383/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index d267c82bb..1d1eeb727 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -184,6 +184,8 @@ which was the code `x = 5`. If you look at the [visualization at this step](http://pythontutor.com/visualize.html#code=x+%3D+5%0Ay+%3D+10%0Az+%3D+x+%2B+y&mode=display&cumulative=false&py=2&curInstr=1), you'll see that `x` has been assigned to `5`. +Ok let's keep marching to the next execution point, which is the one that corresponds to "Step 3 of 3" +in the frontend: ```javascript { @@ -204,6 +206,20 @@ you'll see that `x` has been assigned to `5`. } ``` +Now `line` is 3, because we're about to execute line 3 (we just executed lines 1 and 2). Notice that there is a +new key-value pair in`globals` showing that `y` has been assigned to `10`. No surprises here, since we just +executed the line `y = 10`. + +Ok now this is where I want to talk about `ordered_globals`, which is a list of global variables (i.e., +keys in `globals`) in the order that the frontend should visualize them. The backend appends variable +names in their order of appearance throughout execution. Why is this list necessary? Because `globals` +is an object whose keys are unsorted, so if you don't also keep an `ordered_globals` sorted list, +then the visualization might end up being jarring. For instance, at one execution point, it might +render `x` and then `y`, and at the next execution point, it might render `y` and then `x`, thereby +causing the visualization to "jitter" unnecessarily. And I've found that it looks aesthetically pleasing +when variables are sorted in their order of appearance as you step forwards through execution. + + ```javascript { "ordered_globals": [ From 29fd17085a019b864dc6a7ede885883cf1fe131b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 10:22:22 -0700 Subject: [PATCH 384/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 1d1eeb727..591f8c3bf 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -219,6 +219,9 @@ render `x` and then `y`, and at the next execution point, it might render `y` an causing the visualization to "jitter" unnecessarily. And I've found that it looks aesthetically pleasing when variables are sorted in their order of appearance as you step forwards through execution. +Still with me? Ok, let's get to the final execution point, which corresponds to the frontend displaying +"Program terminated" ([click here](http://pythontutor.com/visualize.html#code=x+%3D+5%0Ay+%3D+10%0Az+%3D+x+%2B+y&mode=display&cumulative=false&py=2&curInstr=3) +to jump directly there). ```javascript { @@ -239,4 +242,14 @@ when variables are sorted in their order of appearance as you step forwards thro "line": 3, "event": "return" } -``` \ No newline at end of file +``` + +This time, the event is a `return`, which signifies "returning" from the top-level module code (meaning the program +has terminated). Note that now there is another new variable `z`, which is bound to `15` since `z = x + y` just executed. +Note that, again, `ordered_globals` shows all three variables in their order of appearance. + +Ok, that's it for the basic tour! + +## Heap Objects + +## Function Stack Frames From 04000150bdf4f6481b25a7027523dcf9e57b7fa4 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 10:46:47 -0700 Subject: [PATCH 385/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 52 ++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 591f8c3bf..3bdffebac 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -248,8 +248,58 @@ This time, the event is a `return`, which signifies "returning" from the top-lev has terminated). Note that now there is another new variable `z`, which is bound to `15` since `z = x + y` just executed. Note that, again, `ordered_globals` shows all three variables in their order of appearance. -Ok, that's it for the basic tour! +Ok, that's it for the basic tour. Next let's talk about what happens when the `heap` field isn't empty. + ## Heap Objects +The previous example contained only primitive values that JSON could encode directly within the `globals` object. +JSON natively supports numbers, strings, and boolean values (which map well to Python's "primitive" data types). +But what happens when the user's program contains compound +Python data types such as lists, tuples, dicts, sets, etc.? + +Create an `example.py` file with the following contents: +```python +x = [1, 2, 3] +y = ('Alice', 'Bob', 'Cindy') +z = {'carrot': 'vegetable', 'mouse': 'animal', 'rock': 'mineral'} +``` + +You should know how to generate a trace by now. The trace again contains **four** elements since there are +four execution steps (one for the very beginning of execution plus three executed lines). + +"Step 1 of 3" is boring since nothing is displayed. Let's jump to "Step 2 of 3" +([click here](http://pythontutor.com/visualize.html#code=x+%3D+%5B1,+2,+3%5D%0Ay+%3D+('Alice',+'Bob',+'Cindy')%0Az+%3D+%7B'carrot'%3A+'vegetable',+'mouse'%3A+'animal',+'rock'%3A+'mineral'%7D%0A&mode=display&cumulative=false&py=2&curInstr=1)) + +The visualization shows that `x` points to a list containing `[1, 2, 3]`. This is the corresponding execution +point object: + +```javascript + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + } +``` + + ## Function Stack Frames From dab9d553a5afa9d4b70d44e86d1d14270b0da348 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 11:01:42 -0700 Subject: [PATCH 386/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 77 ++++++++++++++++++++++++++++++++++++- 1 file changed, 75 insertions(+), 2 deletions(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 3bdffebac..156cf7e12 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -269,9 +269,9 @@ You should know how to generate a trace by now. The trace again contains **four* four execution steps (one for the very beginning of execution plus three executed lines). "Step 1 of 3" is boring since nothing is displayed. Let's jump to "Step 2 of 3" -([click here](http://pythontutor.com/visualize.html#code=x+%3D+%5B1,+2,+3%5D%0Ay+%3D+('Alice',+'Bob',+'Cindy')%0Az+%3D+%7B'carrot'%3A+'vegetable',+'mouse'%3A+'animal',+'rock'%3A+'mineral'%7D%0A&mode=display&cumulative=false&py=2&curInstr=1)) +(click here) -The visualization shows that `x` points to a list containing `[1, 2, 3]`. This is the corresponding execution +The visualization now shows `x` pointing to a list containing `[1, 2, 3]`. This is the corresponding execution point object: ```javascript @@ -301,5 +301,78 @@ point object: } ``` +Note that in `globals`, `x` now refers to a `["REF", 1]` object, which means a *reference* (pointer) to a heap +object with an ID of 1. + +Let's now look at `heap`, which is a mapping of heap object IDs to their contents. The current heap has one +object with an ID of 1. That object is a list of [1, 2, 3], which is represented as: + +```javascript +["LIST", 1, 2, 3] +``` + +Let's skip forward to the end of execution ("Program terminated"): +(click here) + +Now there are three variables -- `x` points to a list, `y` points to a tuple, and `z` points to a dict. +This execution point object is getting kinda big: + +```javascript + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "TUPLE", + "Alice", + "Bob", + "Cindy" + ], + "3": [ + "DICT", + [ + "carrot", + "vegetable" + ], + [ + "mouse", + "animal" + ], + [ + "rock", + "mineral" + ] + ] + }, + "line": 3, + "event": "return" + } +``` ## Function Stack Frames From 15d0790dba747fe74e8efcab53c51a6460152bb0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 11:14:15 -0700 Subject: [PATCH 387/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 108 ++++++++++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 156cf7e12..002f6f1b2 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -375,4 +375,112 @@ This execution point object is getting kinda big: } ``` +Note that in `globals`, `x` refers to heap object 1, `y` to heap object 2, and `z` to 3. If you then look at `heap`, +you'll see that objects 1, 2, and 3 map to the corresponding list, tuple, and dict, respectively. + +Look at the comments at the top of `pg_encoder.py` to learn the encoding format for various Python data types: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/pg_encoder.py + +## Heap-to-Heap References + +In the above example, the heap objects contained only primitives (numbers and strings), which can be directly +encoded within those objects' representations in `heap`. + +But heap objects can themselves point to other heap objects. Let's look at the following example: + +```python +c = (1, (2, None)) +d = (1, c) +``` + +Jump to the end of execution and notice that: + +- `c` points to a tuple +- the second element of that tuple points to another tuple +- `d` points to a tuple whose second element points to what `c` points to + +Let's look at the execution point object that corresponds to this visualization: + +```javascript + { + "ordered_globals": [ + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ], + "3": [ + "TUPLE", + 1, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } +``` + +What's going on here? Let's start with `globals` again. `c` points to heap object 1 (`["REF", 1]`), and `d` points +to heap object 3 (`["REF", 3]`). + +Let's now look at `heap`. Heap object 1 is: + +```javascript +["TUPLE", 1, ["REF", 2]] +``` + +What does this mean? It means that it represents a tuple whose first element is the number `1` and whose +second element is a reference (pointer) to heap object 2. + +Ok let's look at heap object 2: + +```javascript +["TUPLE", 2, null] +``` + +which corresponds to the Python tuple object `(2, None)`. + +Finally, heap object 3 (which `d` points to) is: + +```javascript +["TUPLE", 1, ["REF", 1]] +``` + +which corresponds to the Python object `(1, c)`. + +The ability to put "REF" objects inside of heap objects enables an arbitrary object graph to be +represented in the execution trace. + + ## Function Stack Frames + +(TODO: WRITE ME!) From 29e224690466fe20c9c99d7ca47b656662bf328b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 11:26:44 -0700 Subject: [PATCH 388/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 002f6f1b2..4ee3594e3 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -305,14 +305,14 @@ Note that in `globals`, `x` now refers to a `["REF", 1]` object, which means a * object with an ID of 1. Let's now look at `heap`, which is a mapping of heap object IDs to their contents. The current heap has one -object with an ID of 1. That object is a list of [1, 2, 3], which is represented as: +object with an ID of 1. That object is a list of [1, 2, 3], which is encoded in JSON as: ```javascript ["LIST", 1, 2, 3] ``` Let's skip forward to the end of execution ("Program terminated"): -(click here) +click here Now there are three variables -- `x` points to a list, `y` points to a tuple, and `z` points to a dict. This execution point object is getting kinda big: @@ -378,10 +378,13 @@ This execution point object is getting kinda big: Note that in `globals`, `x` refers to heap object 1, `y` to heap object 2, and `z` to 3. If you then look at `heap`, you'll see that objects 1, 2, and 3 map to the corresponding list, tuple, and dict, respectively. -Look at the comments at the top of `pg_encoder.py` to learn the encoding format for various Python data types: +Look at the comments at the top of `pg_encoder.py` to learn the JSON encoding formats for various Python data types: https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/pg_encoder.py +The basic idea behind the encoding format is that each compound object is encoded as a JSON list +where the first element is a string "tag" identifying its type (e.g., "LIST", "TUPLE", "DICT"). + ## Heap-to-Heap References In the above example, the heap objects contained only primitives (numbers and strings), which can be directly From 672804bb68f938d8fb0aac23a585d860230f76f3 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 11:38:29 -0700 Subject: [PATCH 389/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 82 +++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 4ee3594e3..e79a12a30 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -483,7 +483,89 @@ which corresponds to the Python object `(1, c)`. The ability to put "REF" objects inside of heap objects enables an arbitrary object graph to be represented in the execution trace. +## stdout output + +The `stdout` field in an execution point object represents the sum total of all output sent to stdout +so far during execution. For example, given this program: + +```python +print 1 +print "two" +print (3, 4, 5) +``` + +The complete trace object is: + +```javascript +{ + "code": "print 1\nprint \"two\"\nprint (3, 4, 5)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "1\ntwo\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "1\ntwo\n(3, 4, 5)\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "return" + } + ] +} +``` + +By now you should be getting pretty good at reading these objects :) + +Let's just focus on the `stdout` field at each execution point. Note that its contents start as an empty string +at the beginning of execution and then grow incrementally as more stuff is printed to stdout at each +subsequent execution point. If we grep for `stdout` in the trace, we see the following progression: + +```javascript + "stdout": "", + "stdout": "1\n", + "stdout": "1\ntwo\n", + "stdout": "1\ntwo\n(3, 4, 5)\n", +``` + +This isn't rocket science; but just be aware that `stdout` contains the cumulative contents of the stdout +buffer up to that execution point, not only what's just been printed by the last executed line. + ## Function Stack Frames (TODO: WRITE ME!) + + +## Closures and Zombie Frames (advanced) + +(TODO: WRITE ME!) From 257c1d55f024c89f719c225923dad55c676f0edf Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 11:43:19 -0700 Subject: [PATCH 390/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index e79a12a30..8f6bf4ba4 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -483,7 +483,8 @@ which corresponds to the Python object `(1, c)`. The ability to put "REF" objects inside of heap objects enables an arbitrary object graph to be represented in the execution trace. -## stdout output + +## Capturing `stdout` Output The `stdout` field in an execution point object represents the sum total of all output sent to stdout so far during execution. For example, given this program: @@ -558,7 +559,7 @@ subsequent execution point. If we grep for `stdout` in the trace, we see the fol ``` This isn't rocket science; but just be aware that `stdout` contains the cumulative contents of the stdout -buffer up to that execution point, not only what's just been printed by the last executed line. +buffer up to that execution point, not only what's been printed by the most recently executed line. ## Function Stack Frames From 4c66e667e75c08c0ca8c7b5b76d7717348a2e706 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 13:33:15 -0700 Subject: [PATCH 391/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 8f6bf4ba4..7c42fc502 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -564,8 +564,24 @@ buffer up to that execution point, not only what's been printed by the most rece ## Function Stack Frames -(TODO: WRITE ME!) +So far our example programs contained no function calls. Let's now kick it up a notch and see an example +with function calls: + +```python +def foo(x, y, z): + return bar(x, y) + +def bar(a, b): + return baz(a) + +def baz(c): + return c + +result = foo(1, 2, 3) +``` +Let's jump straight to [Step 8 of 10](http://pythontutor.com/visualize.html#code=def+foo(x,+y,+z)%3A%0A++return+bar(x,+y)%0A++%0Adef+bar(a,+b)%3A%0A++return+baz(a)%0A++%0Adef+baz(c)%3A%0A++return+c%0A++%0Aresult+%3D+foo(1,+2,+3)%0A&mode=display&cumulative=false&py=2&curInstr=7) +when the program is about to return from the call to `baz`. ## Closures and Zombie Frames (advanced) From 9bab1440f38fd30856cde085251f7d5a70b4c312 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 13:51:56 -0700 Subject: [PATCH 392/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 153 +++++++++++++++++++++++++++++++++++- 1 file changed, 152 insertions(+), 1 deletion(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 7c42fc502..f9cecdf60 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -580,9 +580,160 @@ def baz(c): result = foo(1, 2, 3) ``` -Let's jump straight to [Step 8 of 10](http://pythontutor.com/visualize.html#code=def+foo(x,+y,+z)%3A%0A++return+bar(x,+y)%0A++%0Adef+bar(a,+b)%3A%0A++return+baz(a)%0A++%0Adef+baz(c)%3A%0A++return+c%0A++%0Aresult+%3D+foo(1,+2,+3)%0A&mode=display&cumulative=false&py=2&curInstr=7) +Let's jump straight to Step 8 of 10, when the program is about to return from the call to `baz`. +Study the visualization for a bit. Note that there are four frames currently on the stack: globals, `foo`, `bar`, and `baz`. +Each frame consists of a name and a mapping between constituent variable names and values. There is a special +variable called `Return value`, which represents the value that this function is about to return to its caller. + +Let's now look at the execution point object corresponding to this visualization: + +```javascript + { + "ordered_globals": [ + "foo", + "bar", + "baz" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a", + "b" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "c": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "c", + "__return__" + ] + } + ], + "globals": { + "bar": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ], + "baz": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "bar(a, b)", + null + ], + "3": [ + "FUNCTION", + "baz(c)", + null + ] + }, + "line": 8, + "event": "return" + }, +``` + +First things first: This is a `return` event occurring on line 8 (the `return c` line in `baz`). The currently-active +function is `baz`. There are three global variables: `foo`, `bar`, and `baz`, which all point to function objects +on the heap. + +The only new kind of field is `stack_to_render`, which is (unsurprisingly) a list of stack frames to render. +In this case, `stack_to_render` contains three elements -- the frames for `foo`, `bar`, and `baz`, in that exact order. +The frontend simply walks down `stack_to_render` and renders each frame in a similar way that it renders global variables. + +Let's now zoom in on one particular frame in `stack_to_render`. Here is the frame for `bar`: + +```javascript + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a", + "b" + ] + }, +``` + +For starters, `func_name` is the name of the function, and `is_highlighted` is true only if the current +frame is the "top-most" one (telling the frontend to highlight it in a brighter color). + +`encoded_locals` is a mapping from local variable names to their values, similar to how `globals` +provides a mapping from global variable names to their values. + +`ordered_varnames` is an ordered list of keys from `encoded_locals`, usually sorted by order of appearance +during execution. The global analogue for this field is `ordered_globals`. (I suppose this field should be named +`ordered_locals`, but I haven't gotten around to renaming yet.) + + +(Ignore `is_parent`, `is_zombie`, and `parent_frame_id_list` for now. We'll cover those in the more advanced +"Closures and Zombie Frames" section below.) + + ## Closures and Zombie Frames (advanced) (TODO: WRITE ME!) From 502a1859da456434c0ab36ba57e17f19fdcc2fc2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 14:05:30 -0700 Subject: [PATCH 393/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index f9cecdf60..f89fa3d90 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -729,9 +729,16 @@ provides a mapping from global variable names to their values. during execution. The global analogue for this field is `ordered_globals`. (I suppose this field should be named `ordered_locals`, but I haven't gotten around to renaming yet.) +`frame_id` is a unique integer that identifies this frame; the first executed function gets an ID of 1, and then +subsequent calls get successively increasing IDs. -(Ignore `is_parent`, `is_zombie`, and `parent_frame_id_list` for now. We'll cover those in the more advanced -"Closures and Zombie Frames" section below.) +`unique_hash` is a unique string that identifies this frame. At this point, I don't remember clearly why +this field is required in addition to `frame_id`, but nonetheless the frontend depends on it. A simple way +to construct `unique_hash` is by concatenating the frame's function name with `frame_id`. +(There's probably some subtle thing I'm forgetting at the moment, though ...) + +Finally, ignore `is_parent`, `is_zombie`, and `parent_frame_id_list` for now. We'll cover those in the more advanced +"Closures and Zombie Frames" section below. ## Closures and Zombie Frames (advanced) From 1172da6748c00e8a8742a0e003c557adc7f46692 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 14:07:59 -0700 Subject: [PATCH 394/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index f89fa3d90..c12492dd8 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -732,10 +732,10 @@ during execution. The global analogue for this field is `ordered_globals`. (I su `frame_id` is a unique integer that identifies this frame; the first executed function gets an ID of 1, and then subsequent calls get successively increasing IDs. -`unique_hash` is a unique string that identifies this frame. At this point, I don't remember clearly why -this field is required in addition to `frame_id`, but nonetheless the frontend depends on it. A simple way +`unique_hash` is a unique string that identifies this frame. For now, a simple way to construct `unique_hash` is by concatenating the frame's function name with `frame_id`. -(There's probably some subtle thing I'm forgetting at the moment, though ...) +Note that `unique_hash` seems redundant with `frame_id`, since the latter is already unique. +However, you'll see in the "Closures and Zombie Frames" section why `unique_hash` is required. Finally, ignore `is_parent`, `is_zombie`, and `parent_frame_id_list` for now. We'll cover those in the more advanced "Closures and Zombie Frames" section below. @@ -744,3 +744,6 @@ Finally, ignore `is_parent`, `is_zombie`, and `parent_frame_id_list` for now. We ## Closures and Zombie Frames (advanced) (TODO: WRITE ME!) + +(TODO: talk about needing to append a '_p' and '_z' onto `unique_hash` when a frame becomes a parent or zombie, +respectively, since the frontend needs to know when to refresh the display.) From 890e1ef75ab3d02aef326854dacaf672a47590f0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 14:11:33 -0700 Subject: [PATCH 395/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index c12492dd8..2e01a61e9 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -585,7 +585,8 @@ when the program is about to return from the call to `baz`. Study the visualization for a bit. Note that there are four frames currently on the stack: globals, `foo`, `bar`, and `baz`. Each frame consists of a name and a mapping between constituent variable names and values. There is a special -variable called `Return value`, which represents the value that this function is about to return to its caller. +variable called `Return value` (stored in the trace as `__return__`), +which represents the value that `baz` is about to return to its caller. Let's now look at the execution point object corresponding to this visualization: @@ -745,5 +746,5 @@ Finally, ignore `is_parent`, `is_zombie`, and `parent_frame_id_list` for now. We (TODO: WRITE ME!) -(TODO: talk about needing to append a '_p' and '_z' onto `unique_hash` when a frame becomes a parent or zombie, +(TODO: talk about needing to append `_p` and `_z` onto `unique_hash` when a frame becomes a parent or zombie, respectively, since the frontend needs to know when to refresh the display.) From 3f84eb443f02bbb1de18aaecc1e8b9497e253fbf Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 14:17:38 -0700 Subject: [PATCH 396/502] Update v3/docs/opt-trace-format.md --- v3/docs/opt-trace-format.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/docs/opt-trace-format.md b/v3/docs/opt-trace-format.md index 2e01a61e9..a6cf9dcfa 100644 --- a/v3/docs/opt-trace-format.md +++ b/v3/docs/opt-trace-format.md @@ -730,8 +730,8 @@ provides a mapping from global variable names to their values. during execution. The global analogue for this field is `ordered_globals`. (I suppose this field should be named `ordered_locals`, but I haven't gotten around to renaming yet.) -`frame_id` is a unique integer that identifies this frame; the first executed function gets an ID of 1, and then -subsequent calls get successively increasing IDs. +`frame_id` is an integer that *uniquely* identifies this frame; the first function call (of *any* function) gets +a frame ID of 1, and then subsequent calls get successively increasing frame IDs. `unique_hash` is a unique string that identifies this frame. For now, a simple way to construct `unique_hash` is by concatenating the frame's function name with `frame_id`. From 37d37339f6d5750ce38a8081cb324bf50d764e70 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 15:08:46 -0700 Subject: [PATCH 397/502] v3 officially released! --- README | 52 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/README b/README index 8ed37cb90..05c347ab2 100644 --- a/README +++ b/README @@ -39,7 +39,10 @@ Summary: textbooks, lecture notes, and online programming tutorials. --- +All documentation is viewable online at: + https://github.com/pgbovine/OnlinePythonTutor/tree/master/v3/docs +--- Repository contents: tl;dr: the v3/ sub-directory contains the latest version of the code. @@ -71,6 +74,7 @@ v1-v2/ pg ''' + Online Python Tutor version 2 - released on October 4, 2011 "Release" email to 13 friends: @@ -98,8 +102,54 @@ v1-v2/ v3/ - Version 3 - Released on September ??, 2012 + Online Python Tutor version 3 - Released on September 18 2012 to + 153,000+ people on Google+: + https://plus.google.com/+ResearchatGoogle/posts/cseo9qi7LWq + "Release" announcement from the Research @ Google G+ account: + ''' + Online Python Tutor: Web-Based Program Visualization for CS Education + + As part of his CS education work at Google, +Philip Guo has been + developing an open-source educational tool called Online Python Tutor + (http://www.pythontutor.com). This tool enables teachers and students + to write Python programs directly in the web browser and then + single-step forwards and backwards to visualize what the computer is + doing as it executes those programs. + + Program visualization for CS education is nothing new -- researchers + have been developing these sorts of tools for decades. However, most + of these tools never reach far beyond the confines of the researchers' + home universities due to the difficulty of installing and configuring + the visualization software. What makes Online Python Tutor unique and + effective is that it's the first known tool to adapt time-tested ideas + from the research literature (e.g., rendering of box-and-pointer + diagrams) for a web-based environment. Now anyone with a modern + browser can create, explore, and share their program visualizations by + simply visiting a web URL. + + This ease of access has been a major contributor to adoption: So far, + over 100,000 people have used Online Python Tutor to understand and + debug their programs, often as a supplement to learning from + textbooks, lecture notes, and online programming tutorials. In + addition, instructors in over a dozen universities such as MIT, UC + Berkeley, and the University of Washington have used it for teaching + introductory computer science courses. + + But this is just the beginning. Philip and his colleagues are now + building an online authoring environment so that, within the next few + months, teachers and students will be able to save their code snippets + and add annotations, discussion threads, lessons, and interactive + exercises on top of the associated visualizations. + + They are also actively seeking partnerships with educators at all + grade levels to deploy and improve Online Python Tutor. Please contact + Philip directly or re-share this post with educators who might be + interested in working with this tool in any capacity. + + Visit www.pythontutor.com to learn more and to start visualizing your + Python programs now! + ''' --- From 4051ac63cf53cf4ab1770ed6490f32bfd9c2f2bc Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 15:09:47 -0700 Subject: [PATCH 398/502] tiny --- README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README b/README index 05c347ab2..914283cf9 100644 --- a/README +++ b/README @@ -102,8 +102,8 @@ v1-v2/ v3/ - Online Python Tutor version 3 - Released on September 18 2012 to - 153,000+ people on Google+: + Online Python Tutor version 3 - Released on September 18, 2012 + to 153,000+ people on Google+: https://plus.google.com/+ResearchatGoogle/posts/cseo9qi7LWq "Release" announcement from the Research @ Google G+ account: From 2ea03d926e7558c9cf36e997bccf11e9033f2421 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 18 Sep 2012 17:47:26 -0700 Subject: [PATCH 399/502] Update v3/docs/user-FAQ.md --- v3/docs/user-FAQ.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md index 80f47dbd8..f79b662d3 100644 --- a/v3/docs/user-FAQ.md +++ b/v3/docs/user-FAQ.md @@ -9,6 +9,12 @@ if we were truly faithful to Python's semantics, that would result in far too ma However, note that since primitives are **immutable** and thus behave identically regardless of aliasing, it doesn't matter whether they're rendered in the stack or heap. + +#### Unicode strings look weird or broken + +Yep, that's a known bug; Online Python Tutor currently doesn't have much support for Unicode. + + #### Whoa, I get an unknown error when I try to use the `re` module (or other modules) Yep, Online Python Tutor currently has very limited support for external modules. The only module functions that work From 30710ae180364d333eb7b201f0ffe19b520d5ab4 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 19 Sep 2012 18:59:37 -0700 Subject: [PATCH 400/502] slightly less crappy job of sandboxing by restricting file accesses --- v3/pg_logger.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 0e470f1d6..b11386a2d 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -56,6 +56,14 @@ # simple sandboxing scheme: +# +# - use resource.setrlimit to deprive this process of ANY file descriptors +# (which will cause file read/write and subprocess shell launches to fail) +# - restrict user builtins and module imports +# (beware that this is NOT foolproof at all ... there are known flaws!) +# +# ALWAYS use defense-in-depth and don't just rely on these simple mechanisms +import resource # ugh, I can't figure out why in Python 2, __builtins__ seems to @@ -646,6 +654,19 @@ def _runscript(self, script_str): "__user_stdout__" : user_stdout} try: + # enforce resource limits RIGHT BEFORE running script_str + + # set ~200MB virtual memory limit AND a 5-second CPU time + # limit (tuned for Webfaction shared hosting) to protect against + # memory bombs such as: + # x = 2 + # while True: x = x*x + resource.setrlimit(resource.RLIMIT_AS, (200000000, 200000000)) + resource.setrlimit(resource.RLIMIT_CPU, (5, 5)) + + # protect against unauthorized filesystem accesses ... + resource.setrlimit(resource.RLIMIT_NOFILE, (0, 0)) # no opened files allowed + resource.setrlimit(resource.RLIMIT_FSIZE, (0, 0)) # (redundancy for paranoia) self.run(script_str, user_globals, user_globals) # sys.exit ... except SystemExit: From cb969c75047ed177206171352bf8823f8bb64272 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 19 Sep 2012 19:28:07 -0700 Subject: [PATCH 401/502] precautions moved into pg_logger.py --- v3/web_exec.py | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/v3/web_exec.py b/v3/web_exec.py index 2c7752f73..229cb841b 100644 --- a/v3/web_exec.py +++ b/v3/web_exec.py @@ -18,16 +18,6 @@ import sys -# set ~200MB virtual memory limit AND a 5-second CPU time limit -# (tuned for Webfaction shared hosting) to protect against memory bombs such as: -# -# x = 2 -# while True: x = x*x -import resource -resource.setrlimit(resource.RLIMIT_AS, (200000000, 200000000)) -resource.setrlimit(resource.RLIMIT_CPU, (5, 5)) - - # set to true if you want to log queries in DB_FILE LOG_QUERIES = False From ea003aa18a5e492156ff0bcaf23ee16d7d4fff30 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 19 Sep 2012 19:55:34 -0700 Subject: [PATCH 402/502] minor color change --- v3/css/index.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/css/index.css b/v3/css/index.css index d2e7aa29f..f23f6eaf5 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -36,7 +36,7 @@ h1 { #optLink { font-size: 14pt; text-decoration: none; - color: black; + color: #3D58A2; font-weight: bold; } From 890e1554e2f127d524a1285df550beeababf814e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 19 Sep 2012 21:40:28 -0700 Subject: [PATCH 403/502] support module imports again --- v3/pg_logger.py | 12 +++++++++++- v3/visualize.html | 33 ++++++++++++++++++++------------- 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index b11386a2d..3c3b77dd9 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -79,7 +79,17 @@ # whitelist of module imports ALLOWED_MODULE_IMPORTS = ('math', 'random', 'datetime', 'functools', 'operator', 'string', - 'collections', 're', 'json') + 'collections', 're', 'json', + 'heapq', 'bisect') + +# PREEMPTIVELY import all of these modules, so that when the user's +# script imports them, it won't try to do a file read (since they've +# already been imported and cached in memory). Remember that when +# the user's code runs, resource.setrlimit(resource.RLIMIT_NOFILE, (0, 0)) +# will already be in effect, so no more files can be opened. +for m in ALLOWED_MODULE_IMPORTS: + __import__(m) + # Restrict imports to a whitelist def __restricted_import__(*args): diff --git a/v3/visualize.html b/v3/visualize.html index ee9201c6f..2b5ce5b94 100644 --- a/v3/visualize.html +++ b/v3/visualize.html @@ -173,11 +173,30 @@ philip@pgbovine.net

    +Online Python Tutor supports Python 2.7 and Python 3.2 with limited module +imports and no file I/O. +The following modules may be imported: +bisect, +collections, +datetime, +functools, +heapq, +json, +math, +operator, +random, +re, +string +

    +

    Have a question? Maybe the FAQ or other documentation -can help.

    +can help. Its code is open source on GitHub.

    Join the pythontutor-users @@ -186,18 +205,6 @@ to receive occasional announcements. (Your name and email address will be kept private; only the list owner can see them.)

    -

    - -Online Python Tutor supports Python 2.7 and Python 3.2 with limited module -imports and no file I/O. It is designed for teaching programming, not -for running or debugging production code. Its code is open source on GitHub. - -

    - -

    Copyright © 2010-2012 Philip Guo. All rights reserved.

    From 39a75b660cc18cb151b632a476698800ad49b5c3 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 13:10:10 -0700 Subject: [PATCH 404/502] fail gracefully when 'resource' module unavailable --- v3/pg_logger.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 3c3b77dd9..d3e2d3efd 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -63,7 +63,12 @@ # (beware that this is NOT foolproof at all ... there are known flaws!) # # ALWAYS use defense-in-depth and don't just rely on these simple mechanisms -import resource +try: + import resource + resource_module_loaded = True +except ImportError: + # Google App Engine doesn't seem to have the 'resource' module + resource_module_loaded = False # ugh, I can't figure out why in Python 2, __builtins__ seems to @@ -671,12 +676,14 @@ def _runscript(self, script_str): # memory bombs such as: # x = 2 # while True: x = x*x - resource.setrlimit(resource.RLIMIT_AS, (200000000, 200000000)) - resource.setrlimit(resource.RLIMIT_CPU, (5, 5)) + if resource_module_loaded: + resource.setrlimit(resource.RLIMIT_AS, (200000000, 200000000)) + resource.setrlimit(resource.RLIMIT_CPU, (5, 5)) + + # protect against unauthorized filesystem accesses ... + resource.setrlimit(resource.RLIMIT_NOFILE, (0, 0)) # no opened files allowed + resource.setrlimit(resource.RLIMIT_FSIZE, (0, 0)) # (redundancy for paranoia) - # protect against unauthorized filesystem accesses ... - resource.setrlimit(resource.RLIMIT_NOFILE, (0, 0)) # no opened files allowed - resource.setrlimit(resource.RLIMIT_FSIZE, (0, 0)) # (redundancy for paranoia) self.run(script_str, user_globals, user_globals) # sys.exit ... except SystemExit: From e4ebe871e2377c9ad579669142ce2246f556840a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 13:16:14 -0700 Subject: [PATCH 405/502] updated acknowledgment --- README | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/README b/README index 914283cf9..6cfc00bde 100644 --- a/README +++ b/README @@ -152,11 +152,16 @@ v3/ ''' --- +Acknowledgments -Special thanks to ... +John DeNero - for helping with the official Python 3 port and lots of code patches +Chris Horne - https://github.com/lahwran - for security tips +Peter Wentworth and his students - for working on the original Python 3 fork + + +For advice and feedback from an instructor's perspective: John Dalbey -John DeNero Michael Ernst David Evans Paul Gries @@ -169,6 +174,4 @@ Peter Norvig Andrew Petersen David Pritchard Suzanne Rivoire -Peter Wentworth David Wilkins - From b02382345a3918ca4d6f600ef4eae25a48b29fd0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 13:26:36 -0700 Subject: [PATCH 406/502] fixed minor bug thanks to john --- v3/pg_logger.py | 2 +- .../closure-shadow-same-name.golden | 499 ++++++++++++++++++ .../closure-shadow-same-name.txt | 8 + 3 files changed, 508 insertions(+), 1 deletion(-) create mode 100644 v3/tests/backend-tests/closure-shadow-same-name.golden create mode 100644 v3/tests/backend-tests/closure-shadow-same-name.txt diff --git a/v3/pg_logger.py b/v3/pg_logger.py index d3e2d3efd..202787d13 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -377,7 +377,7 @@ def create_encoded_stack_entry(cur_frame): assert parent_frame.f_locals[k] == v is_in_parent_frame = True - if is_in_parent_frame: + if is_in_parent_frame and k not in cur_frame.f_code.co_varnames: continue # don't display some built-in locals ... diff --git a/v3/tests/backend-tests/closure-shadow-same-name.golden b/v3/tests/backend-tests/closure-shadow-same-name.golden new file mode 100644 index 000000000..6bff15ef1 --- /dev/null +++ b/v3/tests/backend-tests/closure-shadow-same-name.golden @@ -0,0 +1,499 @@ +{ + "code": "# some of the params in f and g have identical names\n# so make sure they're all displayed properly\ndef f(x, y, z):\n def g(x, y):\n return x\n return g(x*10, y*10)\n\nf(1, 2, 3)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 20, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 20, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 20, + "x": 10, + "__return__": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 10, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 10, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "y", + "z", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/closure-shadow-same-name.txt b/v3/tests/backend-tests/closure-shadow-same-name.txt new file mode 100644 index 000000000..da9057531 --- /dev/null +++ b/v3/tests/backend-tests/closure-shadow-same-name.txt @@ -0,0 +1,8 @@ +# some of the params in f and g have identical names +# so make sure they're all displayed properly +def f(x, y, z): + def g(x, y): + return x + return g(x*10, y*10) + +f(1, 2, 3) From 9126b2c9932991156be1545869459d957697464a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 14:23:29 -0700 Subject: [PATCH 407/502] updated test --- .../closure-shadow-same-name.golden | 32 +++++++++++-------- .../closure-shadow-same-name.txt | 4 +-- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/v3/tests/backend-tests/closure-shadow-same-name.golden b/v3/tests/backend-tests/closure-shadow-same-name.golden index 6bff15ef1..5f17e5c8b 100644 --- a/v3/tests/backend-tests/closure-shadow-same-name.golden +++ b/v3/tests/backend-tests/closure-shadow-same-name.golden @@ -1,5 +1,5 @@ { - "code": "# some of the params in f and g have identical names\n# so make sure they're all displayed properly\ndef f(x, y, z):\n def g(x, y):\n return x\n return g(x*10, y*10)\n\nf(1, 2, 3)\n", + "code": "# some of the params in f and g have identical names AND values,\n# so make sure they're all displayed properly\ndef f(x, y, z):\n def g(x, y):\n return x\n return g(x, y)\n\nf(1, 2, 3)\n", "trace": [ { "ordered_globals": [], @@ -207,14 +207,16 @@ { "frame_id": 2, "encoded_locals": { - "y": 20, - "x": 10 + "y": 2, + "x": 1 }, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, - "parent_frame_id_list": [], + "parent_frame_id_list": [ + 1 + ], "unique_hash": "g_f2", "ordered_varnames": [ "x", @@ -277,14 +279,16 @@ { "frame_id": 2, "encoded_locals": { - "y": 20, - "x": 10 + "y": 2, + "x": 1 }, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, - "parent_frame_id_list": [], + "parent_frame_id_list": [ + 1 + ], "unique_hash": "g_f2", "ordered_varnames": [ "x", @@ -347,15 +351,17 @@ { "frame_id": 2, "encoded_locals": { - "y": 20, - "x": 10, - "__return__": 10 + "y": 2, + "x": 1, + "__return__": 1 }, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, - "parent_frame_id_list": [], + "parent_frame_id_list": [ + 1 + ], "unique_hash": "g_f2", "ordered_varnames": [ "x", @@ -397,7 +403,7 @@ "encoded_locals": { "y": 2, "x": 1, - "__return__": 10, + "__return__": 1, "z": 3, "g": [ "REF", @@ -452,7 +458,7 @@ "encoded_locals": { "y": 2, "x": 1, - "__return__": 10, + "__return__": 1, "z": 3, "g": [ "REF", diff --git a/v3/tests/backend-tests/closure-shadow-same-name.txt b/v3/tests/backend-tests/closure-shadow-same-name.txt index da9057531..13d20e618 100644 --- a/v3/tests/backend-tests/closure-shadow-same-name.txt +++ b/v3/tests/backend-tests/closure-shadow-same-name.txt @@ -1,8 +1,8 @@ -# some of the params in f and g have identical names +# some of the params in f and g have identical names AND values, # so make sure they're all displayed properly def f(x, y, z): def g(x, y): return x - return g(x*10, y*10) + return g(x, y) f(1, 2, 3) From ed55ae8cb886da0c4fbf4def352b886797f8478f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 16:52:17 -0700 Subject: [PATCH 408/502] start integrating some of john's changes --- v3/pg_encoder.py | 3 +++ v3/tests/backend-tests/parent-finding-1.txt | 7 +++++++ v3/tests/backend-tests/parent-finding-2.txt | 10 ++++++++++ 3 files changed, 20 insertions(+) create mode 100644 v3/tests/backend-tests/parent-finding-1.txt create mode 100644 v3/tests/backend-tests/parent-finding-2.txt diff --git a/v3/pg_encoder.py b/v3/pg_encoder.py index 08bfda0b0..a247bee3c 100644 --- a/v3/pg_encoder.py +++ b/v3/pg_encoder.py @@ -170,6 +170,9 @@ def encode(self, dat): func_name = get_name(dat) pretty_name = func_name + '(' + ', '.join(printed_args) + ')' new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later + elif typ is types.BuiltinFunctionType: + pretty_name = get_name(dat) + '(...)' + new_obj.extend(['FUNCTION', pretty_name, None]) elif self.is_class(dat) or self.is_instance(dat): self.encode_class_or_instance(dat, new_obj) elif typ is types.ModuleType: diff --git a/v3/tests/backend-tests/parent-finding-1.txt b/v3/tests/backend-tests/parent-finding-1.txt new file mode 100644 index 000000000..0726f0726 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-1.txt @@ -0,0 +1,7 @@ +# make sure OPT finds f as the parent of g +def f(x, y): + def g(x): + return x + y + return g(3) + +f(1, 2) diff --git a/v3/tests/backend-tests/parent-finding-2.txt b/v3/tests/backend-tests/parent-finding-2.txt new file mode 100644 index 000000000..c117d4163 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-2.txt @@ -0,0 +1,10 @@ +# make sure OPT finds horse as parent of mask +def horse(mask): + horse = mask + def mask(horse): + return horse + return horse(mask) + +mask = lambda horse: horse(2) + +horse(mask) From 26722438d1e01c1a4d5587fc21d5c7e5dd243cdc Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 19:40:49 -0700 Subject: [PATCH 409/502] integrated John's more robust parent-finding scheme - TODO: test it --- v3/pg_logger.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 202787d13..f8e5052ae 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -13,7 +13,7 @@ # # The above copyright notice and this permission notice shall be included # in all copies or substantial portions of the Software. -# +# # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -216,8 +216,11 @@ def get_parent_frame(self, frame): # variables from its (lexical) parent frame. if func_obj.__code__ == frame.f_code: all_matched = True - for k in parent_frame.f_locals: - if k != '__return__' and k in frame.f_locals: + for k in frame.f_locals: + # Do not try to match local names + if k in frame.f_code.co_varnames: + continue + if k != '__return__' and k in parent_frame.f_locals: if parent_frame.f_locals[k] != frame.f_locals[k]: all_matched = False break @@ -374,8 +377,8 @@ def create_encoded_stack_entry(cur_frame): if k != '__return__': # these values SHOULD BE ALIASES # (don't do an 'is' check since it might not fire for primitives) - assert parent_frame.f_locals[k] == v - is_in_parent_frame = True + if parent_frame.f_locals[k] == v: + is_in_parent_frame = True if is_in_parent_frame and k not in cur_frame.f_code.co_varnames: continue From e0e7877b79868918d6209d1a29fb9e579ac59c86 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 21:13:41 -0700 Subject: [PATCH 410/502] added --- v3/docs/project-ideas.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 v3/docs/project-ideas.md diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md new file mode 100644 index 000000000..6372303fa --- /dev/null +++ b/v3/docs/project-ideas.md @@ -0,0 +1,6 @@ +# Project Ideas + +This document provides an overview of some project ideas for extending +Online Python Tutor (thereafter abbreviated as OPT). View it online at: + + From c41f2cd026db3b99a599f6ebe6145c83deec97b5 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 21:17:47 -0700 Subject: [PATCH 411/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index 6372303fa..78cffc766 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -3,4 +3,15 @@ This document provides an overview of some project ideas for extending Online Python Tutor (thereafter abbreviated as OPT). View it online at: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/project-ideas.md +These projects are listed roughly in order of difficulty. + +Email philip@pgbovine.net if you're interested in working on anything here, or if you have other +project ideas. + +## Enable beautiful print-outs of OPT visualizations (easy) + +## + +## Migrate OPT backend to Skulpt (very hard) From 11ab39f726b960f3e8984005dcd6589259478abb Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 21:36:02 -0700 Subject: [PATCH 412/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 44 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index 78cffc766..168dd2622 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -12,6 +12,50 @@ project ideas. ## Enable beautiful print-outs of OPT visualizations (easy) +A lot of instructors want to print out their OPT visualizations to make handouts or lecture notes +for their students. +However, the default CSS stylesheet is optimized for on-screen viewing and not for printing, +so when you try to print the diagrams, they look ugly and unreadable. + +The project involves creating a custom CSS optimized for printing, especially on black-and-white printers. +Here is an example how-to guide to get started ... +http://coding.smashingmagazine.com/2011/11/24/how-to-set-up-a-print-style-sheet/ + + +## Add better Unicode support (easy/medium) + +Right now, OPT has poor-to-nonexistent Unicode support. Here is one bug report that inspired this project idea: + +""" +I’m having some fun with your nifty Python visualiser. +While trying too see what happens in Unicode strings are processed, +I encountered some odd little quirks such as a unicode character +being replace with a string representation of a Unicode code point +number in denary. + + +click to visualize code snippet + +Changing the first line to + +```python +s = u'\u2015' +``` + +Causes an “unknown error” to be reported, as does the insertion of unicode characters like “—” (em dash) in string literals. + +The following code causes the interpreter to hang. +```python +# -*- coding: utf-8 -*- +s = u'—' +``` +""" + +(Note that Unicode support in Python 2 and 3 involve different subtleties.) + +This project is a great fit for someone familiar with coding in non-English languages. + + ## ## Migrate OPT backend to Skulpt (very hard) From 520bdcbb740e29cd09ff8b0d39fcda906f82e71b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 21:54:42 -0700 Subject: [PATCH 413/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index 168dd2622..1bf0b98ed 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -10,21 +10,27 @@ These projects are listed roughly in order of difficulty. Email philip@pgbovine.net if you're interested in working on anything here, or if you have other project ideas. + ## Enable beautiful print-outs of OPT visualizations (easy) A lot of instructors want to print out their OPT visualizations to make handouts or lecture notes -for their students. +for students. However, the default CSS stylesheet is optimized for on-screen viewing and not for printing, so when you try to print the diagrams, they look ugly and unreadable. The project involves creating a custom CSS optimized for printing, especially on black-and-white printers. -Here is an example how-to guide to get started ... +Here is an example how-to guide to get started creating a CSS print style sheet ... http://coding.smashingmagazine.com/2011/11/24/how-to-set-up-a-print-style-sheet/ -## Add better Unicode support (easy/medium) +## Add better Unicode support (medium) + +This project is a great fit for someone familiar with coding in non-English languages. + +Right now, OPT has poor-to-nonexistent Unicode support, so adding it is important for making it friendlier to +non-English audiences. -Right now, OPT has poor-to-nonexistent Unicode support. Here is one bug report that inspired this project idea: +Here is one bug report that inspired this project idea: """ I’m having some fun with your nifty Python visualiser. @@ -53,9 +59,5 @@ s = u'—' (Note that Unicode support in Python 2 and 3 involve different subtleties.) -This project is a great fit for someone familiar with coding in non-English languages. - - -## ## Migrate OPT backend to Skulpt (very hard) From 9bf583e84004fb359901a2ac03f7282f495e924b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 22:50:01 -0700 Subject: [PATCH 414/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index 1bf0b98ed..e9b24d374 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -60,4 +60,34 @@ s = u'—' (Note that Unicode support in Python 2 and 3 involve different subtleties.) -## Migrate OPT backend to Skulpt (very hard) +## Create an OPT backend for a different programming language (hard) + +This project is great for someone who likes to hack on language implementations and runtimes. + +The OPT frontend can visualize programs written in any mainstream language, not just Python. +This project involves creating a backend for another language (e.g., Ruby, Java, JavaScript, C++, Scheme, +whatever you want!). All the backend needs to do is to generate an execution trace +in the following format ... + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-format.md + +... and the frontend should be able to visualize it! + + +## Migrate OPT backend to Skulpt (very hard but super cool!) + +Right now the OPT backend runs on the server, but it would be super-cool to create a "backend" +that runs purely in the browser. Skulpt - http://www.skulpt.org/ - is the leading contender here, +since I am in touch with its main developers. + +Main Advantages: + - supports fine-grained tracing of expression and sub-expression evaluation (right now OPT can only single-step over one line at a time since it relies on the Python bdb debugger) + - enables the creation of an interactive REPL that incrementally takes in user inputs, rather than just executing batch programs. leads to better interactivity and responsiveness. + - supports on-demand evaluation and in-memory storage of (relatively) large and persistent data structures such as a 100,000-element dictionary, since there is no need to send a giant trace from the server. + - works in offline mode for students without reliable Internet access + + +Tips & Tricks: + - http://blog.bonelakesoftware.com/2011/03/adding-module-to-skulpt.html + - http://blog.bonelakesoftware.com/2011/02/python-in-your-browser-in-javascript.html + - From Scott Graham, when I asked him whether Skulpt implements Python 2 or 3: “Mostly 2-ish. Some object hierarchy things take after 3's simplified semantics.” From 51870eca81c2e17a57d88516311dca4bd27823ed Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 20 Sep 2012 23:01:54 -0700 Subject: [PATCH 415/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index e9b24d374..c7fdb4bb5 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -76,18 +76,19 @@ https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-form ## Migrate OPT backend to Skulpt (very hard but super cool!) -Right now the OPT backend runs on the server, but it would be super-cool to create a "backend" -that runs purely in the browser. Skulpt - http://www.skulpt.org/ - is the leading contender here, +This project is appropriate for someone with advanced knowledge of hacking a Python interpreter. + +Right now the OPT backend runs Python code on the server, but it would be super-cool to create a "backend" +that runs entirely in the browser. Modifying Skulpt -- http://www.skulpt.org/ -- is the leading contender here, since I am in touch with its main developers. Main Advantages: - - supports fine-grained tracing of expression and sub-expression evaluation (right now OPT can only single-step over one line at a time since it relies on the Python bdb debugger) - - enables the creation of an interactive REPL that incrementally takes in user inputs, rather than just executing batch programs. leads to better interactivity and responsiveness. - - supports on-demand evaluation and in-memory storage of (relatively) large and persistent data structures such as a 100,000-element dictionary, since there is no need to send a giant trace from the server. - - works in offline mode for students without reliable Internet access + - Enables fine-grained tracing of expression and sub-expression evaluation, which has clear pedagogical benefits; right now OPT can only single-step over one line at a time since it relies on the Python bdb debugger. + - Enables an interactive REPL that incrementally takes in user inputs rather than just executing batch programs; this can lead to better interactivity and responsiveness. + - Supports on-demand evaluation and in-memory storage of (relatively) large data structures such as a 100,000-element dictionary for a spell checker program; right now OPT must send that giant dictionary in a trace (encoded in an inefficient format). + - Works in "offline mode" for students in regions without reliable Internet access Tips & Tricks: - - http://blog.bonelakesoftware.com/2011/03/adding-module-to-skulpt.html - - http://blog.bonelakesoftware.com/2011/02/python-in-your-browser-in-javascript.html + - From Brad Miller: http://blog.bonelakesoftware.com/2011/03/adding-module-to-skulpt.html and http://blog.bonelakesoftware.com/2011/02/python-in-your-browser-in-javascript.html - From Scott Graham, when I asked him whether Skulpt implements Python 2 or 3: “Mostly 2-ish. Some object hierarchy things take after 3's simplified semantics.” From 56e56a8a5d8914916729eeae2bcf508fe3b757b0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 10:37:16 -0700 Subject: [PATCH 416/502] updated --- .../backend-tests/parent-finding-1.golden | 483 +++++++++ .../backend-tests/parent-finding-2.golden | 957 ++++++++++++++++++ 2 files changed, 1440 insertions(+) create mode 100644 v3/tests/backend-tests/parent-finding-1.golden create mode 100644 v3/tests/backend-tests/parent-finding-2.golden diff --git a/v3/tests/backend-tests/parent-finding-1.golden b/v3/tests/backend-tests/parent-finding-1.golden new file mode 100644 index 000000000..00a4aab28 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-1.golden @@ -0,0 +1,483 @@ +{ + "code": "# make sure OPT finds f as the parent of g\ndef f(x, y):\n def g(x):\n return x + y\n return g(3)\n\nf(1, 2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 5, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 5, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "y", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/parent-finding-2.golden b/v3/tests/backend-tests/parent-finding-2.golden new file mode 100644 index 000000000..812420ec4 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-2.golden @@ -0,0 +1,957 @@ +{ + "code": "# make sure OPT finds horse as parent of mask\ndef horse(mask):\n horse = mask\n def mask(horse):\n return horse\n return horse(mask)\n\nmask = lambda horse: horse(2)\n\nhorse(mask)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "horse": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask", + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 2, + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p_z", + "ordered_varnames": [ + "mask", + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 10, + "event": "return" + } + ] +} From d66b7d390b0ef082d890d3ba019805cd92b43d15 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 11:02:27 -0700 Subject: [PATCH 417/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index c7fdb4bb5..3550606ba 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -15,7 +15,7 @@ project ideas. A lot of instructors want to print out their OPT visualizations to make handouts or lecture notes for students. -However, the default CSS stylesheet is optimized for on-screen viewing and not for printing, +However, the default CSS is optimized for on-screen viewing and not for printing, so when you try to print the diagrams, they look ugly and unreadable. The project involves creating a custom CSS optimized for printing, especially on black-and-white printers. @@ -23,6 +23,29 @@ Here is an example how-to guide to get started creating a CSS print style sheet http://coding.smashingmagazine.com/2011/11/24/how-to-set-up-a-print-style-sheet/ +## Responsive UI for different resolution displays (easy/medium) + +This project is good for someone interested in visual design. + +Implement the principles of [responsive web design](http://en.wikipedia.org/wiki/Responsive_Web_Design) +so that OPT visualizations (and the surrounding user interface) look good on displays of many different sizes +ranging from smartphones to tablets to laptops to giant desktop monitors. + + +## Optimize display of object-oriented programs (medium) + +This is a good project for an object-oriented programming enthusiast. + +Right now OPT naively visualizes all the steps that the Python interpreter takes when executing an +object-oriented program, which leads to all sorts of extraneous variables, frames, and pointers +lying around. + +Click here for an example. + +This project involves cleaning up the execution trace so that object-oriented programs look +sensible when visualized. + + ## Add better Unicode support (medium) This project is a great fit for someone familiar with coding in non-English languages. @@ -65,9 +88,8 @@ s = u'—' This project is great for someone who likes to hack on language implementations and runtimes. The OPT frontend can visualize programs written in any mainstream language, not just Python. -This project involves creating a backend for another language (e.g., Ruby, Java, JavaScript, C++, Scheme, -whatever you want!). All the backend needs to do is to generate an execution trace -in the following format ... +This project involves creating a backend for another language (e.g., Ruby, Java, JavaScript, C, C++, Scheme). +All the backend needs to do is to generate an execution trace in the following format ... https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-format.md From 77538d55ab050905d300811d6698190bd5a97504 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 11:08:43 -0700 Subject: [PATCH 418/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index 3550606ba..d81af9039 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -11,7 +11,7 @@ Email philip@pgbovine.net if you're interested in working on anything here, or i project ideas. -## Enable beautiful print-outs of OPT visualizations (easy) +## Enable beautiful printouts of OPT visualizations (easy) A lot of instructors want to print out their OPT visualizations to make handouts or lecture notes for students. @@ -23,9 +23,9 @@ Here is an example how-to guide to get started creating a CSS print style sheet http://coding.smashingmagazine.com/2011/11/24/how-to-set-up-a-print-style-sheet/ -## Responsive UI for different resolution displays (easy/medium) +## Implement responsive web UI design for OPT frontend (easy/medium) -This project is good for someone interested in visual design. +This is a good project for someone interested in visual and web design. Implement the principles of [responsive web design](http://en.wikipedia.org/wiki/Responsive_Web_Design) so that OPT visualizations (and the surrounding user interface) look good on displays of many different sizes @@ -98,7 +98,8 @@ https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-form ## Migrate OPT backend to Skulpt (very hard but super cool!) -This project is appropriate for someone with advanced knowledge of hacking a Python interpreter. +This project is appropriate for someone with advanced knowledge of hacking a Python interpreter +who is willing to make a substantive time commitment. Right now the OPT backend runs Python code on the server, but it would be super-cool to create a "backend" that runs entirely in the browser. Modifying Skulpt -- http://www.skulpt.org/ -- is the leading contender here, From f1564995722a2d15a42f4e159a729b10bf999b6a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 11:09:01 -0700 Subject: [PATCH 419/502] added advertising of project pages --- v3/index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/index.html b/v3/index.html index 2a1431b28..35462a9f9 100644 --- a/v3/index.html +++ b/v3/index.html @@ -102,7 +102,7 @@

    LEARN programming by vi

    But this is just the beginning. We are actively seeking partnerships with -educators at all grade levels to deploy and improve this tool. Email +educators at all grade levels to deploy and improve this tool. Email philip@pgbovine.net if you are interested in collaborating.

    @@ -201,7 +201,7 @@

    SHARE visualizations on
  • Free, open-source BSD-licensed code on GitHub -
  • Want to help out? We have ideas for student thesis projects or +
  • Want to help out? We have ideas for student thesis projects or for anyone else who loves to hack. Email philip@pgbovine.net for more info. From e42afb67e1aa55664e7b698617ace1bd52796c22 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 11:37:55 -0700 Subject: [PATCH 420/502] make regression tests more standardized --- v3/example-code/list-comp.golden | 108 ++- v3/example-code/map.golden | 60 +- v3/example-code/nonlocal.golden | 11 + v3/example-code/oop_inherit.golden | 12 +- v3/example-code/py_tutorial.golden | 116 ++-- v3/example-code/sqrt.golden | 488 +++++++------- v3/generate_json_trace.py | 8 + .../infinite_loop_one_liner.golden | 618 +++++++++--------- .../backend-tests/infinite_loop_one_liner.txt | 3 +- v3/tests/backend-tests/pie-test.golden | 10 +- 10 files changed, 769 insertions(+), 665 deletions(-) create mode 100644 v3/example-code/nonlocal.golden diff --git a/v3/example-code/list-comp.golden b/v3/example-code/list-comp.golden index 6a4ea270a..deb6d8b80 100644 --- a/v3/example-code/list-comp.golden +++ b/v3/example-code/list-comp.golden @@ -39,12 +39,17 @@ { "ordered_globals": [ "ppl", + "_[1]", "e" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { + "_[1]": [ + "REF", + 2 + ], "e": "Alice", "ppl": [ "REF", @@ -58,6 +63,10 @@ "Bob", "Carol", "Doug" + ], + "2": [ + "LIST", + "Alice!!" ] }, "line": 2, @@ -66,12 +75,17 @@ { "ordered_globals": [ "ppl", + "_[1]", "e" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { + "_[1]": [ + "REF", + 2 + ], "e": "Bob", "ppl": [ "REF", @@ -85,6 +99,11 @@ "Bob", "Carol", "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!" ] }, "line": 2, @@ -93,12 +112,17 @@ { "ordered_globals": [ "ppl", + "_[1]", "e" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { + "_[1]": [ + "REF", + 2 + ], "e": "Carol", "ppl": [ "REF", @@ -112,6 +136,12 @@ "Bob", "Carol", "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!" ] }, "line": 2, @@ -120,12 +150,17 @@ { "ordered_globals": [ "ppl", + "_[1]", "e" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { + "_[1]": [ + "REF", + 2 + ], "e": "Doug", "ppl": [ "REF", @@ -139,6 +174,13 @@ "Bob", "Carol", "Doug" + ], + "2": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" ] }, "line": 2, @@ -188,22 +230,27 @@ "ppl", "e", "excited_ppl", - "x" + "x", + "_[2]" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "e": "Doug", + "x": "Alice", "ppl": [ "REF", 1 ], + "e": "Doug", "excited_ppl": [ "REF", 2 ], - "x": "Alice" + "_[2]": [ + "REF", + 3 + ] }, "heap": { "1": [ @@ -219,6 +266,10 @@ "Bob!!", "Carol!!", "Doug!!" + ], + "3": [ + "LIST", + 5 ] }, "line": 3, @@ -229,22 +280,27 @@ "ppl", "e", "excited_ppl", - "x" + "x", + "_[2]" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "e": "Doug", + "x": "Bob", "ppl": [ "REF", 1 ], + "e": "Doug", "excited_ppl": [ "REF", 2 ], - "x": "Bob" + "_[2]": [ + "REF", + 3 + ] }, "heap": { "1": [ @@ -260,6 +316,11 @@ "Bob!!", "Carol!!", "Doug!!" + ], + "3": [ + "LIST", + 5, + 3 ] }, "line": 3, @@ -270,22 +331,27 @@ "ppl", "e", "excited_ppl", - "x" + "x", + "_[2]" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "e": "Doug", + "x": "Carol", "ppl": [ "REF", 1 ], + "e": "Doug", "excited_ppl": [ "REF", 2 ], - "x": "Carol" + "_[2]": [ + "REF", + 3 + ] }, "heap": { "1": [ @@ -301,6 +367,12 @@ "Bob!!", "Carol!!", "Doug!!" + ], + "3": [ + "LIST", + 5, + 3, + 5 ] }, "line": 3, @@ -311,22 +383,27 @@ "ppl", "e", "excited_ppl", - "x" + "x", + "_[2]" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "e": "Doug", + "x": "Doug", "ppl": [ "REF", 1 ], + "e": "Doug", "excited_ppl": [ "REF", 2 ], - "x": "Doug" + "_[2]": [ + "REF", + 3 + ] }, "heap": { "1": [ @@ -342,6 +419,13 @@ "Bob!!", "Carol!!", "Doug!!" + ], + "3": [ + "LIST", + 5, + 3, + 5, + 4 ] }, "line": 3, diff --git a/v3/example-code/map.golden b/v3/example-code/map.golden index e0181c7ec..30214b328 100644 --- a/v3/example-code/map.golden +++ b/v3/example-code/map.golden @@ -795,7 +795,7 @@ { "frame_id": 3, "encoded_locals": { - "__return__": 1.0, + "__return__": 1.000, "x": 2 }, "is_highlighted": true, @@ -1579,7 +1579,7 @@ { "frame_id": 5, "encoded_locals": { - "__return__": 2.0, + "__return__": 2.000, "x": 4 }, "is_highlighted": true, @@ -2538,7 +2538,7 @@ { "frame_id": 7, "encoded_locals": { - "__return__": 3.0, + "__return__": 3.000, "x": 6 }, "is_highlighted": true, @@ -3666,7 +3666,7 @@ { "frame_id": 9, "encoded_locals": { - "__return__": 4.0, + "__return__": 4.000, "x": 8 }, "is_highlighted": true, @@ -4957,7 +4957,7 @@ { "frame_id": 11, "encoded_locals": { - "__return__": 5.0, + "__return__": 5.000, "x": 10 }, "is_highlighted": true, @@ -6188,7 +6188,7 @@ ], "11": [ "LIST", - 5.0 + 5.000 ] }, "line": 9, @@ -6377,8 +6377,8 @@ ], "12": [ "LIST", - 4.0, - 5.0 + 4.000, + 5.000 ] }, "line": 9, @@ -6539,9 +6539,9 @@ ], "13": [ "LIST", - 3.0, - 4.0, - 5.0 + 3.000, + 4.000, + 5.000 ] }, "line": 9, @@ -6673,10 +6673,10 @@ ], "14": [ "LIST", - 2.0, - 3.0, - 4.0, - 5.0 + 2.000, + 3.000, + 4.000, + 5.000 ] }, "line": 9, @@ -6778,11 +6778,11 @@ ], "15": [ "LIST", - 1.0, - 2.0, - 3.0, - 4.0, - 5.0 + 1.000, + 2.000, + 3.000, + 4.000, + 5.000 ] }, "line": 9, @@ -6856,11 +6856,11 @@ ], "15": [ "LIST", - 1.0, - 2.0, - 3.0, - 4.0, - 5.0 + 1.000, + 2.000, + 3.000, + 4.000, + 5.000 ] }, "line": 12, @@ -6939,11 +6939,11 @@ ], "15": [ "LIST", - 1.0, - 2.0, - 3.0, - 4.0, - 5.0 + 1.000, + 2.000, + 3.000, + 4.000, + 5.000 ] }, "line": 15, diff --git a/v3/example-code/nonlocal.golden b/v3/example-code/nonlocal.golden new file mode 100644 index 000000000..7d3399bec --- /dev/null +++ b/v3/example-code/nonlocal.golden @@ -0,0 +1,11 @@ +{ + "code": "# 'nonlocal' keyword is only in Python 3\ndef outer():\n x = 1\n def inner():\n nonlocal x\n x = 2\n y = x\n print(\"inner:\", x, y)\n inner()\n print(\"outer:\", x)\n\nouter()\n", + "trace": [ + { + "exception_msg": "Error: invalid syntax", + "line": 5, + "event": "uncaught_exception", + "offset": 18 + } + ] +} diff --git a/v3/example-code/oop_inherit.golden b/v3/example-code/oop_inherit.golden index 8b3640434..02a79ebed 100644 --- a/v3/example-code/oop_inherit.golden +++ b/v3/example-code/oop_inherit.golden @@ -2058,7 +2058,7 @@ { "frame_id": 4, "encoded_locals": { - "percentage": 1.26, + "percentage": 1.260, "self": [ "REF", 8 @@ -2310,7 +2310,7 @@ { "frame_id": 4, "encoded_locals": { - "percentage": 1.26, + "percentage": 1.260, "self": [ "REF", 8 @@ -2563,7 +2563,7 @@ "frame_id": 4, "encoded_locals": { "__return__": null, - "percentage": 1.26, + "percentage": 1.260, "self": [ "REF", 8 @@ -2719,7 +2719,7 @@ ], [ "salary", - 226000.0 + 226000.000 ] ] }, @@ -2955,7 +2955,7 @@ ], [ "salary", - 226000.0 + 226000.000 ] ] }, @@ -3170,7 +3170,7 @@ ], [ "salary", - 226000.0 + 226000.000 ] ] }, diff --git a/v3/example-code/py_tutorial.golden b/v3/example-code/py_tutorial.golden index 8786b892b..a3b9a2ffe 100644 --- a/v3/example-code/py_tutorial.golden +++ b/v3/example-code/py_tutorial.golden @@ -35,7 +35,7 @@ "stack_to_render": [], "globals": { "age": 26, - "pi": 3.1416 + "pi": 3.142 }, "heap": {}, "line": 8, @@ -52,7 +52,7 @@ "stack_to_render": [], "globals": { "age": 26, - "pi": 3.1416, + "pi": 3.142, "s": "Rutherford Birchard Hayes" }, "heap": {}, @@ -75,7 +75,7 @@ 1 ], "age": 26, - "pi": 3.1416, + "pi": 3.142, "s": "Rutherford Birchard Hayes" }, "heap": { @@ -106,7 +106,7 @@ 1 ], "age": 26, - "pi": 3.1416, + "pi": 3.142, "s": "Rutherford Birchard Hayes", "firstName": "Rutherford" }, @@ -142,7 +142,7 @@ 1 ], "s": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -178,7 +178,7 @@ 1 ], "s": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -216,7 +216,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -254,7 +254,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -292,7 +292,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -335,7 +335,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -384,7 +384,7 @@ ], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -436,7 +436,7 @@ "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -488,7 +488,7 @@ "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -540,7 +540,7 @@ "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -592,7 +592,7 @@ "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -644,7 +644,7 @@ "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -696,7 +696,7 @@ "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -748,7 +748,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -800,7 +800,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -852,7 +852,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -909,7 +909,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -983,7 +983,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1067,7 +1067,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1151,7 +1151,7 @@ "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1236,7 +1236,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1321,7 +1321,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1406,7 +1406,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1491,7 +1491,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1576,7 +1576,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1661,7 +1661,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1746,7 +1746,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1831,7 +1831,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -1916,7 +1916,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2001,7 +2001,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2086,7 +2086,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2171,7 +2171,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2256,7 +2256,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2341,7 +2341,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2426,7 +2426,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2511,7 +2511,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2601,7 +2601,7 @@ "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2705,7 +2705,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2812,7 +2812,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -2923,7 +2923,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -3038,7 +3038,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -3157,7 +3157,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416 + "pi": 3.142 }, "heap": { "1": [ @@ -3283,7 +3283,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 3000000000 }, "heap": { @@ -3410,7 +3410,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 3000000000 }, "heap": { @@ -3537,7 +3537,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 58000000000 }, "heap": { @@ -3664,7 +3664,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 58000000000 }, "heap": { @@ -3791,7 +3791,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 20000 }, "heap": { @@ -3918,7 +3918,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 20000 }, "heap": { @@ -4045,7 +4045,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 20000 }, "heap": { @@ -4172,7 +4172,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 40000000 }, "heap": { @@ -4299,7 +4299,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 40000000 }, "heap": { @@ -4426,7 +4426,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 40000000 }, "heap": { @@ -4553,7 +4553,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 40000000 }, "heap": { @@ -4680,7 +4680,7 @@ "b": "Ringo", "lastName": "Hayes", "thisAge": 28, - "pi": 3.1416, + "pi": 3.142, "worth": 40000000 }, "heap": { diff --git a/v3/example-code/sqrt.golden b/v3/example-code/sqrt.golden index f091f44c5..324f6870c 100644 --- a/v3/example-code/sqrt.golden +++ b/v3/example-code/sqrt.golden @@ -413,7 +413,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -509,7 +509,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -605,7 +605,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -622,7 +622,7 @@ { "frame_id": 3, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -718,7 +718,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -735,7 +735,7 @@ { "frame_id": 3, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -831,7 +831,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -849,7 +849,7 @@ "frame_id": 3, "encoded_locals": { "__return__": false, - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -946,7 +946,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -1042,7 +1042,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1059,7 +1059,7 @@ { "frame_id": 4, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -1155,7 +1155,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1172,7 +1172,7 @@ { "frame_id": 4, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -1268,7 +1268,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1285,7 +1285,7 @@ { "frame_id": 4, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1302,8 +1302,8 @@ { "frame_id": 5, "encoded_locals": { - "a": 1.0, - "b": 9.0 + "a": 1.000, + "b": 9.000 }, "is_highlighted": true, "is_parent": false, @@ -1400,7 +1400,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1417,7 +1417,7 @@ { "frame_id": 4, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1434,8 +1434,8 @@ { "frame_id": 5, "encoded_locals": { - "a": 1.0, - "b": 9.0 + "a": 1.000, + "b": 9.000 }, "is_highlighted": true, "is_parent": false, @@ -1532,7 +1532,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1549,7 +1549,7 @@ { "frame_id": 4, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1566,9 +1566,9 @@ { "frame_id": 5, "encoded_locals": { - "a": 1.0, - "__return__": 5.0, - "b": 9.0 + "a": 1.000, + "__return__": 5.000, + "b": 9.000 }, "is_highlighted": true, "is_parent": false, @@ -1666,7 +1666,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1683,8 +1683,8 @@ { "frame_id": 4, "encoded_locals": { - "__return__": 5.0, - "guess": 1.0 + "__return__": 5.000, + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -1781,7 +1781,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1798,7 +1798,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -1894,7 +1894,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -1911,7 +1911,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -2007,7 +2007,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -2024,7 +2024,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -2041,7 +2041,7 @@ { "frame_id": 7, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -2137,7 +2137,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -2154,7 +2154,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -2171,7 +2171,7 @@ { "frame_id": 7, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -2267,7 +2267,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -2284,7 +2284,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -2302,7 +2302,7 @@ "frame_id": 7, "encoded_locals": { "__return__": false, - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -2399,7 +2399,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -2416,7 +2416,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -2512,7 +2512,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -2529,7 +2529,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -2546,7 +2546,7 @@ { "frame_id": 8, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -2642,7 +2642,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -2659,7 +2659,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -2676,7 +2676,7 @@ { "frame_id": 8, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -2772,7 +2772,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -2789,7 +2789,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -2806,7 +2806,7 @@ { "frame_id": 8, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -2823,8 +2823,8 @@ { "frame_id": 9, "encoded_locals": { - "a": 5.0, - "b": 1.8 + "a": 5.000, + "b": 1.800 }, "is_highlighted": true, "is_parent": false, @@ -2921,7 +2921,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -2938,7 +2938,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -2955,7 +2955,7 @@ { "frame_id": 8, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -2972,8 +2972,8 @@ { "frame_id": 9, "encoded_locals": { - "a": 5.0, - "b": 1.8 + "a": 5.000, + "b": 1.800 }, "is_highlighted": true, "is_parent": false, @@ -3070,7 +3070,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -3087,7 +3087,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -3104,7 +3104,7 @@ { "frame_id": 8, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -3121,9 +3121,9 @@ { "frame_id": 9, "encoded_locals": { - "a": 5.0, - "__return__": 3.4, - "b": 1.8 + "a": 5.000, + "__return__": 3.400, + "b": 1.800 }, "is_highlighted": true, "is_parent": false, @@ -3221,7 +3221,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -3238,7 +3238,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -3255,8 +3255,8 @@ { "frame_id": 8, "encoded_locals": { - "__return__": 3.4, - "guess": 5.0 + "__return__": 3.400, + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -3353,7 +3353,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -3370,7 +3370,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -3387,7 +3387,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -3483,7 +3483,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -3500,7 +3500,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -3517,7 +3517,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -3613,7 +3613,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -3630,7 +3630,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -3647,7 +3647,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -3664,7 +3664,7 @@ { "frame_id": 11, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -3760,7 +3760,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -3777,7 +3777,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -3794,7 +3794,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -3811,7 +3811,7 @@ { "frame_id": 11, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -3907,7 +3907,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -3924,7 +3924,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -3941,7 +3941,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -3959,7 +3959,7 @@ "frame_id": 11, "encoded_locals": { "__return__": false, - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -4056,7 +4056,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -4073,7 +4073,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -4090,7 +4090,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -4186,7 +4186,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -4203,7 +4203,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -4220,7 +4220,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -4237,7 +4237,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -4333,7 +4333,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -4350,7 +4350,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -4367,7 +4367,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -4384,7 +4384,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -4480,7 +4480,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -4497,7 +4497,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -4514,7 +4514,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -4531,7 +4531,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -4548,8 +4548,8 @@ { "frame_id": 13, "encoded_locals": { - "a": 3.4, - "b": 2.6471 + "a": 3.400, + "b": 2.647 }, "is_highlighted": true, "is_parent": false, @@ -4646,7 +4646,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -4663,7 +4663,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -4680,7 +4680,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -4697,7 +4697,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -4714,8 +4714,8 @@ { "frame_id": 13, "encoded_locals": { - "a": 3.4, - "b": 2.6471 + "a": 3.400, + "b": 2.647 }, "is_highlighted": true, "is_parent": false, @@ -4812,7 +4812,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -4829,7 +4829,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -4846,7 +4846,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -4863,7 +4863,7 @@ { "frame_id": 12, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -4880,9 +4880,9 @@ { "frame_id": 13, "encoded_locals": { - "a": 3.4, - "__return__": 3.0235, - "b": 2.6471 + "a": 3.400, + "__return__": 3.023, + "b": 2.647 }, "is_highlighted": true, "is_parent": false, @@ -4980,7 +4980,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -4997,7 +4997,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -5014,7 +5014,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -5031,8 +5031,8 @@ { "frame_id": 12, "encoded_locals": { - "__return__": 3.0235, - "guess": 3.4 + "__return__": 3.023, + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -5129,7 +5129,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -5146,7 +5146,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -5163,7 +5163,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -5180,7 +5180,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -5276,7 +5276,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -5293,7 +5293,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -5310,7 +5310,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -5327,7 +5327,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -5423,7 +5423,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -5440,7 +5440,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -5457,7 +5457,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -5474,7 +5474,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -5491,7 +5491,7 @@ { "frame_id": 15, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -5587,7 +5587,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -5604,7 +5604,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -5621,7 +5621,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -5638,7 +5638,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -5655,7 +5655,7 @@ { "frame_id": 15, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -5751,7 +5751,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -5768,7 +5768,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -5785,7 +5785,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -5802,7 +5802,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -5820,7 +5820,7 @@ "frame_id": 15, "encoded_locals": { "__return__": false, - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -5917,7 +5917,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -5934,7 +5934,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -5951,7 +5951,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -5968,7 +5968,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -6064,7 +6064,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -6081,7 +6081,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -6098,7 +6098,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -6115,7 +6115,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -6132,7 +6132,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -6228,7 +6228,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -6245,7 +6245,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -6262,7 +6262,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -6279,7 +6279,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -6296,7 +6296,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -6392,7 +6392,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -6409,7 +6409,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -6426,7 +6426,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -6443,7 +6443,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -6460,7 +6460,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -6477,8 +6477,8 @@ { "frame_id": 17, "encoded_locals": { - "a": 3.0235, - "b": 2.9767 + "a": 3.023, + "b": 2.977 }, "is_highlighted": true, "is_parent": false, @@ -6575,7 +6575,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -6592,7 +6592,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -6609,7 +6609,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -6626,7 +6626,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -6643,7 +6643,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -6660,8 +6660,8 @@ { "frame_id": 17, "encoded_locals": { - "a": 3.0235, - "b": 2.9767 + "a": 3.023, + "b": 2.977 }, "is_highlighted": true, "is_parent": false, @@ -6758,7 +6758,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -6775,7 +6775,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -6792,7 +6792,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -6809,7 +6809,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -6826,7 +6826,7 @@ { "frame_id": 16, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -6843,9 +6843,9 @@ { "frame_id": 17, "encoded_locals": { - "a": 3.0235, - "__return__": 3.0001, - "b": 2.9767 + "a": 3.023, + "__return__": 3.000, + "b": 2.977 }, "is_highlighted": true, "is_parent": false, @@ -6943,7 +6943,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -6960,7 +6960,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -6977,7 +6977,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -6994,7 +6994,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -7011,8 +7011,8 @@ { "frame_id": 16, "encoded_locals": { - "__return__": 3.0001, - "guess": 3.0235 + "__return__": 3.000, + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -7109,7 +7109,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -7126,7 +7126,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -7143,7 +7143,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -7160,7 +7160,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -7177,7 +7177,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0001 + "guess": 3.000 }, "is_highlighted": true, "is_parent": false, @@ -7273,7 +7273,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -7290,7 +7290,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -7307,7 +7307,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -7324,7 +7324,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -7341,7 +7341,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0001 + "guess": 3.000 }, "is_highlighted": true, "is_parent": false, @@ -7437,7 +7437,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -7454,7 +7454,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -7471,7 +7471,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -7488,7 +7488,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -7505,7 +7505,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0001 + "guess": 3.000 }, "is_highlighted": false, "is_parent": false, @@ -7522,7 +7522,7 @@ { "frame_id": 19, "encoded_locals": { - "guess": 3.0001 + "guess": 3.000 }, "is_highlighted": true, "is_parent": false, @@ -7618,7 +7618,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -7635,7 +7635,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -7652,7 +7652,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -7669,7 +7669,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -7686,7 +7686,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0001 + "guess": 3.000 }, "is_highlighted": false, "is_parent": false, @@ -7703,7 +7703,7 @@ { "frame_id": 19, "encoded_locals": { - "guess": 3.0001 + "guess": 3.000 }, "is_highlighted": true, "is_parent": false, @@ -7799,7 +7799,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -7816,7 +7816,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -7833,7 +7833,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -7850,7 +7850,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -7867,7 +7867,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0001 + "guess": 3.000 }, "is_highlighted": false, "is_parent": false, @@ -7885,7 +7885,7 @@ "frame_id": 19, "encoded_locals": { "__return__": true, - "guess": 3.0001 + "guess": 3.000 }, "is_highlighted": true, "is_parent": false, @@ -7982,7 +7982,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -7999,7 +7999,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -8016,7 +8016,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -8033,7 +8033,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -8050,7 +8050,7 @@ { "frame_id": 18, "encoded_locals": { - "guess": 3.0001 + "guess": 3.000 }, "is_highlighted": true, "is_parent": false, @@ -8146,7 +8146,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -8163,7 +8163,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -8180,7 +8180,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -8197,7 +8197,7 @@ { "frame_id": 14, "encoded_locals": { - "guess": 3.0235 + "guess": 3.023 }, "is_highlighted": false, "is_parent": false, @@ -8214,8 +8214,8 @@ { "frame_id": 18, "encoded_locals": { - "__return__": 3.0001, - "guess": 3.0001 + "__return__": 3.000, + "guess": 3.000 }, "is_highlighted": true, "is_parent": false, @@ -8312,7 +8312,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -8329,7 +8329,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -8346,7 +8346,7 @@ { "frame_id": 10, "encoded_locals": { - "guess": 3.4 + "guess": 3.400 }, "is_highlighted": false, "is_parent": false, @@ -8363,8 +8363,8 @@ { "frame_id": 14, "encoded_locals": { - "__return__": 3.0001, - "guess": 3.0235 + "__return__": 3.000, + "guess": 3.023 }, "is_highlighted": true, "is_parent": false, @@ -8461,7 +8461,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -8478,7 +8478,7 @@ { "frame_id": 6, "encoded_locals": { - "guess": 5.0 + "guess": 5.000 }, "is_highlighted": false, "is_parent": false, @@ -8495,8 +8495,8 @@ { "frame_id": 10, "encoded_locals": { - "__return__": 3.0001, - "guess": 3.4 + "__return__": 3.000, + "guess": 3.400 }, "is_highlighted": true, "is_parent": false, @@ -8593,7 +8593,7 @@ { "frame_id": 2, "encoded_locals": { - "guess": 1.0 + "guess": 1.000 }, "is_highlighted": false, "is_parent": false, @@ -8610,8 +8610,8 @@ { "frame_id": 6, "encoded_locals": { - "__return__": 3.0001, - "guess": 5.0 + "__return__": 3.000, + "guess": 5.000 }, "is_highlighted": true, "is_parent": false, @@ -8708,8 +8708,8 @@ { "frame_id": 2, "encoded_locals": { - "__return__": 3.0001, - "guess": 1.0 + "__return__": 3.000, + "guess": 1.000 }, "is_highlighted": true, "is_parent": false, @@ -8779,7 +8779,7 @@ "REF", 3 ], - "__return__": 3.0001, + "__return__": 3.000, "x": 9, "average": [ "REF", @@ -8861,7 +8861,7 @@ "REF", 3 ], - "__return__": 3.0001, + "__return__": 3.000, "x": 9, "average": [ "REF", @@ -8893,7 +8893,7 @@ "REF", 1 ], - "ans": 3.0001 + "ans": 3.000 }, "heap": { "1": [ diff --git a/v3/generate_json_trace.py b/v3/generate_json_trace.py index ab00b91f1..809aa3807 100644 --- a/v3/generate_json_trace.py +++ b/v3/generate_json_trace.py @@ -12,6 +12,14 @@ import sys, pg_logger, json +# To make regression tests work consistently across platforms, +# standardize display of floats to 3 significant figures +# +# Trick from: +# http://stackoverflow.com/questions/1447287/format-floats-with-standard-json-module +json.encoder.FLOAT_REPR = lambda f: ('%.3f' % f) + + def json_finalizer(input_code, output_trace): ret = dict(code=input_code, trace=output_trace) json_output = json.dumps(ret, indent=INDENT_LEVEL) diff --git a/v3/tests/backend-tests/infinite_loop_one_liner.golden b/v3/tests/backend-tests/infinite_loop_one_liner.golden index 93cda763e..23334dcc2 100644 --- a/v3/tests/backend-tests/infinite_loop_one_liner.golden +++ b/v3/tests/backend-tests/infinite_loop_one_liner.golden @@ -1,5 +1,5 @@ { - "code": "while 1: print \"hahahaha\"\n", + "code": "while 1:\n print \"hahahaha\"\n", "trace": [ { "ordered_globals": [], @@ -11,6 +11,16 @@ "line": 1, "event": "step_line" }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, { "ordered_globals": [], "stdout": "hahahaha\n", @@ -18,7 +28,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -28,7 +38,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -38,7 +48,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -48,7 +58,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -58,7 +68,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -68,7 +78,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -78,7 +88,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -88,7 +98,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -98,7 +108,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -108,7 +118,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -118,7 +128,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -128,7 +138,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -138,7 +148,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -148,7 +158,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -158,7 +168,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -168,7 +178,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -178,7 +188,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -188,7 +198,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -198,7 +208,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -208,7 +218,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -218,7 +228,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -228,7 +238,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -238,7 +248,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -248,7 +258,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -258,7 +268,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -268,7 +278,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -278,7 +288,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -288,7 +298,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -298,7 +308,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -308,7 +318,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -318,7 +328,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -328,7 +338,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -338,7 +348,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -348,7 +358,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -358,7 +368,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -368,7 +378,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -378,7 +388,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -388,7 +398,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -398,7 +408,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -408,7 +418,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -418,7 +428,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -428,7 +438,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -438,7 +448,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -448,7 +458,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -458,7 +468,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -468,7 +478,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -478,7 +488,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -488,7 +498,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -498,7 +508,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -508,7 +518,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -518,7 +528,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -528,7 +538,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -538,7 +548,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -548,7 +558,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -558,7 +568,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -568,7 +578,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -578,7 +588,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -588,7 +598,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -598,7 +608,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -608,7 +618,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -618,7 +628,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -628,7 +638,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -638,7 +648,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -648,7 +658,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -658,7 +668,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -668,7 +678,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -678,7 +688,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -688,7 +698,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -698,7 +708,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -708,7 +718,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -718,7 +728,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -728,7 +738,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -738,7 +748,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -748,7 +758,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -758,7 +768,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -768,7 +778,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -778,7 +788,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -788,7 +798,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -798,7 +808,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -808,7 +818,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -818,7 +828,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -828,7 +838,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -838,7 +848,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -848,7 +858,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -858,7 +868,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -868,7 +878,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -878,7 +888,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -888,7 +898,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -898,7 +908,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -908,7 +918,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -918,7 +928,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -928,7 +938,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -938,7 +948,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -948,7 +958,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -958,7 +968,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -968,7 +978,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -978,7 +988,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -988,7 +998,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -998,7 +1008,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1008,7 +1018,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1018,7 +1028,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1028,7 +1038,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1038,7 +1048,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1048,7 +1058,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1058,7 +1068,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1068,7 +1078,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1078,7 +1088,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1088,7 +1098,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1098,7 +1108,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1108,7 +1118,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1118,7 +1128,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1128,7 +1138,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1138,7 +1148,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1148,7 +1158,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1158,7 +1168,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1168,7 +1178,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1178,7 +1188,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1188,7 +1198,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1198,7 +1208,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1208,7 +1218,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1218,7 +1228,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1228,7 +1238,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1238,7 +1248,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1248,7 +1258,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1258,7 +1268,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1268,7 +1278,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1278,7 +1288,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1288,7 +1298,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1298,7 +1308,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1308,7 +1318,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1318,7 +1328,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1328,7 +1338,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1338,7 +1348,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1348,7 +1358,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1358,7 +1368,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1368,7 +1378,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1378,7 +1388,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1388,7 +1398,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1398,7 +1408,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1408,7 +1418,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1418,7 +1428,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1428,7 +1438,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1438,7 +1448,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1448,7 +1458,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1458,7 +1468,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1468,7 +1478,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1478,7 +1488,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1488,7 +1498,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1498,7 +1508,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1508,7 +1518,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1518,7 +1528,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1528,7 +1538,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1538,7 +1548,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1548,7 +1558,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1558,7 +1568,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1568,7 +1578,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1578,7 +1588,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1588,7 +1598,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1598,7 +1608,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1608,7 +1618,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1618,7 +1628,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1628,7 +1638,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1638,7 +1648,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1648,7 +1658,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1658,7 +1668,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1668,7 +1678,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1678,7 +1688,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1688,7 +1698,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1698,7 +1708,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1708,7 +1718,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1718,7 +1728,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1728,7 +1738,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1738,7 +1748,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1748,7 +1758,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1758,7 +1768,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1768,7 +1778,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1778,7 +1788,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1788,7 +1798,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1798,7 +1808,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1808,7 +1818,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1818,7 +1828,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1828,7 +1838,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1838,7 +1848,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1848,7 +1858,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1858,7 +1868,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1868,7 +1878,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1878,7 +1888,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1888,7 +1898,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1898,7 +1908,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1908,7 +1918,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1918,7 +1928,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1928,7 +1938,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1938,7 +1948,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1948,7 +1958,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1958,7 +1968,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1968,7 +1978,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1978,7 +1988,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1988,7 +1998,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -1998,7 +2008,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2008,7 +2018,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2018,7 +2028,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2028,7 +2038,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2038,7 +2048,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2048,7 +2058,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2058,7 +2068,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2068,7 +2078,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2078,7 +2088,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2088,7 +2098,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2098,7 +2108,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2108,7 +2118,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2118,7 +2128,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2128,7 +2138,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2138,7 +2148,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2148,7 +2158,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2158,7 +2168,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2168,7 +2178,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2178,7 +2188,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2188,7 +2198,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2198,7 +2208,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2208,7 +2218,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2218,7 +2228,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2228,7 +2238,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2238,7 +2248,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2248,7 +2258,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2258,7 +2268,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2268,7 +2278,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2278,7 +2288,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2288,7 +2298,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2298,7 +2308,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2308,7 +2318,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2318,7 +2328,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2328,7 +2338,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2338,7 +2348,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2348,7 +2358,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2358,7 +2368,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2368,7 +2378,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2378,7 +2388,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2388,7 +2398,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2398,7 +2408,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2408,7 +2418,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2418,7 +2428,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2428,7 +2438,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2438,7 +2448,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2448,7 +2458,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2458,7 +2468,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2468,7 +2478,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2478,7 +2488,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2488,7 +2498,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2498,7 +2508,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2508,7 +2518,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2518,7 +2528,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2528,7 +2538,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2538,7 +2548,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2548,7 +2558,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2558,7 +2568,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2568,7 +2578,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2578,7 +2588,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2588,7 +2598,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2598,7 +2608,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2608,7 +2618,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2618,7 +2628,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2628,7 +2638,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2638,7 +2648,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2648,7 +2658,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2658,7 +2668,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2668,7 +2678,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2678,7 +2688,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2688,7 +2698,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2698,7 +2708,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2708,7 +2718,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2718,7 +2728,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2728,7 +2738,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2738,7 +2748,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2748,7 +2758,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2758,7 +2768,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2768,7 +2778,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2778,7 +2788,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2788,7 +2798,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2798,7 +2808,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2808,7 +2818,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2818,7 +2828,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2828,7 +2838,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2838,7 +2848,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2848,7 +2858,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2858,7 +2868,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2868,7 +2878,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2878,7 +2888,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2888,7 +2898,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2898,7 +2908,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2908,7 +2918,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2918,7 +2928,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2928,7 +2938,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2938,7 +2948,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2948,7 +2958,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2958,7 +2968,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2968,7 +2978,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2978,7 +2988,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { @@ -2988,17 +2998,7 @@ "stack_to_render": [], "globals": {}, "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "ordered_globals": [], - "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", - "func_name": "", - "stack_to_render": [], - "globals": {}, - "heap": {}, - "line": 1, + "line": 2, "event": "step_line" }, { diff --git a/v3/tests/backend-tests/infinite_loop_one_liner.txt b/v3/tests/backend-tests/infinite_loop_one_liner.txt index 9b79fb99d..e4c0bac1c 100644 --- a/v3/tests/backend-tests/infinite_loop_one_liner.txt +++ b/v3/tests/backend-tests/infinite_loop_one_liner.txt @@ -1 +1,2 @@ -while 1: print "hahahaha" +while 1: + print "hahahaha" diff --git a/v3/tests/backend-tests/pie-test.golden b/v3/tests/backend-tests/pie-test.golden index c595719af..1a5218ee0 100644 --- a/v3/tests/backend-tests/pie-test.golden +++ b/v3/tests/backend-tests/pie-test.golden @@ -47,8 +47,8 @@ "REF", 1 ], - "pi": 3.1416, - "e": 2.7183 + "pi": 3.142, + "e": 2.718 }, "heap": { "1": [ @@ -74,9 +74,9 @@ "REF", 1 ], - "pi": 3.1416, - "e": 2.7183, - "pie": 5.8599 + "pi": 3.142, + "e": 2.718, + "pie": 5.860 }, "heap": { "1": [ From c1d3e2da67b82a853e778af1727b45ec5a7ccdd8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 14:23:21 -0700 Subject: [PATCH 421/502] add support for tracing imported modules (by skipping over module function calls) --- v3/pg_logger.py | 14 +- .../backend-tests/print_builtins_error.golden | 19 --- .../backend-tests/print_builtins_error.txt | 1 - v3/tests/backend-tests/py-modules.golden | 132 ++++++++++++++++++ v3/tests/backend-tests/py-modules.txt | 7 + 5 files changed, 151 insertions(+), 22 deletions(-) delete mode 100644 v3/tests/backend-tests/print_builtins_error.golden delete mode 100644 v3/tests/backend-tests/print_builtins_error.txt create mode 100644 v3/tests/backend-tests/py-modules.golden create mode 100644 v3/tests/backend-tests/py-modules.txt diff --git a/v3/pg_logger.py b/v3/pg_logger.py index f8e5052ae..397d0cc5b 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -308,10 +308,20 @@ def interaction(self, frame, traceback, event_type): top_frame = tos[0] lineno = tos[1] - # don't trace inside of our __restricted_import__ helper function - if top_frame.f_code.co_name == '__restricted_import__': + # don't trace inside of ANY functions that aren't user-written code + # (e.g., those from imported modules -- e.g., random, re -- or the + # __restricted_import__ function in this file) + # + # it seems like user-written code has a filename of '', + # but maybe there are false positives too? + if self.canonic(frame.f_code.co_filename) != '': return + # don't trace inside of our __restricted_import__ helper function + # (this check is now subsumed by the above check) + #if top_frame.f_code.co_name == '__restricted_import__': + # return + self.encoder.reset_heap() # VERY VERY VERY IMPORTANT, # or else we won't properly capture heap object mutations in the trace! diff --git a/v3/tests/backend-tests/print_builtins_error.golden b/v3/tests/backend-tests/print_builtins_error.golden deleted file mode 100644 index dc24fd227..000000000 --- a/v3/tests/backend-tests/print_builtins_error.golden +++ /dev/null @@ -1,19 +0,0 @@ -{ - "code": "print __builtins__\n", - "trace": [ - { - "ordered_globals": [], - "stdout": "", - "func_name": "", - "stack_to_render": [], - "globals": {}, - "heap": {}, - "line": 1, - "event": "step_line" - }, - { - "exception_msg": "Unknown error", - "event": "uncaught_exception" - } - ] -} diff --git a/v3/tests/backend-tests/print_builtins_error.txt b/v3/tests/backend-tests/print_builtins_error.txt deleted file mode 100644 index d4d03e56f..000000000 --- a/v3/tests/backend-tests/print_builtins_error.txt +++ /dev/null @@ -1 +0,0 @@ -print __builtins__ diff --git a/v3/tests/backend-tests/py-modules.golden b/v3/tests/backend-tests/py-modules.golden new file mode 100644 index 000000000..6f5f87c33 --- /dev/null +++ b/v3/tests/backend-tests/py-modules.golden @@ -0,0 +1,132 @@ +{ + "code": "# test to make sure nothing crashes when tracing code in pure-Python\n# function calls imported from modules\nimport random\nrandom.randint(10, 100)\n\nfrom re import compile\nx = compile('foo')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "random" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "random" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "random" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "random" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "random", + "compile" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compile": [ + "REF", + 2 + ], + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "random" + ], + "2": [ + "FUNCTION", + "compile(pattern, flags)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "random", + "compile", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compile": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "module", + "random" + ], + "2": [ + "FUNCTION", + "compile(pattern, flags)", + null + ], + "3": [ + "_sre.SRE_Pattern", + "<_sre.SRE_Pattern object at 0xADDR>" + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/py-modules.txt b/v3/tests/backend-tests/py-modules.txt new file mode 100644 index 000000000..eb4211809 --- /dev/null +++ b/v3/tests/backend-tests/py-modules.txt @@ -0,0 +1,7 @@ +# test to make sure nothing crashes when tracing code in pure-Python +# function calls imported from modules +import random +random.randint(10, 100) + +from re import compile +x = compile('foo') From 74b87e5072ae9ac4edea7752574c6bc68bc45384 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 15:37:45 -0700 Subject: [PATCH 422/502] Update v3/docs/user-FAQ.md --- v3/docs/user-FAQ.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/v3/docs/user-FAQ.md b/v3/docs/user-FAQ.md index f79b662d3..5233e137d 100644 --- a/v3/docs/user-FAQ.md +++ b/v3/docs/user-FAQ.md @@ -15,13 +15,6 @@ it doesn't matter whether they're rendered in the stack or heap. Yep, that's a known bug; Online Python Tutor currently doesn't have much support for Unicode. -#### Whoa, I get an unknown error when I try to use the `re` module (or other modules) - -Yep, Online Python Tutor currently has very limited support for external modules. The only module functions that work -are those involving native C function calls (e.g., "import math; x = math.sqrt(9)"). Making **pure-Python -function calls** in external modules will lead to an unknown error. - - #### Visualizations of object-oriented programs are confusing; why are there grayed-out frames everywhere? We haven't "cleaned-up" the visualizations to look better for OOP code examples; From 9f58ac9fde2868ae7113a9e5e994fb236a509551 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 18:16:50 -0700 Subject: [PATCH 423/502] improved handling of exceptions and got namedtuple working! --- v3/example-code/nonlocal.golden | 2 +- v3/js/opt-frontend.js | 3 + v3/pg_logger.py | 54 +- v3/tests/backend-tests/exec_test.golden | 17 +- v3/tests/backend-tests/import_error.golden | 7 +- v3/tests/backend-tests/namedtuple.golden | 5813 +++++++++++++++++++ v3/tests/backend-tests/namedtuple.txt | 25 + v3/tests/backend-tests/parse_error.golden | 2 +- v3/tests/backend-tests/parse_error_2.golden | 2 +- v3/tests/backend-tests/parse_error_3.golden | 2 +- 10 files changed, 5901 insertions(+), 26 deletions(-) create mode 100644 v3/tests/backend-tests/namedtuple.golden create mode 100644 v3/tests/backend-tests/namedtuple.txt diff --git a/v3/example-code/nonlocal.golden b/v3/example-code/nonlocal.golden index 7d3399bec..7f7631792 100644 --- a/v3/example-code/nonlocal.golden +++ b/v3/example-code/nonlocal.golden @@ -2,7 +2,7 @@ "code": "# 'nonlocal' keyword is only in Python 3\ndef outer():\n x = 1\n def inner():\n nonlocal x\n x = 2\n y = x\n print(\"inner:\", x, y)\n inner()\n print(\"outer:\", x)\n\nouter()\n", "trace": [ { - "exception_msg": "Error: invalid syntax", + "exception_msg": "SyntaxError: invalid syntax (, line 5)", "line": 5, "event": "uncaught_exception", "offset": 18 diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 63ec82072..6da40717b 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -161,6 +161,9 @@ $(document).ready(function() { alert(trace[0].exception_msg); } + else if (trace[trace.length - 1].exception_msg) { + alert(trace[trace.length - 1].exception_msg); + } else { alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)"); } diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 397d0cc5b..94f2468c0 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -312,10 +312,18 @@ def interaction(self, frame, traceback, event_type): # (e.g., those from imported modules -- e.g., random, re -- or the # __restricted_import__ function in this file) # - # it seems like user-written code has a filename of '', - # but maybe there are false positives too? - if self.canonic(frame.f_code.co_filename) != '': - return + # empirically, it seems like the FIRST entry in self.stack is + # the 'run' function from bdb.py, but everything else on the + # stack is the user program's "real stack" + for (cur_frame, cur_line) in self.stack[1:]: + # it seems like user-written code has a filename of '', + # but maybe there are false positives too? + if self.canonic(cur_frame.f_code.co_filename) != '': + return + # also don't trace inside of the magic "constructor" code + if cur_frame.f_code.co_name == '__new__': + return + # don't trace inside of our __restricted_import__ helper function # (this check is now subsumed by the above check) @@ -708,19 +716,26 @@ def _runscript(self, script_str): trace_entry = dict(event='uncaught_exception') - exc = sys.exc_info()[1] - if hasattr(exc, 'lineno'): - trace_entry['line'] = exc.lineno - if hasattr(exc, 'offset'): - trace_entry['offset'] = exc.offset + (exc_type, exc_val, exc_tb) = sys.exc_info() + if hasattr(exc_val, 'lineno'): + trace_entry['line'] = exc_val.lineno + if hasattr(exc_val, 'offset'): + trace_entry['offset'] = exc_val.offset + + trace_entry['exception_msg'] = type(exc_val).__name__ + ": " + str(exc_val) + + # SUPER SUBTLE! if this exact same exception has already been + # recorded by the program, then DON'T record it again as an + # uncaught_exception + already_caught = False + for e in self.trace: + if e['event'] == 'exception' and e['exception_msg'] == trace_entry['exception_msg']: + already_caught = True + break - if hasattr(exc, 'msg'): - trace_entry['exception_msg'] = "Error: " + exc.msg - else: - trace_entry['exception_msg'] = "Unknown error" + if not already_caught: + self.trace.append(trace_entry) - self.trace.append(trace_entry) - #self.finalize() raise bdb.BdbQuit # need to forceably STOP execution @@ -734,6 +749,8 @@ def finalize(self): assert len(self.trace) <= (MAX_EXECUTED_LINES + 1) + # don't do this anymore ... + ''' # filter all entries after 'return' from '', since they # seem extraneous: res = [] @@ -741,8 +758,11 @@ def finalize(self): res.append(e) if e['event'] == 'return' and e['func_name'] == '': break + ''' + + res = self.trace - # another hack: if the SECOND to last entry is an 'exception' + # if the SECOND to last entry is an 'exception' # and the last entry is return from , then axe the last # entry, for aesthetic reasons :) if len(res) >= 2 and \ @@ -752,8 +772,6 @@ def finalize(self): self.trace = res - #for e in self.trace: print >> sys.stderr, e - self.finalizer_func(self.executed_script, self.trace) diff --git a/v3/tests/backend-tests/exec_test.golden b/v3/tests/backend-tests/exec_test.golden index aba0c1788..07b7269cf 100644 --- a/v3/tests/backend-tests/exec_test.golden +++ b/v3/tests/backend-tests/exec_test.golden @@ -34,13 +34,26 @@ { "ordered_globals": [], "stdout": "", - "exception_msg": "ImportError: os not supported", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, - "event": "exception" + "event": "return" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "return" + }, + { + "exception_msg": "ImportError: os not supported", + "event": "uncaught_exception" } ] } diff --git a/v3/tests/backend-tests/import_error.golden b/v3/tests/backend-tests/import_error.golden index 96e9fa679..05a889187 100644 --- a/v3/tests/backend-tests/import_error.golden +++ b/v3/tests/backend-tests/import_error.golden @@ -14,13 +14,16 @@ { "ordered_globals": [], "stdout": "", - "exception_msg": "ImportError: os not supported", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 2, - "event": "exception" + "event": "return" + }, + { + "exception_msg": "ImportError: os not supported", + "event": "uncaught_exception" } ] } diff --git a/v3/tests/backend-tests/namedtuple.golden b/v3/tests/backend-tests/namedtuple.golden new file mode 100644 index 000000000..eaf6c5775 --- /dev/null +++ b/v3/tests/backend-tests/namedtuple.golden @@ -0,0 +1,5813 @@ +{ + "code": "from collections import namedtuple\n\nRestaurant = namedtuple('Restaurant', 'name cuisine phone dish price')\n\nR1 = Restaurant(\"Taillevent\", \"French\", \"343-3434\", \"Escargots\", 24.50)\nR2 = Restaurant(\"La Tour D'Argent\", \"French\", \"343-3344\", \"Ris de Veau\", 48.50)\nR3 = Restaurant(\"Pascal\", \"French\", \"333-4444\", \"Bouillabaisse\", 32.00)\nR4 = Restaurant(\"Thai Touch\", \"Thai\", \"444-3333\", \"Mee Krob\", 10.95)\nR5 = Restaurant(\"Thai Dishes\", \"Thai\", \"333-4433\", \"Paht Woon Sen\", 8.50)\nR6 = Restaurant(\"Thai Spoon\", \"Thai\", \"334-3344\", \"Mussamun\", 9.00)\nR7 = Restaurant(\"McDonald's\", \"Burgers\", \"333-4443\", \"Big Mac\", 3.95)\nR8 = Restaurant(\"Burger King\", \"Burgers\", \"444-3344\", \"Whopper\", 3.75)\nR9 = Restaurant(\"Wahoo's\", \"Fish Tacos\", \"443-4443\", \"Mahi Mahi Burrito\", 7.50)\nR10 = Restaurant(\"In-N-Out Burger\", \"Burgers\", \"434-3344\", \"Cheeseburger\", 2.50)\nR11 = Restaurant(\"The Shack\", \"Burgers\", \"333-3334\", \"Hot Link Burger\", 4.50)\nR12 = Restaurant(\"Gina's\", \"Pizza\", \"334-4433\", \"Combo Pizza\", 12.95)\nR13 = Restaurant(\"Peacock, Room\", \"Indian\", \"333-4443\", \"Rogan Josh\", 12.50)\nR14 = Restaurant(\"Gaylord\", \"Indian\", \"333-3433\", \"Tandoori Chicken\", 13.50)\nR15 = Restaurant(\"Mr. Chow\", \"Chinese\", \"222-3333\", \"Peking Duck\", 24.50)\nR16 = Restaurant(\"Chez Panisse\", \"California\", \"222-3322\", \"Grilled Duck Breast\", 25.00)\nR17 = Restaurant(\"Spago\", \"California\", \"333-2222\", \"Striped Bass\", 24.50)\nR18 = Restaurant(\"Sriped Bass\", \"Seafood\", \"333-2233\", \"Cedar Plank Salmon\", 21.50)\nR19 = Restaurant(\"Golden Pagoda\", \"Chinese\", \"232-3232\", \"Egg Foo Young\", 8.50)\nR20 = Restaurant(\"Langer's\", \"Delicatessen\", \"333-2223\", \"Pastrami Sandwich\", 11.50)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ], + "R11": [ + "REF", + 26 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R12": [ + "REF", + 27 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ], + "R11": [ + "REF", + 26 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ], + "27": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R12": [ + "REF", + 27 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ], + "R11": [ + "REF", + 26 + ], + "R13": [ + "REF", + 28 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ], + "27": [ + "INSTANCE", + "Restaurant" + ], + "28": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R12": [ + "REF", + 27 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R11": [ + "REF", + 26 + ], + "R13": [ + "REF", + 28 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ], + "27": [ + "INSTANCE", + "Restaurant" + ], + "28": [ + "INSTANCE", + "Restaurant" + ], + "29": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R12": [ + "REF", + 27 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R15": [ + "REF", + 30 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R11": [ + "REF", + 26 + ], + "R13": [ + "REF", + 28 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ], + "27": [ + "INSTANCE", + "Restaurant" + ], + "28": [ + "INSTANCE", + "Restaurant" + ], + "29": [ + "INSTANCE", + "Restaurant" + ], + "30": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R16": [ + "REF", + 31 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R15": [ + "REF", + 30 + ], + "R12": [ + "REF", + 27 + ], + "R13": [ + "REF", + 28 + ], + "R10": [ + "REF", + 25 + ], + "R11": [ + "REF", + 26 + ], + "R3": [ + "REF", + 18 + ], + "Restaurant": [ + "REF", + 2 + ], + "R8": [ + "REF", + 23 + ], + "R6": [ + "REF", + 21 + ], + "R9": [ + "REF", + 24 + ], + "R7": [ + "REF", + 22 + ], + "namedtuple": [ + "REF", + 1 + ], + "R4": [ + "REF", + 19 + ], + "R2": [ + "REF", + 17 + ], + "R1": [ + "REF", + 16 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ], + "27": [ + "INSTANCE", + "Restaurant" + ], + "28": [ + "INSTANCE", + "Restaurant" + ], + "29": [ + "INSTANCE", + "Restaurant" + ], + "30": [ + "INSTANCE", + "Restaurant" + ], + "31": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R16": [ + "REF", + 31 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R15": [ + "REF", + 30 + ], + "R12": [ + "REF", + 27 + ], + "R13": [ + "REF", + 28 + ], + "R10": [ + "REF", + 25 + ], + "R17": [ + "REF", + 32 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R11": [ + "REF", + 26 + ], + "R9": [ + "REF", + 24 + ], + "R7": [ + "REF", + 22 + ], + "R6": [ + "REF", + 21 + ], + "namedtuple": [ + "REF", + 1 + ], + "R4": [ + "REF", + 19 + ], + "R2": [ + "REF", + 17 + ], + "R1": [ + "REF", + 16 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ], + "27": [ + "INSTANCE", + "Restaurant" + ], + "28": [ + "INSTANCE", + "Restaurant" + ], + "29": [ + "INSTANCE", + "Restaurant" + ], + "30": [ + "INSTANCE", + "Restaurant" + ], + "31": [ + "INSTANCE", + "Restaurant" + ], + "32": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17", + "R18" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R16": [ + "REF", + 31 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R15": [ + "REF", + 30 + ], + "R12": [ + "REF", + 27 + ], + "R13": [ + "REF", + 28 + ], + "R10": [ + "REF", + 25 + ], + "R17": [ + "REF", + 32 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R11": [ + "REF", + 26 + ], + "R18": [ + "REF", + 33 + ], + "R9": [ + "REF", + 24 + ], + "R7": [ + "REF", + 22 + ], + "R6": [ + "REF", + 21 + ], + "namedtuple": [ + "REF", + 1 + ], + "R4": [ + "REF", + 19 + ], + "R2": [ + "REF", + 17 + ], + "R1": [ + "REF", + 16 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ], + "27": [ + "INSTANCE", + "Restaurant" + ], + "28": [ + "INSTANCE", + "Restaurant" + ], + "29": [ + "INSTANCE", + "Restaurant" + ], + "30": [ + "INSTANCE", + "Restaurant" + ], + "31": [ + "INSTANCE", + "Restaurant" + ], + "32": [ + "INSTANCE", + "Restaurant" + ], + "33": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17", + "R18", + "R19" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R16": [ + "REF", + 31 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R15": [ + "REF", + 30 + ], + "R12": [ + "REF", + 27 + ], + "R13": [ + "REF", + 28 + ], + "R10": [ + "REF", + 25 + ], + "R17": [ + "REF", + 32 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R11": [ + "REF", + 26 + ], + "R18": [ + "REF", + 33 + ], + "R19": [ + "REF", + 34 + ], + "R7": [ + "REF", + 22 + ], + "R6": [ + "REF", + 21 + ], + "namedtuple": [ + "REF", + 1 + ], + "R4": [ + "REF", + 19 + ], + "R2": [ + "REF", + 17 + ], + "R9": [ + "REF", + 24 + ], + "R1": [ + "REF", + 16 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ], + "27": [ + "INSTANCE", + "Restaurant" + ], + "28": [ + "INSTANCE", + "Restaurant" + ], + "29": [ + "INSTANCE", + "Restaurant" + ], + "30": [ + "INSTANCE", + "Restaurant" + ], + "31": [ + "INSTANCE", + "Restaurant" + ], + "32": [ + "INSTANCE", + "Restaurant" + ], + "33": [ + "INSTANCE", + "Restaurant" + ], + "34": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17", + "R18", + "R19", + "R20" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R5": [ + "REF", + 20 + ], + "R16": [ + "REF", + 31 + ], + "R17": [ + "REF", + 32 + ], + "R14": [ + "REF", + 29 + ], + "R15": [ + "REF", + 30 + ], + "R12": [ + "REF", + 27 + ], + "R13": [ + "REF", + 28 + ], + "R10": [ + "REF", + 25 + ], + "R11": [ + "REF", + 26 + ], + "R3": [ + "REF", + 18 + ], + "R18": [ + "REF", + 33 + ], + "R19": [ + "REF", + 34 + ], + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R20": [ + "REF", + 35 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(t)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant" + ], + "17": [ + "INSTANCE", + "Restaurant" + ], + "18": [ + "INSTANCE", + "Restaurant" + ], + "19": [ + "INSTANCE", + "Restaurant" + ], + "20": [ + "INSTANCE", + "Restaurant" + ], + "21": [ + "INSTANCE", + "Restaurant" + ], + "22": [ + "INSTANCE", + "Restaurant" + ], + "23": [ + "INSTANCE", + "Restaurant" + ], + "24": [ + "INSTANCE", + "Restaurant" + ], + "25": [ + "INSTANCE", + "Restaurant" + ], + "26": [ + "INSTANCE", + "Restaurant" + ], + "27": [ + "INSTANCE", + "Restaurant" + ], + "28": [ + "INSTANCE", + "Restaurant" + ], + "29": [ + "INSTANCE", + "Restaurant" + ], + "30": [ + "INSTANCE", + "Restaurant" + ], + "31": [ + "INSTANCE", + "Restaurant" + ], + "32": [ + "INSTANCE", + "Restaurant" + ], + "33": [ + "INSTANCE", + "Restaurant" + ], + "34": [ + "INSTANCE", + "Restaurant" + ], + "35": [ + "INSTANCE", + "Restaurant" + ] + }, + "line": 24, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/namedtuple.txt b/v3/tests/backend-tests/namedtuple.txt new file mode 100644 index 000000000..f9314c000 --- /dev/null +++ b/v3/tests/backend-tests/namedtuple.txt @@ -0,0 +1,25 @@ +from collections import namedtuple + +Restaurant = namedtuple('Restaurant', 'name cuisine phone dish price') + +R1 = Restaurant("Taillevent", "French", "343-3434", "Escargots", 24.50) +R2 = Restaurant("La Tour D'Argent", "French", "343-3344", "Ris de Veau", 48.50) +R3 = Restaurant("Pascal", "French", "333-4444", "Bouillabaisse", 32.00) +R4 = Restaurant("Thai Touch", "Thai", "444-3333", "Mee Krob", 10.95) +R5 = Restaurant("Thai Dishes", "Thai", "333-4433", "Paht Woon Sen", 8.50) +R6 = Restaurant("Thai Spoon", "Thai", "334-3344", "Mussamun", 9.00) +R7 = Restaurant("McDonald's", "Burgers", "333-4443", "Big Mac", 3.95) +R8 = Restaurant("Burger King", "Burgers", "444-3344", "Whopper", 3.75) +R9 = Restaurant("Wahoo's", "Fish Tacos", "443-4443", "Mahi Mahi Burrito", 7.50) +R10 = Restaurant("In-N-Out Burger", "Burgers", "434-3344", "Cheeseburger", 2.50) +R11 = Restaurant("The Shack", "Burgers", "333-3334", "Hot Link Burger", 4.50) +R12 = Restaurant("Gina's", "Pizza", "334-4433", "Combo Pizza", 12.95) +R13 = Restaurant("Peacock, Room", "Indian", "333-4443", "Rogan Josh", 12.50) +R14 = Restaurant("Gaylord", "Indian", "333-3433", "Tandoori Chicken", 13.50) +R15 = Restaurant("Mr. Chow", "Chinese", "222-3333", "Peking Duck", 24.50) +R16 = Restaurant("Chez Panisse", "California", "222-3322", "Grilled Duck Breast", 25.00) +R17 = Restaurant("Spago", "California", "333-2222", "Striped Bass", 24.50) +R18 = Restaurant("Sriped Bass", "Seafood", "333-2233", "Cedar Plank Salmon", 21.50) +R19 = Restaurant("Golden Pagoda", "Chinese", "232-3232", "Egg Foo Young", 8.50) +R20 = Restaurant("Langer's", "Delicatessen", "333-2223", "Pastrami Sandwich", 11.50) + diff --git a/v3/tests/backend-tests/parse_error.golden b/v3/tests/backend-tests/parse_error.golden index d16836a2c..047dce543 100644 --- a/v3/tests/backend-tests/parse_error.golden +++ b/v3/tests/backend-tests/parse_error.golden @@ -2,7 +2,7 @@ "code": "x = 0\nfor i in range(10):\n x += 1\n print x\n x += 1\n\n", "trace": [ { - "exception_msg": "Error: unexpected indent", + "exception_msg": "IndentationError: unexpected indent (, line 4)", "line": 4, "event": "uncaught_exception", "offset": 3 diff --git a/v3/tests/backend-tests/parse_error_2.golden b/v3/tests/backend-tests/parse_error_2.golden index 52ebc60a5..a6973b8ee 100644 --- a/v3/tests/backend-tests/parse_error_2.golden +++ b/v3/tests/backend-tests/parse_error_2.golden @@ -2,7 +2,7 @@ "code": "x = 5\ny = x\nz = x + y\n\nfor x haslk;fjlasfhlkjl;sa\n", "trace": [ { - "exception_msg": "Error: invalid syntax", + "exception_msg": "SyntaxError: invalid syntax (, line 5)", "line": 5, "event": "uncaught_exception", "offset": 11 diff --git a/v3/tests/backend-tests/parse_error_3.golden b/v3/tests/backend-tests/parse_error_3.golden index cc161e2b7..8ae537dd0 100644 --- a/v3/tests/backend-tests/parse_error_3.golden +++ b/v3/tests/backend-tests/parse_error_3.golden @@ -2,7 +2,7 @@ "code": "x = []\nfor i in range(10):\n x.append(i)\n if i == 24:\n pass\n print y\n", "trace": [ { - "exception_msg": "Error: unindent does not match any outer indentation level", + "exception_msg": "IndentationError: unindent does not match any outer indentation level (, line 6)", "line": 6, "event": "uncaught_exception", "offset": 11 From e6d4f8e37407d2e90cf472e2f8b9e5a4eb06e39a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 19:21:52 -0700 Subject: [PATCH 424/502] WHAT THE?!? --- v3/pg_logger.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 94f2468c0..36b1e0147 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -703,7 +703,12 @@ def _runscript(self, script_str): # protect against unauthorized filesystem accesses ... resource.setrlimit(resource.RLIMIT_NOFILE, (0, 0)) # no opened files allowed - resource.setrlimit(resource.RLIMIT_FSIZE, (0, 0)) # (redundancy for paranoia) + + # VERY WEIRD. If you activate this resource limitation, it + # ends up generating an EMPTY trace for the following program: + # "x = 0\nfor i in range(10):\n x += 1\n print x\n x += 1\n" + # (at least on my Webfaction hosting with Python 2.7) + #resource.setrlimit(resource.RLIMIT_FSIZE, (0, 0)) # (redundancy for paranoia) self.run(script_str, user_globals, user_globals) # sys.exit ... From 685a7f9134d18357e3eea3a0635fcbb1d4e599f6 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 22:44:43 -0700 Subject: [PATCH 425/502] extra security precaution --- v3/pg_logger.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 36b1e0147..6818bdbc7 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -710,6 +710,19 @@ def _runscript(self, script_str): # (at least on my Webfaction hosting with Python 2.7) #resource.setrlimit(resource.RLIMIT_FSIZE, (0, 0)) # (redundancy for paranoia) + # sys.modules contains an in-memory cache of already-loaded + # modules, so if you delete modules from here, they will + # need to be re-loaded from the filesystem. + # + # Thus, as an extra precaution, remove these modules so that + # they can't be re-imported without opening a new file, + # which is disallowed by resource.RLIMIT_NOFILE + # + # Of course, this isn't a foolproof solution by any means, + # and it might lead to UNEXPECTED FAILURES later in execution. + del sys.modules['os'] + del sys.modules['sys'] + self.run(script_str, user_globals, user_globals) # sys.exit ... except SystemExit: From 50c5035c655cfd46ea7ccc3f6c3ebca8c6866d66 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 21 Sep 2012 23:52:26 -0700 Subject: [PATCH 426/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index d81af9039..6fd2e78b8 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -95,6 +95,12 @@ https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-form ... and the frontend should be able to visualize it! +My +[master's thesis](http://pgbovine.net/projects/pubs/guo-mixedlevel-mengthesis.pdf) from 2006 +describes one possible technique for building a C-language backend based upon the [Valgrind](http://www.valgrind.org) +tool. More importantly, it describes the difficulties involved in creating a robust execution +trace generator for C and C++. It should be much easier to build a backend for a memory- and type-safe language, though :) + ## Migrate OPT backend to Skulpt (very hard but super cool!) From d858959586c05f62c2e23027292c34693587ae46 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 22 Sep 2012 22:24:53 -0700 Subject: [PATCH 427/502] started refactoring test suite to add Python 3 support --- v3/tests/golden_test.py | 60 ++++++++++++++++++++++++----------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/v3/tests/golden_test.py b/v3/tests/golden_test.py index d936f2741..2b451ecde 100644 --- a/v3/tests/golden_test.py +++ b/v3/tests/golden_test.py @@ -9,21 +9,6 @@ from subprocess import * -PROGRAM = ['python', '../generate_json_trace.py'] - -INPUT_FILE_EXTENSION = '.txt' # input test files are .txt, NOT .py - - -ALL_TESTS = [] - -for (pwd, subdirs, files) in os.walk('.', followlinks=True): # need to follow example-code symlink - for f in files: - (base, ext) = os.path.splitext(f) - if ext == INPUT_FILE_EXTENSION: - fullpath = os.path.join(pwd, f) - ALL_TESTS.append(fullpath) - - def filter_output(s): return s @@ -41,7 +26,7 @@ def execute(input_filename): # print stderr, '}' # capture stdout into outfile, filtering out machine-specific addresses - outfile = base + '.out' + outfile = base + OUTPUT_FILE_EXTENSION outf = open(outfile, 'w') for line in stdout.splitlines(): @@ -53,7 +38,7 @@ def execute(input_filename): def clobber_golden_file(golden_file): (base, ext) = os.path.splitext(golden_file) - outfile = base + '.out' + outfile = base + OUTPUT_FILE_EXTENSION assert os.path.isfile(outfile) print ' Clobber %s => %s' % (outfile, golden_file) shutil.copy(outfile, golden_file) @@ -62,7 +47,7 @@ def clobber_golden_file(golden_file): # returns True if there is a diff, False otherwise def golden_differs_from_out(golden_file): (base, ext) = os.path.splitext(golden_file) - outfile = base + '.out' + outfile = base + OUTPUT_FILE_EXTENSION assert os.path.isfile(outfile) assert os.path.isfile(golden_file) @@ -78,9 +63,9 @@ def golden_differs_from_out(golden_file): def diff_test_output(test_name): (base, ext) = os.path.splitext(test_name) - golden_file = base + '.golden' + golden_file = base + GOLDEN_FILE_EXTENSION assert os.path.isfile(golden_file) - outfile = base + '.out' + outfile = base + OUTPUT_FILE_EXTENSION assert os.path.isfile(outfile) golden_s = open(golden_file).readlines() @@ -105,14 +90,14 @@ def run_test(input_filename, clobber_golden=False): assert ext == INPUT_FILE_EXTENSION # to eliminate possibility of using stale output: - outfile = base + '.out' + outfile = base + OUTPUT_FILE_EXTENSION if os.path.isfile(outfile): os.remove(outfile) input_fullpath = input_filename execute(input_fullpath) - golden_file = base + '.golden' + golden_file = base + GOLDEN_FILE_EXTENSION if os.path.isfile(golden_file): if golden_differs_from_out(golden_file): print " FAILED!!!" @@ -142,10 +127,35 @@ def diff_all_test_outputs(): parser.add_option("--test", dest="test_name", help="Run one test") parser.add_option("--difftest", dest="diff_test_name", - help="Diff against .golden for one test") + help="Diff against golden file for one test") parser.add_option("--diffall", action="store_true", dest="diff_all", - help="Diff against .golden for all tests") + help="Diff against golden file for all tests") + parser.add_option("--py3", action="store_true", dest="py3", + help="Run Python 3 tests (rather than Python 2)") (options, args) = parser.parse_args() + + + INPUT_FILE_EXTENSION = '.txt' # input test files are .txt, NOT .py + + if options.py3: + PROGRAM = ['python3', '../generate_json_trace.py'] + OUTPUT_FILE_EXTENSION = '.out_py3' + GOLDEN_FILE_EXTENSION = '.golden_py3' + else: + PROGRAM = ['python2', '../generate_json_trace.py'] + OUTPUT_FILE_EXTENSION = '.out' + GOLDEN_FILE_EXTENSION = '.golden' + + ALL_TESTS = [] + + for (pwd, subdirs, files) in os.walk('.', followlinks=True): # need to follow example-code symlink + for f in files: + (base, ext) = os.path.splitext(f) + if ext == INPUT_FILE_EXTENSION: + fullpath = os.path.join(pwd, f) + ALL_TESTS.append(fullpath) + + if options.run_all: if options.clobber: print 'Running all tests and clobbering results ...' @@ -164,7 +174,7 @@ def diff_all_test_outputs(): elif options.only_clobber: for t in ALL_TESTS: (base, ext) = os.path.splitext(t) - golden_file = base + '.golden' + golden_file = base + GOLDEN_FILE_EXTENSION clobber_golden_file(golden_file) else: parser.print_help() From 7798026783272ebdf1d8685376910d63f791c6f2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 22 Sep 2012 22:56:14 -0700 Subject: [PATCH 428/502] upgraded tests in preparation for python 3 parallel tests --- v3/example-code/list-comp.golden | 108 +- .../backend-tests/caught_exception_1.golden | 2 +- v3/tests/backend-tests/caught_exception_1.txt | 2 +- .../backend-tests/caught_exception_2.golden | 2 +- v3/tests/backend-tests/caught_exception_2.txt | 6 +- v3/tests/backend-tests/class_test.golden | 2 +- v3/tests/backend-tests/class_test.txt | 4 +- v3/tests/backend-tests/class_test_2.golden | 2 +- v3/tests/backend-tests/class_test_2.txt | 2 +- v3/tests/backend-tests/class_test_3.golden | 2 +- v3/tests/backend-tests/class_test_3.txt | 6 +- v3/tests/backend-tests/dict_test.golden | 6 +- v3/tests/backend-tests/dict_test.txt | 2 +- v3/tests/backend-tests/exec_test.golden | 2 +- v3/tests/backend-tests/exec_test.txt | 2 +- .../backend-tests/generator_use_test.golden | 2 +- v3/tests/backend-tests/generator_use_test.txt | 2 +- v3/tests/backend-tests/infinite_loop.golden | 2 +- v3/tests/backend-tests/infinite_loop.txt | 4 +- .../infinite_loop_one_liner.golden | 2 +- .../backend-tests/infinite_loop_one_liner.txt | 2 +- v3/tests/backend-tests/lambda_1.golden | 2 +- v3/tests/backend-tests/lambda_1.txt | 2 +- v3/tests/backend-tests/ling-scheme-3.golden | 2 +- v3/tests/backend-tests/ling-scheme-3.txt | 2 +- v3/tests/backend-tests/list_dict_test.golden | 2 +- v3/tests/backend-tests/list_dict_test.txt | 2 +- v3/tests/backend-tests/namedtuple.golden | 4706 ++++++++++++++++- v3/tests/backend-tests/newstyle_class.golden | 2 +- v3/tests/backend-tests/newstyle_class.txt | 4 +- v3/tests/backend-tests/one_func.golden | 2 +- v3/tests/backend-tests/one_func.txt | 2 +- v3/tests/backend-tests/open_error.golden | 2 +- v3/tests/backend-tests/open_error.txt | 2 +- v3/tests/backend-tests/runtime_error.golden | 2 +- v3/tests/backend-tests/runtime_error.txt | 2 +- v3/tests/backend-tests/simple.golden | 2 +- v3/tests/backend-tests/simple.txt | 4 +- v3/tests/backend-tests/two_funcs.golden | 2 +- v3/tests/backend-tests/two_funcs.txt | 4 +- 40 files changed, 4514 insertions(+), 398 deletions(-) diff --git a/v3/example-code/list-comp.golden b/v3/example-code/list-comp.golden index deb6d8b80..6a4ea270a 100644 --- a/v3/example-code/list-comp.golden +++ b/v3/example-code/list-comp.golden @@ -39,17 +39,12 @@ { "ordered_globals": [ "ppl", - "_[1]", "e" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "_[1]": [ - "REF", - 2 - ], "e": "Alice", "ppl": [ "REF", @@ -63,10 +58,6 @@ "Bob", "Carol", "Doug" - ], - "2": [ - "LIST", - "Alice!!" ] }, "line": 2, @@ -75,17 +66,12 @@ { "ordered_globals": [ "ppl", - "_[1]", "e" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "_[1]": [ - "REF", - 2 - ], "e": "Bob", "ppl": [ "REF", @@ -99,11 +85,6 @@ "Bob", "Carol", "Doug" - ], - "2": [ - "LIST", - "Alice!!", - "Bob!!" ] }, "line": 2, @@ -112,17 +93,12 @@ { "ordered_globals": [ "ppl", - "_[1]", "e" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "_[1]": [ - "REF", - 2 - ], "e": "Carol", "ppl": [ "REF", @@ -136,12 +112,6 @@ "Bob", "Carol", "Doug" - ], - "2": [ - "LIST", - "Alice!!", - "Bob!!", - "Carol!!" ] }, "line": 2, @@ -150,17 +120,12 @@ { "ordered_globals": [ "ppl", - "_[1]", "e" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "_[1]": [ - "REF", - 2 - ], "e": "Doug", "ppl": [ "REF", @@ -174,13 +139,6 @@ "Bob", "Carol", "Doug" - ], - "2": [ - "LIST", - "Alice!!", - "Bob!!", - "Carol!!", - "Doug!!" ] }, "line": 2, @@ -230,27 +188,22 @@ "ppl", "e", "excited_ppl", - "x", - "_[2]" + "x" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "x": "Alice", + "e": "Doug", "ppl": [ "REF", 1 ], - "e": "Doug", "excited_ppl": [ "REF", 2 ], - "_[2]": [ - "REF", - 3 - ] + "x": "Alice" }, "heap": { "1": [ @@ -266,10 +219,6 @@ "Bob!!", "Carol!!", "Doug!!" - ], - "3": [ - "LIST", - 5 ] }, "line": 3, @@ -280,27 +229,22 @@ "ppl", "e", "excited_ppl", - "x", - "_[2]" + "x" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "x": "Bob", + "e": "Doug", "ppl": [ "REF", 1 ], - "e": "Doug", "excited_ppl": [ "REF", 2 ], - "_[2]": [ - "REF", - 3 - ] + "x": "Bob" }, "heap": { "1": [ @@ -316,11 +260,6 @@ "Bob!!", "Carol!!", "Doug!!" - ], - "3": [ - "LIST", - 5, - 3 ] }, "line": 3, @@ -331,27 +270,22 @@ "ppl", "e", "excited_ppl", - "x", - "_[2]" + "x" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "x": "Carol", + "e": "Doug", "ppl": [ "REF", 1 ], - "e": "Doug", "excited_ppl": [ "REF", 2 ], - "_[2]": [ - "REF", - 3 - ] + "x": "Carol" }, "heap": { "1": [ @@ -367,12 +301,6 @@ "Bob!!", "Carol!!", "Doug!!" - ], - "3": [ - "LIST", - 5, - 3, - 5 ] }, "line": 3, @@ -383,27 +311,22 @@ "ppl", "e", "excited_ppl", - "x", - "_[2]" + "x" ], "stdout": "", "func_name": "", "stack_to_render": [], "globals": { - "x": "Doug", + "e": "Doug", "ppl": [ "REF", 1 ], - "e": "Doug", "excited_ppl": [ "REF", 2 ], - "_[2]": [ - "REF", - 3 - ] + "x": "Doug" }, "heap": { "1": [ @@ -419,13 +342,6 @@ "Bob!!", "Carol!!", "Doug!!" - ], - "3": [ - "LIST", - 5, - 3, - 5, - 4 ] }, "line": 3, diff --git a/v3/tests/backend-tests/caught_exception_1.golden b/v3/tests/backend-tests/caught_exception_1.golden index 7ca09e459..2418eb530 100644 --- a/v3/tests/backend-tests/caught_exception_1.golden +++ b/v3/tests/backend-tests/caught_exception_1.golden @@ -1,5 +1,5 @@ { - "code": "try:\n x = 1 / 0\nexcept:\n print \"DIVIDE BY ZERO\"\n\n", + "code": "try:\n x = 1 / 0\nexcept:\n print(\"DIVIDE BY ZERO\")\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/caught_exception_1.txt b/v3/tests/backend-tests/caught_exception_1.txt index 1bf3cdec0..ad24ed88b 100644 --- a/v3/tests/backend-tests/caught_exception_1.txt +++ b/v3/tests/backend-tests/caught_exception_1.txt @@ -1,5 +1,5 @@ try: x = 1 / 0 except: - print "DIVIDE BY ZERO" + print("DIVIDE BY ZERO") diff --git a/v3/tests/backend-tests/caught_exception_2.golden b/v3/tests/backend-tests/caught_exception_2.golden index 75a3122cd..a1452b2f6 100644 --- a/v3/tests/backend-tests/caught_exception_2.golden +++ b/v3/tests/backend-tests/caught_exception_2.golden @@ -1,5 +1,5 @@ { - "code": "# caught exception:\ntry:\n x = 1 / 0\nexcept:\n print \"DIVIDE BY ZERO\"\n\n\n# uncaught:\nprint y\n\nprint \"should not reach here\"\n\n", + "code": "# caught exception:\ntry:\n x = 1 / 0\nexcept:\n print(\"DIVIDE BY ZERO\")\n\n\n# uncaught:\nprint(y)\n\nprint(\"should not reach here\")\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/caught_exception_2.txt b/v3/tests/backend-tests/caught_exception_2.txt index 57c17019c..66768e16c 100644 --- a/v3/tests/backend-tests/caught_exception_2.txt +++ b/v3/tests/backend-tests/caught_exception_2.txt @@ -2,11 +2,11 @@ try: x = 1 / 0 except: - print "DIVIDE BY ZERO" + print("DIVIDE BY ZERO") # uncaught: -print y +print(y) -print "should not reach here" +print("should not reach here") diff --git a/v3/tests/backend-tests/class_test.golden b/v3/tests/backend-tests/class_test.golden index 882d13ef9..b0c902883 100644 --- a/v3/tests/backend-tests/class_test.golden +++ b/v3/tests/backend-tests/class_test.golden @@ -1,5 +1,5 @@ { - "code": "class Point:\n def __init__(self, x, y):\n self.x = x\n self.y = y\n \n def __str__(self):\n return \"(%d, %d)\" % (self.x, self.y)\n\np = Point(1, 2)\nprint p\np2 = Point(3, -4)\nprint p2\n\n", + "code": "class Point:\n def __init__(self, x, y):\n self.x = x\n self.y = y\n \n def __str__(self):\n return \"(%d, %d)\" % (self.x, self.y)\n\np = Point(1, 2)\nprint(p)\np2 = Point(3, -4)\nprint(p2)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/class_test.txt b/v3/tests/backend-tests/class_test.txt index f5046f056..77d89420a 100644 --- a/v3/tests/backend-tests/class_test.txt +++ b/v3/tests/backend-tests/class_test.txt @@ -7,7 +7,7 @@ class Point: return "(%d, %d)" % (self.x, self.y) p = Point(1, 2) -print p +print(p) p2 = Point(3, -4) -print p2 +print(p2) diff --git a/v3/tests/backend-tests/class_test_2.golden b/v3/tests/backend-tests/class_test_2.golden index ae2a4ddd0..0ff698aca 100644 --- a/v3/tests/backend-tests/class_test_2.golden +++ b/v3/tests/backend-tests/class_test_2.golden @@ -1,5 +1,5 @@ { - "code": "class Outer():\n pass\n\no = Outer()\no.a = 5\no.b = \"Hi\"\nprint o\n\n", + "code": "class Outer():\n pass\n\no = Outer()\no.a = 5\no.b = \"Hi\"\nprint(o)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/class_test_2.txt b/v3/tests/backend-tests/class_test_2.txt index 47a9e13bb..c6532c1b1 100644 --- a/v3/tests/backend-tests/class_test_2.txt +++ b/v3/tests/backend-tests/class_test_2.txt @@ -4,5 +4,5 @@ class Outer(): o = Outer() o.a = 5 o.b = "Hi" -print o +print(o) diff --git a/v3/tests/backend-tests/class_test_3.golden b/v3/tests/backend-tests/class_test_3.golden index f351abf52..585a2db68 100644 --- a/v3/tests/backend-tests/class_test_3.golden +++ b/v3/tests/backend-tests/class_test_3.golden @@ -1,5 +1,5 @@ { - "code": "class Staff601:\n course = '6.01'\n building = 34\n room = 501\n\npat = Staff601()\nprint pat.course\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint pat.building\npat.building = 32\nprint pat.building\n\n", + "code": "class Staff601:\n course = '6.01'\n building = 34\n room = 501\n\npat = Staff601()\nprint(pat.course)\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint(pat.building)\npat.building = 32\nprint(pat.building)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/class_test_3.txt b/v3/tests/backend-tests/class_test_3.txt index a4a8068a0..55c604882 100644 --- a/v3/tests/backend-tests/class_test_3.txt +++ b/v3/tests/backend-tests/class_test_3.txt @@ -4,13 +4,13 @@ class Staff601: room = 501 pat = Staff601() -print pat.course +print(pat.course) pat.name = 'Pat' pat.age = 60 pat.role = 'Professor' -print pat.building +print(pat.building) pat.building = 32 -print pat.building +print(pat.building) diff --git a/v3/tests/backend-tests/dict_test.golden b/v3/tests/backend-tests/dict_test.golden index 7f6d1c5a5..0c05ae2da 100644 --- a/v3/tests/backend-tests/dict_test.golden +++ b/v3/tests/backend-tests/dict_test.golden @@ -1,5 +1,5 @@ { - "code": "x = {1 : 2}\nx[('tup', 'le')] = set([1, 2, 3])\n\ndef foo():\n local_x = {1 : 2}\n local_y = {}\n local_y[('tup', 'le')] = set([1, 2, 3])\n print \"hello\", local_y.values()\n\nfoo()\n", + "code": "x = {1 : 2}\nx[('tup', 'le')] = set([1, 2, 3])\n\ndef foo():\n local_x = {1 : 2}\n local_y = {}\n local_y[('tup', 'le')] = set([1, 2, 3])\n print(\"hello\", list(local_y.values()))\n\nfoo()\n", "trace": [ { "ordered_globals": [], @@ -562,7 +562,7 @@ "x", "foo" ], - "stdout": "hello [set([1, 2, 3])]\n", + "stdout": "('hello', [set([1, 2, 3])])\n", "func_name": "foo", "stack_to_render": [ { @@ -675,7 +675,7 @@ "x", "foo" ], - "stdout": "hello [set([1, 2, 3])]\n", + "stdout": "('hello', [set([1, 2, 3])])\n", "func_name": "", "stack_to_render": [], "globals": { diff --git a/v3/tests/backend-tests/dict_test.txt b/v3/tests/backend-tests/dict_test.txt index 41b541c1c..15294a473 100644 --- a/v3/tests/backend-tests/dict_test.txt +++ b/v3/tests/backend-tests/dict_test.txt @@ -5,6 +5,6 @@ def foo(): local_x = {1 : 2} local_y = {} local_y[('tup', 'le')] = set([1, 2, 3]) - print "hello", local_y.values() + print("hello", list(local_y.values())) foo() diff --git a/v3/tests/backend-tests/exec_test.golden b/v3/tests/backend-tests/exec_test.golden index 07b7269cf..38df5b0e7 100644 --- a/v3/tests/backend-tests/exec_test.golden +++ b/v3/tests/backend-tests/exec_test.golden @@ -1,5 +1,5 @@ { - "code": "exec \"import os; os.system('echo security breach')\"\n", + "code": "exec(\"import os; os.system('echo security breach')\")\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/exec_test.txt b/v3/tests/backend-tests/exec_test.txt index 0d44e327d..7c8c740c7 100644 --- a/v3/tests/backend-tests/exec_test.txt +++ b/v3/tests/backend-tests/exec_test.txt @@ -1 +1 @@ -exec "import os; os.system('echo security breach')" +exec("import os; os.system('echo security breach')") diff --git a/v3/tests/backend-tests/generator_use_test.golden b/v3/tests/backend-tests/generator_use_test.golden index 3639984d7..34e21934f 100644 --- a/v3/tests/backend-tests/generator_use_test.golden +++ b/v3/tests/backend-tests/generator_use_test.golden @@ -1,5 +1,5 @@ { - "code": "def gen_odds():\n x = 1\n while True:\n yield x\n x += 2\n\nfor i in gen_odds():\n print i\n\n", + "code": "def gen_odds():\n x = 1\n while True:\n yield x\n x += 2\n\nfor i in gen_odds():\n print(i)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/generator_use_test.txt b/v3/tests/backend-tests/generator_use_test.txt index 0577e1434..d4aee1010 100644 --- a/v3/tests/backend-tests/generator_use_test.txt +++ b/v3/tests/backend-tests/generator_use_test.txt @@ -5,5 +5,5 @@ def gen_odds(): x += 2 for i in gen_odds(): - print i + print(i) diff --git a/v3/tests/backend-tests/infinite_loop.golden b/v3/tests/backend-tests/infinite_loop.golden index 1a9abd1e8..217546644 100644 --- a/v3/tests/backend-tests/infinite_loop.golden +++ b/v3/tests/backend-tests/infinite_loop.golden @@ -1,5 +1,5 @@ { - "code": "# Fibonacci!!!\n\narr = [1, 1]\n\nprint arr[0]\n\nwhile True:\n print arr[-1]\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n\n", + "code": "# Fibonacci!!!\n\narr = [1, 1]\n\nprint(arr[0])\n\nwhile True:\n print(arr[-1])\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/infinite_loop.txt b/v3/tests/backend-tests/infinite_loop.txt index bce78d1d0..b480914bb 100644 --- a/v3/tests/backend-tests/infinite_loop.txt +++ b/v3/tests/backend-tests/infinite_loop.txt @@ -2,10 +2,10 @@ arr = [1, 1] -print arr[0] +print(arr[0]) while True: - print arr[-1] + print(arr[-1]) tmp = sum(arr) arr.append(tmp) del arr[0] diff --git a/v3/tests/backend-tests/infinite_loop_one_liner.golden b/v3/tests/backend-tests/infinite_loop_one_liner.golden index 23334dcc2..e28f84304 100644 --- a/v3/tests/backend-tests/infinite_loop_one_liner.golden +++ b/v3/tests/backend-tests/infinite_loop_one_liner.golden @@ -1,5 +1,5 @@ { - "code": "while 1:\n print \"hahahaha\"\n", + "code": "while 1:\n print(\"hahahaha\")\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/infinite_loop_one_liner.txt b/v3/tests/backend-tests/infinite_loop_one_liner.txt index e4c0bac1c..6bc80597f 100644 --- a/v3/tests/backend-tests/infinite_loop_one_liner.txt +++ b/v3/tests/backend-tests/infinite_loop_one_liner.txt @@ -1,2 +1,2 @@ while 1: - print "hahahaha" + print("hahahaha") diff --git a/v3/tests/backend-tests/lambda_1.golden b/v3/tests/backend-tests/lambda_1.golden index 329be1475..947c90d9d 100644 --- a/v3/tests/backend-tests/lambda_1.golden +++ b/v3/tests/backend-tests/lambda_1.golden @@ -1,5 +1,5 @@ { - "code": "def summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint sumsquares(1, 5)\n", + "code": "def summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint(sumsquares(1, 5))\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/lambda_1.txt b/v3/tests/backend-tests/lambda_1.txt index 90504b5ec..da6d717e0 100644 --- a/v3/tests/backend-tests/lambda_1.txt +++ b/v3/tests/backend-tests/lambda_1.txt @@ -9,4 +9,4 @@ def summation(low, high, f, next): def sumsquares(low, high): return summation(low, high, lambda x: x**2, lambda x: x+1) -print sumsquares(1, 5) +print(sumsquares(1, 5)) diff --git a/v3/tests/backend-tests/ling-scheme-3.golden b/v3/tests/backend-tests/ling-scheme-3.golden index be3b46e8e..d9ef80599 100644 --- a/v3/tests/backend-tests/ling-scheme-3.golden +++ b/v3/tests/backend-tests/ling-scheme-3.golden @@ -1,5 +1,5 @@ { - "code": "def map(f, xs):\n if xs == []:\n return []\n else:\n return [f(xs[0])] + map(f, xs[1:])\n\ndef append(xs, ys):\n if xs == []:\n return ys\n else:\n return [xs[0]] + append(xs[1:], ys)\n\ndef pairs(xs):\n if xs == []:\n return []\n elif xs[1:] == []:\n return []\n else:\n return append(map(lambda x: [xs[0], x], xs[1:]), pairs(xs[1:]))\n\nresult = pairs([1, 2, 3])\n", + "code": "def map(f, xs):\n if xs == []:\n return []\n else:\n return [f(xs[0])] + list(map(f, xs[1:]))\n\ndef append(xs, ys):\n if xs == []:\n return ys\n else:\n return [xs[0]] + append(xs[1:], ys)\n\ndef pairs(xs):\n if xs == []:\n return []\n elif xs[1:] == []:\n return []\n else:\n return append(map(lambda x: [xs[0], x], xs[1:]), pairs(xs[1:]))\n\nresult = pairs([1, 2, 3])\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/ling-scheme-3.txt b/v3/tests/backend-tests/ling-scheme-3.txt index 8ae512cdb..14ee800e8 100644 --- a/v3/tests/backend-tests/ling-scheme-3.txt +++ b/v3/tests/backend-tests/ling-scheme-3.txt @@ -2,7 +2,7 @@ def map(f, xs): if xs == []: return [] else: - return [f(xs[0])] + map(f, xs[1:]) + return [f(xs[0])] + list(map(f, xs[1:])) def append(xs, ys): if xs == []: diff --git a/v3/tests/backend-tests/list_dict_test.golden b/v3/tests/backend-tests/list_dict_test.golden index bd24d36df..4baefb4f5 100644 --- a/v3/tests/backend-tests/list_dict_test.golden +++ b/v3/tests/backend-tests/list_dict_test.golden @@ -1,5 +1,5 @@ { - "code": "x = {}\nl = ['hello', \"world\", 'goodbye']\nfor (i, e) in enumerate(l):\n x[e] = i\nprint x\n\n", + "code": "x = {}\nl = ['hello', \"world\", 'goodbye']\nfor (i, e) in enumerate(l):\n x[e] = i\nprint(x)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/list_dict_test.txt b/v3/tests/backend-tests/list_dict_test.txt index 1d8179f6c..b44628526 100644 --- a/v3/tests/backend-tests/list_dict_test.txt +++ b/v3/tests/backend-tests/list_dict_test.txt @@ -2,5 +2,5 @@ x = {} l = ['hello', "world", 'goodbye'] for (i, e) in enumerate(l): x[e] = i -print x +print(x) diff --git a/v3/tests/backend-tests/namedtuple.golden b/v3/tests/backend-tests/namedtuple.golden index eaf6c5775..4738235c9 100644 --- a/v3/tests/backend-tests/namedtuple.golden +++ b/v3/tests/backend-tests/namedtuple.golden @@ -27,7 +27,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ] }, @@ -55,7 +55,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -175,7 +175,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -245,7 +245,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -365,7 +365,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -407,7 +407,27 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ] }, "line": 6, @@ -444,7 +464,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -564,7 +584,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -606,11 +626,51 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ] }, "line": 7, @@ -652,7 +712,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -772,7 +832,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -814,15 +874,75 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ] }, "line": 8, @@ -869,7 +989,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -989,7 +1109,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -1031,19 +1151,99 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ] }, "line": 9, @@ -1095,7 +1295,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -1215,7 +1415,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -1257,23 +1457,123 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ] }, "line": 10, @@ -1330,7 +1630,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -1450,7 +1750,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -1492,27 +1792,147 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ] }, "line": 11, @@ -1574,7 +1994,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -1694,7 +2114,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -1736,31 +2156,171 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ] }, "line": 12, @@ -1827,7 +2387,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -1947,7 +2507,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -1989,35 +2549,195 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ] }, "line": 13, @@ -2089,7 +2809,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -2209,7 +2929,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -2251,39 +2971,219 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ] }, "line": 14, @@ -2360,7 +3260,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -2480,7 +3380,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -2522,43 +3422,243 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ] }, "line": 15, @@ -2640,7 +3740,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -2760,7 +3860,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -2802,47 +3902,267 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ] }, "line": 16, @@ -2929,7 +4249,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -3049,7 +4369,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -3091,51 +4411,291 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ], "27": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] ] }, "line": 17, @@ -3227,7 +4787,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -3347,7 +4907,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -3389,55 +4949,315 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ], "27": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] ], "28": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] ] }, "line": 18, @@ -3534,7 +5354,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -3654,7 +5474,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -3696,59 +5516,339 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ], "27": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] ], "28": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] ], "29": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] ] }, "line": 19, @@ -3850,7 +5950,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -3970,7 +6070,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -4012,63 +6112,363 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ], "27": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] ], "28": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] ], "29": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] ], "30": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] ] }, "line": 20, @@ -4175,7 +6575,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -4295,7 +6695,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -4337,67 +6737,387 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ], "27": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] ], "28": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] ], "29": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] ], "30": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] ], "31": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] ] }, "line": 21, @@ -4509,7 +7229,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -4629,7 +7349,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -4671,71 +7391,411 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ], "27": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] ], "28": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] ], "29": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] ], "30": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] ], "31": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] ], "32": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Striped Bass" + ], + [ + "name", + "Spago" + ], + [ + "phone", + "333-2222" + ], + [ + "price", + 24.500 + ] ] }, "line": 22, @@ -4852,7 +7912,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -4972,7 +8032,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -5014,75 +8074,435 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ], "27": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] ], "28": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] ], "29": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] ], "30": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] ], "31": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] ], "32": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Striped Bass" + ], + [ + "name", + "Spago" + ], + [ + "phone", + "333-2222" + ], + [ + "price", + 24.500 + ] ], "33": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Seafood" + ], + [ + "dish", + "Cedar Plank Salmon" + ], + [ + "name", + "Sriped Bass" + ], + [ + "phone", + "333-2233" + ], + [ + "price", + 21.500 + ] ] }, "line": 23, @@ -5204,7 +8624,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -5324,7 +8744,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -5366,79 +8786,459 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ], "27": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] ], "28": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] ], "29": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] ], "30": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] ], "31": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] ], "32": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Striped Bass" + ], + [ + "name", + "Spago" + ], + [ + "phone", + "333-2222" + ], + [ + "price", + 24.500 + ] ], "33": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Seafood" + ], + [ + "dish", + "Cedar Plank Salmon" + ], + [ + "name", + "Sriped Bass" + ], + [ + "phone", + "333-2233" + ], + [ + "price", + 21.500 + ] ], "34": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Egg Foo Young" + ], + [ + "name", + "Golden Pagoda" + ], + [ + "phone", + "232-3232" + ], + [ + "price", + 8.500 + ] ] }, "line": 24, @@ -5565,7 +9365,7 @@ "heap": { "1": [ "FUNCTION", - "namedtuple(typename, field_names, verbose)", + "namedtuple(typename, field_names, verbose, rename)", null ], "2": [ @@ -5685,7 +9485,7 @@ ], "7": [ "FUNCTION", - "_asdict(t)", + "_asdict(self)", null ], "8": [ @@ -5727,83 +9527,483 @@ ], "16": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] ], "17": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] ], "18": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] ], "19": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] ], "20": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] ], "21": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] ], "22": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] ], "23": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] ], "24": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] ], "25": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] ], "26": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] ], "27": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] ], "28": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] ], "29": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] ], "30": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] ], "31": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] ], "32": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Striped Bass" + ], + [ + "name", + "Spago" + ], + [ + "phone", + "333-2222" + ], + [ + "price", + 24.500 + ] ], "33": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Seafood" + ], + [ + "dish", + "Cedar Plank Salmon" + ], + [ + "name", + "Sriped Bass" + ], + [ + "phone", + "333-2233" + ], + [ + "price", + 21.500 + ] ], "34": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Egg Foo Young" + ], + [ + "name", + "Golden Pagoda" + ], + [ + "phone", + "232-3232" + ], + [ + "price", + 8.500 + ] ], "35": [ "INSTANCE", - "Restaurant" + "Restaurant", + [ + "cuisine", + "Delicatessen" + ], + [ + "dish", + "Pastrami Sandwich" + ], + [ + "name", + "Langer's" + ], + [ + "phone", + "333-2223" + ], + [ + "price", + 11.500 + ] ] }, "line": 24, diff --git a/v3/tests/backend-tests/newstyle_class.golden b/v3/tests/backend-tests/newstyle_class.golden index f428115c5..06e9a6ac5 100644 --- a/v3/tests/backend-tests/newstyle_class.golden +++ b/v3/tests/backend-tests/newstyle_class.golden @@ -1,5 +1,5 @@ { - "code": "class A(object):\n bla = \"A\"\n def __init__(self):\n self.blb = \"B\"\n\n def x(self):\n self.bla = self.blb\n\na = A()\n\na.x()\n\nprint a.bla\nprint A.bla\n\n", + "code": "class A(object):\n bla = \"A\"\n def __init__(self):\n self.blb = \"B\"\n\n def x(self):\n self.bla = self.blb\n\na = A()\n\na.x()\n\nprint(a.bla)\nprint(A.bla)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/newstyle_class.txt b/v3/tests/backend-tests/newstyle_class.txt index 315cda7e3..bc5e5551a 100644 --- a/v3/tests/backend-tests/newstyle_class.txt +++ b/v3/tests/backend-tests/newstyle_class.txt @@ -10,6 +10,6 @@ a = A() a.x() -print a.bla -print A.bla +print(a.bla) +print(A.bla) diff --git a/v3/tests/backend-tests/one_func.golden b/v3/tests/backend-tests/one_func.golden index fc82f73f5..ecd811f5c 100644 --- a/v3/tests/backend-tests/one_func.golden +++ b/v3/tests/backend-tests/one_func.golden @@ -1,5 +1,5 @@ { - "code": "def add(a, b, c):\n d = a + b\n return c + d\n\nx = 5\ny = 10\nz = x * y\nprint add(x, y, z)\n", + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\nx = 5\ny = 10\nz = x * y\nprint(add(x, y, z))\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/one_func.txt b/v3/tests/backend-tests/one_func.txt index ce141aa36..9ade23636 100644 --- a/v3/tests/backend-tests/one_func.txt +++ b/v3/tests/backend-tests/one_func.txt @@ -5,4 +5,4 @@ def add(a, b, c): x = 5 y = 10 z = x * y -print add(x, y, z) +print(add(x, y, z)) diff --git a/v3/tests/backend-tests/open_error.golden b/v3/tests/backend-tests/open_error.golden index c9df6d16a..7f343f9c8 100644 --- a/v3/tests/backend-tests/open_error.golden +++ b/v3/tests/backend-tests/open_error.golden @@ -1,5 +1,5 @@ { - "code": "for line in open(\"/etc/passwd\"):\n print line\n\n", + "code": "for line in open(\"/etc/passwd\"):\n print(line)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/open_error.txt b/v3/tests/backend-tests/open_error.txt index 5f2bee2e7..a80454764 100644 --- a/v3/tests/backend-tests/open_error.txt +++ b/v3/tests/backend-tests/open_error.txt @@ -1,3 +1,3 @@ for line in open("/etc/passwd"): - print line + print(line) diff --git a/v3/tests/backend-tests/runtime_error.golden b/v3/tests/backend-tests/runtime_error.golden index 59761ea5d..c26590156 100644 --- a/v3/tests/backend-tests/runtime_error.golden +++ b/v3/tests/backend-tests/runtime_error.golden @@ -1,5 +1,5 @@ { - "code": "x = 5\nfor i in range(10):\n if i == x:\n z = x + y # ERROR!\n else:\n z = i\n print z\n\n", + "code": "x = 5\nfor i in range(10):\n if i == x:\n z = x + y # ERROR!\n else:\n z = i\n print(z)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/runtime_error.txt b/v3/tests/backend-tests/runtime_error.txt index 57124a66e..d8be5bf4a 100644 --- a/v3/tests/backend-tests/runtime_error.txt +++ b/v3/tests/backend-tests/runtime_error.txt @@ -4,5 +4,5 @@ for i in range(10): z = x + y # ERROR! else: z = i - print z + print(z) diff --git a/v3/tests/backend-tests/simple.golden b/v3/tests/backend-tests/simple.golden index 2fc4b4ab8..c3f69caa6 100644 --- a/v3/tests/backend-tests/simple.golden +++ b/v3/tests/backend-tests/simple.golden @@ -1,5 +1,5 @@ { - "code": "x = 5\ny = 10\nz = x * y\nprint \"HELLO WORLD\"\nfor i in range(10):\n print z * i\n\n", + "code": "x = 5\ny = 10\nz = x * y\nprint(\"HELLO WORLD\")\nfor i in range(10):\n print(z * i)\n\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/simple.txt b/v3/tests/backend-tests/simple.txt index 12b847786..8b7c08a7d 100644 --- a/v3/tests/backend-tests/simple.txt +++ b/v3/tests/backend-tests/simple.txt @@ -1,7 +1,7 @@ x = 5 y = 10 z = x * y -print "HELLO WORLD" +print("HELLO WORLD") for i in range(10): - print z * i + print(z * i) diff --git a/v3/tests/backend-tests/two_funcs.golden b/v3/tests/backend-tests/two_funcs.golden index 9d15f9734..9a2a15184 100644 --- a/v3/tests/backend-tests/two_funcs.golden +++ b/v3/tests/backend-tests/two_funcs.golden @@ -1,5 +1,5 @@ { - "code": "def add(a, b, c):\n d = a + b\n return c + d\n\ndef double_add(a, b, c):\n x = add(a, b, c)\n y = add(a, b, c)\n return x + y\n\nx = 5\ny = 10\nz = x * y\nprint add(x, y, z)\nprint double_add(x, y, z)\n", + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\ndef double_add(a, b, c):\n x = add(a, b, c)\n y = add(a, b, c)\n return x + y\n\nx = 5\ny = 10\nz = x * y\nprint(add(x, y, z))\nprint(double_add(x, y, z))\n", "trace": [ { "ordered_globals": [], diff --git a/v3/tests/backend-tests/two_funcs.txt b/v3/tests/backend-tests/two_funcs.txt index 4a07fd3b9..32959fbd6 100644 --- a/v3/tests/backend-tests/two_funcs.txt +++ b/v3/tests/backend-tests/two_funcs.txt @@ -10,5 +10,5 @@ def double_add(a, b, c): x = 5 y = 10 z = x * y -print add(x, y, z) -print double_add(x, y, z) +print(add(x, y, z)) +print(double_add(x, y, z)) From cca9ea38db87d20b10325d15c4ecc6c27727a644 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 22 Sep 2012 23:23:06 -0700 Subject: [PATCH 429/502] added *.golden_py3 files for Python 3 tests --- .gitignore | 2 + v3/example-code/aliasing.golden_py3 | 2067 +++ v3/example-code/aliasing/aliasing1.golden_py3 | 98 + v3/example-code/aliasing/aliasing2.golden_py3 | 90 + v3/example-code/aliasing/aliasing3.golden_py3 | 335 + v3/example-code/aliasing/aliasing4.golden_py3 | 67 + v3/example-code/aliasing/aliasing5.golden_py3 | 455 + v3/example-code/aliasing/aliasing6.golden_py3 | 327 + v3/example-code/aliasing/aliasing7.golden_py3 | 248 + v3/example-code/aliasing/aliasing8.golden_py3 | 229 + v3/example-code/closures/closure1.golden_py3 | 567 + v3/example-code/closures/closure2.golden_py3 | 1764 +++ v3/example-code/closures/closure3.golden_py3 | 1400 ++ v3/example-code/closures/closure4.golden_py3 | 1457 ++ v3/example-code/closures/closure5.golden_py3 | 7684 ++++++++++ .../closures/lambda-param.golden_py3 | 758 + v3/example-code/decorators.golden_py3 | 1892 +++ v3/example-code/fact.golden_py3 | 1909 +++ v3/example-code/fib.golden_py3 | 7560 ++++++++++ v3/example-code/filter.golden_py3 | 1505 ++ v3/example-code/for-else.golden_py3 | 1475 ++ v3/example-code/gen_primes.golden_py3 | 12512 ++++++++++++++++ v3/example-code/genexpr.golden_py3 | 2170 +++ v3/example-code/happy.golden_py3 | 952 ++ v3/example-code/ins_sort.golden_py3 | 3538 +++++ v3/example-code/linked-lists/ll1.golden_py3 | 1977 +++ v3/example-code/linked-lists/ll2.golden_py3 | 9885 ++++++++++++ v3/example-code/list-comp.golden_py3 | 926 ++ v3/example-code/map.golden_py3 | 6953 +++++++++ v3/example-code/memo_fib.golden_py3 | 10715 +++++++++++++ v3/example-code/nonlocal.golden_py3 | 667 + v3/example-code/oop_1.golden_py3 | 2428 +++ v3/example-code/oop_2.golden_py3 | 2258 +++ v3/example-code/oop_inherit.golden_py3 | 3159 ++++ v3/example-code/oop_small.golden_py3 | 2087 +++ v3/example-code/py_tutorial.golden_py3 | 4754 ++++++ v3/example-code/sqrt.golden_py3 | 8929 +++++++++++ v3/example-code/strtok.golden_py3 | 258 + v3/example-code/sum-cubes.golden_py3 | 1693 +++ v3/example-code/sum-list.golden_py3 | 3466 +++++ v3/example-code/sum.golden_py3 | 10163 +++++++++++++ v3/example-code/towers_of_hanoi.golden_py3 | 10996 ++++++++++++++ v3/example-code/varargs.golden_py3 | 1015 ++ v3/example-code/wentworth_gcd.golden_py3 | 3798 +++++ v3/example-code/wentworth_sumList.golden_py3 | 4520 ++++++ .../wentworth_try_finally.golden_py3 | 2823 ++++ .../caught_exception_1.golden_py3 | 66 + .../caught_exception_2.golden_py3 | 77 + v3/tests/backend-tests/circ_ref.golden_py3 | 65 + v3/tests/backend-tests/circ_ref_2.golden_py3 | 116 + .../backend-tests/circ_ref_fake.golden_py3 | 168 + v3/tests/backend-tests/class_test.golden_py3 | 2671 ++++ .../backend-tests/class_test_2.golden_py3 | 297 + .../backend-tests/class_test_3.golden_py3 | 673 + .../closure-shadow-same-name.golden_py3 | 505 + v3/tests/backend-tests/data_test.golden_py3 | 213 + v3/tests/backend-tests/dict_error.golden_py3 | 207 + v3/tests/backend-tests/dict_test.golden_py3 | 730 + v3/tests/backend-tests/exec_test.golden_py3 | 26 + .../backend-tests/func_exception.golden_py3 | 270 + .../backend-tests/generator_test.golden_py3 | 100 + .../generator_use_test.golden_py3 | 10772 +++++++++++++ .../backend-tests/import_error.golden_py3 | 29 + .../backend-tests/infinite_loop.golden_py3 | 7560 ++++++++++ .../infinite_loop_one_liner.golden_py3 | 3009 ++++ .../backend-tests/john-compose.golden_py3 | 1262 ++ .../backend-tests/john-import-test.golden_py3 | 282 + v3/tests/backend-tests/lambda_1.golden_py3 | 5493 +++++++ .../backend-tests/ling-scheme-1.golden_py3 | 4020 +++++ .../backend-tests/ling-scheme-2.golden_py3 | 3788 +++++ .../backend-tests/ling-scheme-3.golden_py3 | 8612 +++++++++++ .../backend-tests/list_dict_test.golden_py3 | 416 + v3/tests/backend-tests/list_test.golden_py3 | 48 + v3/tests/backend-tests/namedtuple.golden_py3 | 10013 +++++++++++++ .../backend-tests/newstyle_class.golden_py3 | 1631 ++ v3/tests/backend-tests/one_func.golden_py3 | 350 + v3/tests/backend-tests/open_error.golden_py3 | 26 + .../backend-tests/parent-finding-1.golden_py3 | 483 + .../backend-tests/parent-finding-2.golden_py3 | 957 ++ v3/tests/backend-tests/parse_error.golden_py3 | 11 + .../backend-tests/parse_error_2.golden_py3 | 11 + .../backend-tests/parse_error_3.golden_py3 | 11 + v3/tests/backend-tests/pie-test.golden_py3 | 91 + v3/tests/backend-tests/py-modules.golden_py3 | 132 + .../backend-tests/runtime_error.golden_py3 | 440 + v3/tests/backend-tests/set_test.golden_py3 | 151 + v3/tests/backend-tests/simple.golden_py3 | 501 + v3/tests/backend-tests/three_lists.golden_py3 | 632 + v3/tests/backend-tests/tuple_test.golden_py3 | 72 + v3/tests/backend-tests/two_funcs.golden_py3 | 1453 ++ v3/tests/backend-tests/varargs.golden_py3 | 267 + 91 files changed, 213238 insertions(+) create mode 100644 v3/example-code/aliasing.golden_py3 create mode 100644 v3/example-code/aliasing/aliasing1.golden_py3 create mode 100644 v3/example-code/aliasing/aliasing2.golden_py3 create mode 100644 v3/example-code/aliasing/aliasing3.golden_py3 create mode 100644 v3/example-code/aliasing/aliasing4.golden_py3 create mode 100644 v3/example-code/aliasing/aliasing5.golden_py3 create mode 100644 v3/example-code/aliasing/aliasing6.golden_py3 create mode 100644 v3/example-code/aliasing/aliasing7.golden_py3 create mode 100644 v3/example-code/aliasing/aliasing8.golden_py3 create mode 100644 v3/example-code/closures/closure1.golden_py3 create mode 100644 v3/example-code/closures/closure2.golden_py3 create mode 100644 v3/example-code/closures/closure3.golden_py3 create mode 100644 v3/example-code/closures/closure4.golden_py3 create mode 100644 v3/example-code/closures/closure5.golden_py3 create mode 100644 v3/example-code/closures/lambda-param.golden_py3 create mode 100644 v3/example-code/decorators.golden_py3 create mode 100644 v3/example-code/fact.golden_py3 create mode 100644 v3/example-code/fib.golden_py3 create mode 100644 v3/example-code/filter.golden_py3 create mode 100644 v3/example-code/for-else.golden_py3 create mode 100644 v3/example-code/gen_primes.golden_py3 create mode 100644 v3/example-code/genexpr.golden_py3 create mode 100644 v3/example-code/happy.golden_py3 create mode 100644 v3/example-code/ins_sort.golden_py3 create mode 100644 v3/example-code/linked-lists/ll1.golden_py3 create mode 100644 v3/example-code/linked-lists/ll2.golden_py3 create mode 100644 v3/example-code/list-comp.golden_py3 create mode 100644 v3/example-code/map.golden_py3 create mode 100644 v3/example-code/memo_fib.golden_py3 create mode 100644 v3/example-code/nonlocal.golden_py3 create mode 100644 v3/example-code/oop_1.golden_py3 create mode 100644 v3/example-code/oop_2.golden_py3 create mode 100644 v3/example-code/oop_inherit.golden_py3 create mode 100644 v3/example-code/oop_small.golden_py3 create mode 100644 v3/example-code/py_tutorial.golden_py3 create mode 100644 v3/example-code/sqrt.golden_py3 create mode 100644 v3/example-code/strtok.golden_py3 create mode 100644 v3/example-code/sum-cubes.golden_py3 create mode 100644 v3/example-code/sum-list.golden_py3 create mode 100644 v3/example-code/sum.golden_py3 create mode 100644 v3/example-code/towers_of_hanoi.golden_py3 create mode 100644 v3/example-code/varargs.golden_py3 create mode 100644 v3/example-code/wentworth_gcd.golden_py3 create mode 100644 v3/example-code/wentworth_sumList.golden_py3 create mode 100644 v3/example-code/wentworth_try_finally.golden_py3 create mode 100644 v3/tests/backend-tests/caught_exception_1.golden_py3 create mode 100644 v3/tests/backend-tests/caught_exception_2.golden_py3 create mode 100644 v3/tests/backend-tests/circ_ref.golden_py3 create mode 100644 v3/tests/backend-tests/circ_ref_2.golden_py3 create mode 100644 v3/tests/backend-tests/circ_ref_fake.golden_py3 create mode 100644 v3/tests/backend-tests/class_test.golden_py3 create mode 100644 v3/tests/backend-tests/class_test_2.golden_py3 create mode 100644 v3/tests/backend-tests/class_test_3.golden_py3 create mode 100644 v3/tests/backend-tests/closure-shadow-same-name.golden_py3 create mode 100644 v3/tests/backend-tests/data_test.golden_py3 create mode 100644 v3/tests/backend-tests/dict_error.golden_py3 create mode 100644 v3/tests/backend-tests/dict_test.golden_py3 create mode 100644 v3/tests/backend-tests/exec_test.golden_py3 create mode 100644 v3/tests/backend-tests/func_exception.golden_py3 create mode 100644 v3/tests/backend-tests/generator_test.golden_py3 create mode 100644 v3/tests/backend-tests/generator_use_test.golden_py3 create mode 100644 v3/tests/backend-tests/import_error.golden_py3 create mode 100644 v3/tests/backend-tests/infinite_loop.golden_py3 create mode 100644 v3/tests/backend-tests/infinite_loop_one_liner.golden_py3 create mode 100644 v3/tests/backend-tests/john-compose.golden_py3 create mode 100644 v3/tests/backend-tests/john-import-test.golden_py3 create mode 100644 v3/tests/backend-tests/lambda_1.golden_py3 create mode 100644 v3/tests/backend-tests/ling-scheme-1.golden_py3 create mode 100644 v3/tests/backend-tests/ling-scheme-2.golden_py3 create mode 100644 v3/tests/backend-tests/ling-scheme-3.golden_py3 create mode 100644 v3/tests/backend-tests/list_dict_test.golden_py3 create mode 100644 v3/tests/backend-tests/list_test.golden_py3 create mode 100644 v3/tests/backend-tests/namedtuple.golden_py3 create mode 100644 v3/tests/backend-tests/newstyle_class.golden_py3 create mode 100644 v3/tests/backend-tests/one_func.golden_py3 create mode 100644 v3/tests/backend-tests/open_error.golden_py3 create mode 100644 v3/tests/backend-tests/parent-finding-1.golden_py3 create mode 100644 v3/tests/backend-tests/parent-finding-2.golden_py3 create mode 100644 v3/tests/backend-tests/parse_error.golden_py3 create mode 100644 v3/tests/backend-tests/parse_error_2.golden_py3 create mode 100644 v3/tests/backend-tests/parse_error_3.golden_py3 create mode 100644 v3/tests/backend-tests/pie-test.golden_py3 create mode 100644 v3/tests/backend-tests/py-modules.golden_py3 create mode 100644 v3/tests/backend-tests/runtime_error.golden_py3 create mode 100644 v3/tests/backend-tests/set_test.golden_py3 create mode 100644 v3/tests/backend-tests/simple.golden_py3 create mode 100644 v3/tests/backend-tests/three_lists.golden_py3 create mode 100644 v3/tests/backend-tests/tuple_test.golden_py3 create mode 100644 v3/tests/backend-tests/two_funcs.golden_py3 create mode 100644 v3/tests/backend-tests/varargs.golden_py3 diff --git a/.gitignore b/.gitignore index 6f3ae28da..5182c9ada 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.out +*.out_py3 *.pyc +*.pyo diff --git a/v3/example-code/aliasing.golden_py3 b/v3/example-code/aliasing.golden_py3 new file mode 100644 index 000000000..f56be9792 --- /dev/null +++ b/v3/example-code/aliasing.golden_py3 @@ -0,0 +1,2067 @@ +{ + "code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print(myLst)\n\nfoo(x)\nfoo(z)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 2 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ], + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "LIST", + 4, + 5, + 6 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5 + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 21, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "myLst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "myLst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f4", + "ordered_varnames": [ + "myLst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 22, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "lst": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f3", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "foo": [ + "REF", + 4 + ], + "bar": [ + "REF", + 5 + ], + "z": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "foo", + "bar" + ], + "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": "hello", + "x": [ + "REF", + 3 + ], + "z": [ + "REF", + 1 + ], + "bar": [ + "REF", + 5 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + "hello" + ], + "3": [ + "LIST", + 1, + 2, + 3, + 4, + 5, + 6, + 7, + "hello" + ], + "4": [ + "FUNCTION", + "foo(lst)", + null + ], + "5": [ + "FUNCTION", + "bar(myLst)", + null + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing1.golden_py3 b/v3/example-code/aliasing/aliasing1.golden_py3 new file mode 100644 index 000000000..00383dd48 --- /dev/null +++ b/v3/example-code/aliasing/aliasing1.golden_py3 @@ -0,0 +1,98 @@ +{ + "code": "a = (1, (2, (3, None)))\nb = a[1]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing2.golden_py3 b/v3/example-code/aliasing/aliasing2.golden_py3 new file mode 100644 index 000000000..ab6c203f4 --- /dev/null +++ b/v3/example-code/aliasing/aliasing2.golden_py3 @@ -0,0 +1,90 @@ +{ + "code": "c = (1, (2, None))\nd = (1, c)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "c": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + null + ], + "3": [ + "TUPLE", + 1, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing3.golden_py3 b/v3/example-code/aliasing/aliasing3.golden_py3 new file mode 100644 index 000000000..a0bded930 --- /dev/null +++ b/v3/example-code/aliasing/aliasing3.golden_py3 @@ -0,0 +1,335 @@ +{ + "code": "l1, l2, l3, l4 = 1, 2, 3, 4\n\nt1 = (l1, l2)\nt2 = (l3, l4)\nt = (t1, t2)\nu = ((1, 2), (3, 4))\nv = u[0]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "l4": 4, + "t1": [ + "REF", + 1 + ], + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1 + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "5": [ + "TUPLE", + 1, + 2 + ], + "6": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "l4", + "l2", + "l3", + "l1", + "t1", + "t2", + "t", + "u", + "v" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "v": [ + "REF", + 5 + ], + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ], + "l4": 4, + "l2": 2, + "l3": 3, + "l1": 1, + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "5": [ + "TUPLE", + 1, + 2 + ], + "6": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing4.golden_py3 b/v3/example-code/aliasing/aliasing4.golden_py3 new file mode 100644 index 000000000..0d440f81a --- /dev/null +++ b/v3/example-code/aliasing/aliasing4.golden_py3 @@ -0,0 +1,67 @@ +{ + "code": "x = [1, 2, 3]\nx.append(x)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing5.golden_py3 b/v3/example-code/aliasing/aliasing5.golden_py3 new file mode 100644 index 000000000..af82d0118 --- /dev/null +++ b/v3/example-code/aliasing/aliasing5.golden_py3 @@ -0,0 +1,455 @@ +{ + "code": "x = None\nfor i in range(5, 0, -1):\n x = (i, x)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + 1, + [ + "REF", + 4 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 5, + null + ], + "2": [ + "TUPLE", + 4, + [ + "REF", + 1 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "4": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + 1, + [ + "REF", + 4 + ] + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing6.golden_py3 b/v3/example-code/aliasing/aliasing6.golden_py3 new file mode 100644 index 000000000..71b2ac9b6 --- /dev/null +++ b/v3/example-code/aliasing/aliasing6.golden_py3 @@ -0,0 +1,327 @@ +{ + "code": "# wow, this looks gross :)\nt1 = (1, 2)\nt2 = (3, 4)\nt = [t1, t2]\nu = [t, t, t]\nu[1] = u\nt[0] = u\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 3 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "t1", + "t2", + "t", + "u" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "t2": [ + "REF", + 2 + ], + "u": [ + "REF", + 4 + ], + "t": [ + "REF", + 3 + ], + "t1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2 + ], + "2": [ + "TUPLE", + 3, + 4 + ], + "3": [ + "LIST", + [ + "REF", + 4 + ], + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing7.golden_py3 b/v3/example-code/aliasing/aliasing7.golden_py3 new file mode 100644 index 000000000..fc49379b4 --- /dev/null +++ b/v3/example-code/aliasing/aliasing7.golden_py3 @@ -0,0 +1,248 @@ +{ + "code": "x = (3, {'joe': 'M', 'jane': 'F'})\ny = (2, x)\nz = (1, y)\nw = (x, y, z)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ], + "4": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "w" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 3 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 4 + ], + "w": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "TUPLE", + 3, + [ + "REF", + 2 + ] + ], + "2": [ + "DICT", + [ + "jane", + "F" + ], + [ + "joe", + "M" + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 1 + ] + ], + "4": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "5": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/example-code/aliasing/aliasing8.golden_py3 b/v3/example-code/aliasing/aliasing8.golden_py3 new file mode 100644 index 000000000..20ddeb5fb --- /dev/null +++ b/v3/example-code/aliasing/aliasing8.golden_py3 @@ -0,0 +1,229 @@ +{ + "code": "# test whether heap objects \"jiggle\" between steps\nx = [1, [2, [3, None]]]\ny = [4, [5, [6, None]]]\n\nx[1][1] = y[1] # hopefully no jiggle!\n\nx = set(['apple', 'banana', 'carrot'])\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "LIST", + 3, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "LIST", + 3, + null + ], + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 2, + [ + "REF", + 5 + ] + ], + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 4 + ], + "x": [ + "REF", + 7 + ] + }, + "heap": { + "4": [ + "LIST", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "LIST", + 5, + [ + "REF", + 6 + ] + ], + "6": [ + "LIST", + 6, + null + ], + "7": [ + "SET", + "carrot", + "apple", + "banana" + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure1.golden_py3 b/v3/example-code/closures/closure1.golden_py3 new file mode 100644 index 000000000..60defd48b --- /dev/null +++ b/v3/example-code/closures/closure1.golden_py3 @@ -0,0 +1,567 @@ +{ + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\nb = foo(1)\nb(2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "b": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 2 + ], + "bar": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure2.golden_py3 b/v3/example-code/closures/closure2.golden_py3 new file mode 100644 index 000000000..57084967a --- /dev/null +++ b/v3/example-code/closures/closure2.golden_py3 @@ -0,0 +1,1764 @@ +{ + "code": "def foo(y):\n def bar(x):\n return x + y\n return bar\n\ndef foo_deux(y):\n def bar_deux(x):\n return x + y\n return bar_deux\n\nb = foo(1)\nb_deux = foo_deux(1000)\n\nb(2) \nb_deux(2000)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "foo_deux": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p", + "ordered_varnames": [ + "y", + "bar_deux" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b" + ], + "stdout": "", + "func_name": "foo_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "bar_deux", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 3000, + "x": 2000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar_deux", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "bar_deux_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "foo_deux", + "b", + "b_deux" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 1, + "__return__": [ + "REF", + 3 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "y", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 1000, + "__return__": [ + "REF", + 4 + ], + "bar_deux": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo_deux", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_deux_f2_p_z", + "ordered_varnames": [ + "y", + "bar_deux", + "__return__" + ] + } + ], + "globals": { + "b_deux": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "foo_deux": [ + "REF", + 2 + ], + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(y)", + null + ], + "2": [ + "FUNCTION", + "foo_deux(y)", + null + ], + "3": [ + "FUNCTION", + "bar(x)", + 1 + ], + "4": [ + "FUNCTION", + "bar_deux(x)", + 2 + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure3.golden_py3 b/v3/example-code/closures/closure3.golden_py3 new file mode 100644 index 000000000..7a968114d --- /dev/null +++ b/v3/example-code/closures/closure3.golden_py3 @@ -0,0 +1,1400 @@ +{ + "code": "def foo(x):\n def bar(y):\n def baz(z):\n return len(x) + len(y) + len(z)\n return baz\n return bar([4,5,6,7])\n\nl = [1,2,3]\nx = foo(l)\nx([8,9,10,11,12])\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "y", + "baz" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "baz", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 12, + "z": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "baz", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "baz_f3", + "ordered_varnames": [ + "z", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ], + "6": [ + "LIST", + 8, + 9, + 10, + 11, + 12 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "l", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": [ + "REF", + 2 + ], + "bar": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "bar", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 5 + ], + "baz": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "bar", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "bar_f2_p_z", + "ordered_varnames": [ + "y", + "baz", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 5 + ], + "foo": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "LIST", + 1, + 2, + 3 + ], + "3": [ + "FUNCTION", + "bar(y)", + 1 + ], + "4": [ + "LIST", + 4, + 5, + 6, + 7 + ], + "5": [ + "FUNCTION", + "baz(z)", + 2 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure4.golden_py3 b/v3/example-code/closures/closure4.golden_py3 new file mode 100644 index 000000000..d26bb55af --- /dev/null +++ b/v3/example-code/closures/closure4.golden_py3 @@ -0,0 +1,1457 @@ +{ + "code": "def f(x):\n def g(y):\n return x + y\n return g\n\ng1 = f(1)\ng2 = f(2)\ng1(3) + g2(4)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 3, + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f3", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 4, + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "g1", + "g2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 2 + ], + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 2, + "g": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "g2": [ + "REF", + 3 + ], + "g1": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y)", + 1 + ], + "3": [ + "FUNCTION", + "g(y)", + 2 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/closure5.golden_py3 b/v3/example-code/closures/closure5.golden_py3 new file mode 100644 index 000000000..3251000b6 --- /dev/null +++ b/v3/example-code/closures/closure5.golden_py3 @@ -0,0 +1,7684 @@ +{ + "code": "def f(x):\n def g(y, z):\n if z == 0:\n return y\n return g(x+y+z, z-1)\n return lambda: g(0, x)\n\nfoo = f(3)\nbar = f(4)\nbaz = foo() + bar()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "y": 15, + "__return__": 15, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f7", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "y": 11, + "__return__": 15, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f6", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 6, + "__return__": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f5", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 0, + "__return__": 15, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f4", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "z": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "y": 26, + "__return__": 26, + "z": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f13", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "z": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "y": 21, + "__return__": 26, + "z": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f12", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "z": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "y": 15, + "__return__": 26, + "z": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f11", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "z": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "y": 8, + "__return__": 26, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f10", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [] + }, + { + "frame_id": 9, + "encoded_locals": { + "y": 0, + "__return__": 26, + "z": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "g_f9", + "ordered_varnames": [ + "y", + "z", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 26 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 3 + ], + "bar": [ + "REF", + 5 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "foo", + "bar", + "baz" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "x": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "x": 4, + "g": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f2_p_z", + "ordered_varnames": [ + "x", + "g", + "__return__" + ] + } + ], + "globals": { + "bar": [ + "REF", + 5 + ], + "foo": [ + "REF", + 3 + ], + "baz": 41, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x)", + null + ], + "2": [ + "FUNCTION", + "g(y, z)", + 1 + ], + "3": [ + "FUNCTION", + "()", + 1 + ], + "4": [ + "FUNCTION", + "g(y, z)", + 2 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/lambda-param.golden_py3 b/v3/example-code/closures/lambda-param.golden_py3 new file mode 100644 index 000000000..981686dd2 --- /dev/null +++ b/v3/example-code/closures/lambda-param.golden_py3 @@ -0,0 +1,758 @@ +{ + "code": "def foo(x):\n bar(lambda y: x + y)\n\ndef bar(a):\n print(a(20))\n\nfoo(10)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y)", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 20, + "__return__": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y)", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "bar", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "bar", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "bar_f2", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ], + "3": [ + "FUNCTION", + "(y)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 10 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo", + "bar" + ], + "stdout": "30\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 10 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "foo", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "foo_f1_p_z", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ], + "bar": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo(x)", + null + ], + "2": [ + "FUNCTION", + "bar(a)", + null + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/example-code/decorators.golden_py3 b/v3/example-code/decorators.golden_py3 new file mode 100644 index 000000000..67355fc21 --- /dev/null +++ b/v3/example-code/decorators.golden_py3 @@ -0,0 +1,1892 @@ +{ + "code": "def make_bold(fn):\n return lambda : \"\" + fn() + \"\"\n\ndef make_italic(fn):\n return lambda : \"\" + fn() + \"\"\n\n@make_bold\n@make_italic\ndef hello():\n return \"hello world\"\n \nhelloHTML = hello()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_italic", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2", + "ordered_varnames": [ + "fn" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic" + ], + "stdout": "", + "func_name": "make_bold", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "hello", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "hello", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "hello_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "hello world" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "make_bold", + "make_italic", + "hello", + "helloHTML" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "fn": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_italic", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_italic_f1_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "fn": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "make_bold", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "make_bold_f2_p_z", + "ordered_varnames": [ + "fn", + "__return__" + ] + } + ], + "globals": { + "make_bold": [ + "REF", + 1 + ], + "make_italic": [ + "REF", + 2 + ], + "hello": [ + "REF", + 5 + ], + "helloHTML": "hello world" + }, + "heap": { + "1": [ + "FUNCTION", + "make_bold(fn)", + null + ], + "2": [ + "FUNCTION", + "make_italic(fn)", + null + ], + "3": [ + "FUNCTION", + "hello()", + null + ], + "4": [ + "FUNCTION", + "()", + 1 + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/example-code/fact.golden_py3 b/v3/example-code/fact.golden_py3 new file mode 100644 index 000000000..6f756d707 --- /dev/null +++ b/v3/example-code/fact.golden_py3 @@ -0,0 +1,1909 @@ +{ + "code": "# dumb recursive factorial\ndef fact(n):\n if (n <= 1):\n return 1\n else:\n return n * fact(n - 1)\n\nprint(fact(6))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 1, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f6", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 6, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f4", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 24, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f3", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 120, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "", + "func_name": "fact", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 720, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "fact", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "fact_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "fact" + ], + "stdout": "720\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "fact": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "fact(n)", + null + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/example-code/fib.golden_py3 b/v3/example-code/fib.golden_py3 new file mode 100644 index 000000000..55c3b980b --- /dev/null +++ b/v3/example-code/fib.golden_py3 @@ -0,0 +1,7560 @@ +{ + "code": "# Infinite Fibonacci!!!\n\narr = [1, 1]\n\nprint(arr[0])\n\nwhile True:\n print(arr[-1])\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1, + 2 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5, + 8 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8, + 13 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13, + 21 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21, + 34 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34, + 55 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55, + 89 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89, + 144 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144, + 233 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233, + 377 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377, + 610 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610, + 987 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987, + 1597 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597, + 2584 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584, + 4181 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181, + 6765 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765, + 10946 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946, + 17711 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711, + 28657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657, + 46368 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368, + 75025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025, + 121393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393, + 196418 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418, + 317811 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811, + 514229 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229, + 832040 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040, + 1346269 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269, + 2178309 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309, + 3524578 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578, + 5702887 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887, + 9227465 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465, + 14930352 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352, + 24157817 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817, + 39088169 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169, + 63245986 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986, + 102334155 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155, + 165580141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141, + 267914296 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296, + 433494437 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437, + 701408733 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733, + 1134903170 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170, + 1836311903 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903, + 2971215073 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073, + 4807526976 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976, + 7778742049 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049, + 12586269025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025, + 20365011074 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074, + 32951280099 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099, + 53316291173 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173, + 86267571272 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272, + 139583862445 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445, + 225851433717 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717, + 365435296162 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162, + 591286729879 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879, + 956722026041 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041, + 1548008755920 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920, + 2504730781961 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961, + 4052739537881 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881, + 6557470319842 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842, + 10610209857723 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723, + 17167680177565 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565, + 27777890035288 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288, + 44945570212853 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853, + 72723460248141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141, + 117669030460994 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994, + 190392490709135 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135, + 308061521170129 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129, + 498454011879264 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264, + 806515533049393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393, + 1304969544928657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657, + 2111485077978050 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050, + 3416454622906707 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2111485077978050, + 3416454622906707 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/example-code/filter.golden_py3 b/v3/example-code/filter.golden_py3 new file mode 100644 index 000000000..1e1111344 --- /dev/null +++ b/v3/example-code/filter.golden_py3 @@ -0,0 +1,1505 @@ +{ + "code": "input = [(\"Mary\", 27), (\"Joe\", 30), (\"Ruth\", 43), (\"Bob\", 17), (\"Jenny\", 22)]\n\nyoungPeople = []\n\nfor (person, age) in input:\n if age < 30:\n youngPeople.append(person)\n else:\n print(\"HAHA \" + person + \" is too old!\")\n\nprint(\"There are \" + str(len(youngPeople)) + \" young people\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 1 + ], + "youngPeople": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Mary", + "youngPeople": [ + "REF", + 7 + ], + "age": 27, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Joe", + "youngPeople": [ + "REF", + 7 + ], + "age": 30, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Ruth", + "youngPeople": [ + "REF", + 7 + ], + "age": 43, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Bob", + "youngPeople": [ + "REF", + 7 + ], + "age": 17, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "youngPeople", + "person", + "age" + ], + "stdout": "HAHA Joe is too old!\nHAHA Ruth is too old!\nThere are 3 young people\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "person": "Jenny", + "youngPeople": [ + "REF", + 7 + ], + "age": 22, + "input": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + [ + "REF", + 2 + ], + [ + "REF", + 3 + ], + [ + "REF", + 4 + ], + [ + "REF", + 5 + ], + [ + "REF", + 6 + ] + ], + "2": [ + "TUPLE", + "Mary", + 27 + ], + "3": [ + "TUPLE", + "Joe", + 30 + ], + "4": [ + "TUPLE", + "Ruth", + 43 + ], + "5": [ + "TUPLE", + "Bob", + 17 + ], + "6": [ + "TUPLE", + "Jenny", + 22 + ], + "7": [ + "LIST", + "Mary", + "Bob", + "Jenny" + ] + }, + "line": 11, + "event": "return" + } + ] +} diff --git a/v3/example-code/for-else.golden_py3 b/v3/example-code/for-else.golden_py3 new file mode 100644 index 000000000..ad8845399 --- /dev/null +++ b/v3/example-code/for-else.golden_py3 @@ -0,0 +1,1475 @@ +{ + "code": "# find primes using a for-else construct\nfor n in range(2, 10):\n x_range = range(2, n)\n for x in x_range:\n if n % x == 0:\n break\n else:\n # loop fell through without finding a factor\n print(n)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "n": 2 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 3, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 4, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 4, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 5, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 5, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 6, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 6, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 7, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 4 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 5 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 5 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 7, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 8, + "x": 6 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 8, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 1 + ], + "n": 9, + "x": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "range" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 2 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "n", + "x_range", + "x" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x_range": [ + "REF", + 2 + ], + "n": 9, + "x": 3 + }, + "heap": { + "2": [ + "INSTANCE", + "range" + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/example-code/gen_primes.golden_py3 b/v3/example-code/gen_primes.golden_py3 new file mode 100644 index 000000000..802f27735 --- /dev/null +++ b/v3/example-code/gen_primes.golden_py3 @@ -0,0 +1,12512 @@ +{ + "code": "# Use generator to generate a stream of primes\ndef gen_primes():\n n = 2\n while True:\n for x in range(2, n):\n if n % x == 0:\n break\n else:\n yield n\n n += 1\n\nfor p in gen_primes():\n print(p)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes" + ], + "stdout": "", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 2, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 2, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 5, + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 3, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 2, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 3, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 3, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 4, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 7, + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 5, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 2, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 3, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 4, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 4, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 5, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 5, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 6, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 8, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 8, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 11, + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f5", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 7, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 2, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 3, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 3, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 4, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 4, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 5, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 5, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 6, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 6, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 7, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 7, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 8, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 8, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 10, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 13, + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f6", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 11, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 14 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 16 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 2, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 3, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 4, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 4, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 5, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 5, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 6, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 6, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 7, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 7, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 8, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 8, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 9, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 9, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 10, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 10, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 12, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 14, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 14, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 15, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 15, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 17, + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f7", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 13, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 18 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 2, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 3, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 3, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 4, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 4, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 5, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 5, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 6, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 6, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 7, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 7, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 8, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 8, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 9, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 9, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 10, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 10, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 11, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 11, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 12, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 12, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 14, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 14, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 16, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 17, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 17, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 19, + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f8", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 17, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 22 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 2, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 4, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 4, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 5, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 5, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 6, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 6, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 7, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 7, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 8, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 8, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 9, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 9, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 10, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 10, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 11, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 11, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 12, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 12, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 13, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 13, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 14, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 14, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 16, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 16, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 18, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 19, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 19, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 20, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 20, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 21, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 21, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 23, + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f9", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "p": 19, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 22, + "n": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 22, + "n": 24 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 24 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 24 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 24 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 2, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 3, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 3, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_primes", + "p" + ], + "stdout": "2\n3\n5\n7\n11\n13\n17\n19\n23\n", + "func_name": "gen_primes", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 4, + "n": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_primes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_primes_f10", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "p": 23, + "gen_primes": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_primes()", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/example-code/genexpr.golden_py3 b/v3/example-code/genexpr.golden_py3 new file mode 100644 index 000000000..10ad0ebac --- /dev/null +++ b/v3/example-code/genexpr.golden_py3 @@ -0,0 +1,2170 @@ +{ + "code": "# NB: there's a known bug when frames of exited functions are displayed\nx = (i for i in range(10))\n\nfor e in x:\n print(e)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0, + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1, + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 0 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2, + "__return__": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 1 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3, + "__return__": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 2 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4, + "__return__": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f5", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 3 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5, + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 4 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6, + "__return__": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f7", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 5 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7, + "__return__": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 6 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8, + "__return__": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 7 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9, + "__return__": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 8 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "i": 9, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f11", + "ordered_varnames": [ + ".0", + "i", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "range_iterator" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "e" + ], + "stdout": "0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "e": 9 + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/example-code/happy.golden_py3 b/v3/example-code/happy.golden_py3 new file mode 100644 index 000000000..ea1a6a7e0 --- /dev/null +++ b/v3/example-code/happy.golden_py3 @@ -0,0 +1,952 @@ +{ + "code": "# From \"Teaching with Python\" by John Zelle\ndef happy():\n print(\"Happy Birthday to you!\")\n\ndef sing(P):\n happy()\n happy()\n print(\"Happy Birthday dear \" + P + \"!\")\n happy()\n\n# main\nsing(\"Fred\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "happy", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "P": "Fred" + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "happy", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "happy_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "sing", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "P": "Fred" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sing", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sing_f1", + "ordered_varnames": [ + "P", + "__return__" + ] + } + ], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "happy", + "sing" + ], + "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "sing": [ + "REF", + 2 + ], + "happy": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "happy()", + null + ], + "2": [ + "FUNCTION", + "sing(P)", + null + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/example-code/ins_sort.golden_py3 b/v3/example-code/ins_sort.golden_py3 new file mode 100644 index 000000000..837933f43 --- /dev/null +++ b/v3/example-code/ins_sort.golden_py3 @@ -0,0 +1,3538 @@ +{ + "code": "# from: http://www.ece.uci.edu/~chou/py02/python.html\ndef InsertionSort(A):\n for j in range(1, len(A)):\n key = A[j]\n i = j - 1\n while (i >= 0) and (A[i] > key):\n A[i+1] = A[i]\n i = i - 1\n A[i+1] = key\n\ninput = [8, 3, 9, 15, 29, 7, 10]\nInsertionSort(input)\nprint(input)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "j": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 3, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 8, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 1, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 2, + "key": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": -1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 2, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 3, + "key": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 3, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 4, + "key": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 4, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 7, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 29, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 15, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 2, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 9, + 9, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 1, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 8, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 5, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 6, + "key": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 0, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 10 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 5, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 29, + 29 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 4, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 15, + 15, + 29 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "InsertionSort", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "A": [ + "REF", + 2 + ], + "i": 3, + "__return__": null, + "j": 6, + "key": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "InsertionSort", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "InsertionSort_f1", + "ordered_varnames": [ + "A", + "j", + "key", + "i", + "__return__" + ] + } + ], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "InsertionSort", + "input" + ], + "stdout": "[3, 7, 8, 9, 10, 15, 29]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": [ + "REF", + 2 + ], + "InsertionSort": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "InsertionSort(A)", + null + ], + "2": [ + "LIST", + 3, + 7, + 8, + 9, + 10, + 15, + 29 + ] + }, + "line": 13, + "event": "return" + } + ] +} diff --git a/v3/example-code/linked-lists/ll1.golden_py3 b/v3/example-code/linked-lists/ll1.golden_py3 new file mode 100644 index 000000000..1da0bbfb2 --- /dev/null +++ b/v3/example-code/linked-lists/ll1.golden_py3 @@ -0,0 +1,1977 @@ +{ + "code": "# use lists\nx = None\nfor i in range(6, 0, -1):\n x = [i, x]\n\n# use tuples\ny = None\nfor i in range(6, 0, -1):\n y = (i, y)\n\nx[1][0]=y[1][1] # courtesy of John DeNero!\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": null + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": null + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 6 + ], + "y": null + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 8 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 9 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 9 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 10 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 10 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 11 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 11 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 12 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ], + "y": [ + "REF", + 12 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + 2, + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "LIST", + 6, + null + ], + "2": [ + "LIST", + 5, + [ + "REF", + 1 + ] + ], + "3": [ + "LIST", + 4, + [ + "REF", + 2 + ] + ], + "4": [ + "LIST", + 3, + [ + "REF", + 3 + ] + ], + "5": [ + "LIST", + [ + "REF", + 10 + ], + [ + "REF", + 4 + ] + ], + "6": [ + "LIST", + 1, + [ + "REF", + 5 + ] + ], + "7": [ + "TUPLE", + 6, + null + ], + "8": [ + "TUPLE", + 5, + [ + "REF", + 7 + ] + ], + "9": [ + "TUPLE", + 4, + [ + "REF", + 8 + ] + ], + "10": [ + "TUPLE", + 3, + [ + "REF", + 9 + ] + ], + "11": [ + "TUPLE", + 2, + [ + "REF", + 10 + ] + ], + "12": [ + "TUPLE", + 1, + [ + "REF", + 11 + ] + ] + }, + "line": 11, + "event": "return" + } + ] +} diff --git a/v3/example-code/linked-lists/ll2.golden_py3 b/v3/example-code/linked-lists/ll2.golden_py3 new file mode 100644 index 000000000..7a4d0bbe0 --- /dev/null +++ b/v3/example-code/linked-lists/ll2.golden_py3 @@ -0,0 +1,9885 @@ +{ + "code": "# use dicts\nx = None\nfor i in range(6, 0, -1):\n x = {'data': i, 'next': x}\n\n# use objects\nclass Node:\n def __init__(self, data, next):\n self.data = data\n self.next = next\n\ny = None\nfor i in range(6, 0, -1):\n y = Node(i, y)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": null + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": null + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "Node", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Node", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Node_f1", + "ordered_varnames": [] + } + ], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "Node", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Node", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Node_f1", + "ordered_varnames": [] + } + ], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "Node", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Node", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Node_f1", + "ordered_varnames": [] + } + ], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "Node", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Node", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 10 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 10 + ], + "data": 6, + "next": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": null, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 6, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 5, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 5, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 11 + ], + "data": 5, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 11 + ], + "data": 5, + "next": [ + "REF", + 10 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 10 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 5, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 4, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 4, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 12 + ], + "data": 4, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 12 + ], + "data": 4, + "next": [ + "REF", + 11 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 11 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 4, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 3, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 3, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 13 + ], + "data": 3, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 13 + ], + "data": 3, + "next": [ + "REF", + 12 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f5", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 12 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 3, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 2, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 2, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "self": [ + "REF", + 14 + ], + "data": 2, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 14 + ], + "data": 2, + "next": [ + "REF", + 13 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f6", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 13 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 2, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "self": [ + "REF", + 15 + ], + "data": 1, + "next": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f7", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "self": [ + "REF", + 15 + ], + "data": 1, + "next": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f7", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "self": [ + "REF", + 15 + ], + "data": 1, + "next": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f7", + "ordered_varnames": [ + "self", + "data", + "next" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 15 + ], + "data": 1, + "next": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f7", + "ordered_varnames": [ + "self", + "data", + "next", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 14 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 14 + ] + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "i": 1, + "y": [ + "REF", + 15 + ], + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 14 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "Node", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "__init__": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Node", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Node_f1_p_z", + "ordered_varnames": [ + "__init__", + "__return__" + ] + } + ], + "globals": { + "Node": [ + "REF", + 9 + ], + "y": [ + "REF", + 15 + ], + "i": 1, + "x": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "2": [ + "DICT", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 1 + ] + ] + ], + "3": [ + "DICT", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "DICT", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "DICT", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 4 + ] + ] + ], + "6": [ + "DICT", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 5 + ] + ] + ], + "7": [ + "DICT", + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "8": [ + "FUNCTION", + "__init__(self, data, next)", + 1 + ], + "9": [ + "CLASS", + "Node", + [], + [ + "__init__", + [ + "REF", + 8 + ] + ] + ], + "10": [ + "INSTANCE", + "Node", + [ + "data", + 6 + ], + [ + "next", + null + ] + ], + "11": [ + "INSTANCE", + "Node", + [ + "data", + 5 + ], + [ + "next", + [ + "REF", + 10 + ] + ] + ], + "12": [ + "INSTANCE", + "Node", + [ + "data", + 4 + ], + [ + "next", + [ + "REF", + 11 + ] + ] + ], + "13": [ + "INSTANCE", + "Node", + [ + "data", + 3 + ], + [ + "next", + [ + "REF", + 12 + ] + ] + ], + "14": [ + "INSTANCE", + "Node", + [ + "data", + 2 + ], + [ + "next", + [ + "REF", + 13 + ] + ] + ], + "15": [ + "INSTANCE", + "Node", + [ + "data", + 1 + ], + [ + "next", + [ + "REF", + 14 + ] + ] + ] + }, + "line": 13, + "event": "return" + } + ] +} diff --git a/v3/example-code/list-comp.golden_py3 b/v3/example-code/list-comp.golden_py3 new file mode 100644 index 000000000..5d999ccae --- /dev/null +++ b/v3/example-code/list-comp.golden_py3 @@ -0,0 +1,926 @@ +{ + "code": "ppl = ['Alice', 'Bob', 'Carol', 'Doug']\nexcited_ppl = [e + '!!' for e in ppl]\nppl_len = [len(x) for x in ppl]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": "Alice" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": "Bob" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": "Carol" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "e": "Doug" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 2 + ], + "__return__": [ + "REF", + 3 + ], + "e": "Doug" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "e", + "__return__" + ] + } + ], + "globals": { + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "2": [ + "INSTANCE", + "list_iterator" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Alice" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Bob" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Carol" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Doug" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + ".0": [ + "REF", + 4 + ], + "x": "Doug", + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + ".0", + "x", + "__return__" + ] + } + ], + "globals": { + "excited_ppl": [ + "REF", + 3 + ], + "ppl": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "4": [ + "INSTANCE", + "list_iterator" + ], + "5": [ + "LIST", + 5, + 3, + 5, + 4 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "ppl", + "excited_ppl", + "ppl_len" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "ppl": [ + "REF", + 1 + ], + "excited_ppl": [ + "REF", + 3 + ], + "ppl_len": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "LIST", + "Alice", + "Bob", + "Carol", + "Doug" + ], + "3": [ + "LIST", + "Alice!!", + "Bob!!", + "Carol!!", + "Doug!!" + ], + "5": [ + "LIST", + 5, + 3, + 5, + 4 + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/example-code/map.golden_py3 b/v3/example-code/map.golden_py3 new file mode 100644 index 000000000..30214b328 --- /dev/null +++ b/v3/example-code/map.golden_py3 @@ -0,0 +1,6953 @@ +{ + "code": "# Functional programming with map\n# Adapted from MIT 6.01 course notes (Section A.2.3)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef map(func, lst):\n if lst == []:\n return []\n else:\n return [func(lst[0])] + map(func, lst[1:])\n \ndef halveElements(lst):\n return map(lambda x: x / 2.0, lst)\n \ninput = [2, 4, 6, 8, 10]\noutput = halveElements(input)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1", + "ordered_varnames": [ + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1.000, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 2.000, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 3.000, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 4.000, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 5.000, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": [ + "REF", + 10 + ], + "lst": [ + "REF", + 9 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f12", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "9": [ + "LIST" + ], + "10": [ + "LIST" + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": [ + "REF", + 11 + ], + "lst": [ + "REF", + 8 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "8": [ + "LIST", + 10 + ], + "11": [ + "LIST", + 5.000 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": [ + "REF", + 12 + ], + "lst": [ + "REF", + 7 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "7": [ + "LIST", + 8, + 10 + ], + "12": [ + "LIST", + 4.000, + 5.000 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": [ + "REF", + 13 + ], + "lst": [ + "REF", + 6 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "6": [ + "LIST", + 6, + 8, + 10 + ], + "13": [ + "LIST", + 3.000, + 4.000, + 5.000 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 14 + ], + "lst": [ + "REF", + 5 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "5": [ + "LIST", + 4, + 6, + 8, + 10 + ], + "14": [ + "LIST", + 2.000, + 3.000, + 4.000, + 5.000 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ], + "func": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "func", + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ], + "15": [ + "LIST", + 1.000, + 2.000, + 3.000, + 4.000, + 5.000 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input" + ], + "stdout": "", + "func_name": "halveElements", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "15": [ + "LIST", + 1.000, + 2.000, + 3.000, + 4.000, + 5.000 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "halveElements", + "input", + "output" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 15 + ], + "lst": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "halveElements", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "halveElements_f1_p_z", + "ordered_varnames": [ + "lst", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "halveElements": [ + "REF", + 2 + ], + "output": [ + "REF", + 15 + ], + "input": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(func, lst)", + null + ], + "2": [ + "FUNCTION", + "halveElements(lst)", + null + ], + "3": [ + "LIST", + 2, + 4, + 6, + 8, + 10 + ], + "15": [ + "LIST", + 1.000, + 2.000, + 3.000, + 4.000, + 5.000 + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/example-code/memo_fib.golden_py3 b/v3/example-code/memo_fib.golden_py3 new file mode 100644 index 000000000..abb03047a --- /dev/null +++ b/v3/example-code/memo_fib.golden_py3 @@ -0,0 +1,10715 @@ +{ + "code": "# use memoization to make the recursive Fibonacci\n# implementation only take O(n) time and space\n\nMemoTable = {}\n\ndef MemoizedFib(n):\n if n <= 2:\n return 1\n\n if n in MemoTable:\n return MemoTable[n]\n\n MemoTable[n] = MemoizedFib(n-1) + MemoizedFib(n-2)\n return MemoTable[n]\n\n\nres = MemoizedFib(10)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 1, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f9", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 1, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f10", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f8", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 1, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f11", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 3, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f7", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 2, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f12", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 5, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f6", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": 3, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f13", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 8, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 5, + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f14", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 13, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f4", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": 8, + "n": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f15", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 21, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f3", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 13, + "n": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f16", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 34, + "n": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f2", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "__return__": 21, + "n": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f17", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib" + ], + "stdout": "", + "func_name": "MemoizedFib", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 55, + "n": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "MemoizedFib", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "MemoizedFib_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "MemoTable", + "MemoizedFib", + "res" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "MemoizedFib": [ + "REF", + 2 + ], + "res": 55, + "MemoTable": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 3, + 2 + ], + [ + 4, + 3 + ], + [ + 5, + 5 + ], + [ + 6, + 8 + ], + [ + 7, + 13 + ], + [ + 8, + 21 + ], + [ + 9, + 34 + ], + [ + 10, + 55 + ] + ], + "2": [ + "FUNCTION", + "MemoizedFib(n)", + null + ] + }, + "line": 17, + "event": "return" + } + ] +} diff --git a/v3/example-code/nonlocal.golden_py3 b/v3/example-code/nonlocal.golden_py3 new file mode 100644 index 000000000..e865e76cc --- /dev/null +++ b/v3/example-code/nonlocal.golden_py3 @@ -0,0 +1,667 @@ +{ + "code": "# 'nonlocal' keyword is only in Python 3\ndef outer():\n x = 1\n def inner():\n nonlocal x\n x = 2\n y = x\n print(\"inner:\", x, y)\n inner()\n print(\"outer:\", x)\n\nouter()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [ + "y" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "inner: 2 2\n", + "func_name": "inner", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "inner", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "inner_f2", + "ordered_varnames": [ + "y", + "__return__" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "inner: 2 2\n", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "inner: 2 2\nouter: 2\n", + "func_name": "outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p", + "ordered_varnames": [ + "inner", + "x", + "__return__" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "outer" + ], + "stdout": "inner: 2 2\nouter: 2\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 2, + "inner": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "outer", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "outer_f1_p_z", + "ordered_varnames": [ + "inner", + "x", + "__return__" + ] + } + ], + "globals": { + "outer": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "outer()", + null + ], + "2": [ + "FUNCTION", + "inner()", + 1 + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/example-code/oop_1.golden_py3 b/v3/example-code/oop_1.golden_py3 new file mode 100644 index 000000000..fbed56886 --- /dev/null +++ b/v3/example-code/oop_1.golden_py3 @@ -0,0 +1,2428 @@ +{ + "code": "# Object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601()\nprint(pat.course)\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint(pat.building)\npat.building = 32\nprint(pat.building)\n\nprint(pat.salutation())\nprint(Staff601.salutation(pat))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "course" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "course", + "6.01" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "course", + "6.01" + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "room": 501 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course", + "room" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ] + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\nProfessor Pat\nProfessor Pat\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 2 + ] + ] + ], + "4": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/v3/example-code/oop_2.golden_py3 b/v3/example-code/oop_2.golden_py3 new file mode 100644 index 000000000..5a289ce75 --- /dev/null +++ b/v3/example-code/oop_2.golden_py3 @@ -0,0 +1,2258 @@ +{ + "code": "# The __init__ 'constructor' - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def __init__(self, name, role, years, salary):\n self.name = name\n self.role = role\n self.age = years\n self.salary = salary\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601('Pat', 'Professor', 60, 100000)\nprint(pat.salutation())\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "course" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "course", + "6.01" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "course", + "6.01" + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "room": 501 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course", + "room" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "room": 501, + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "self": [ + "REF", + 5 + ], + "role": "Professor", + "name": "Pat", + "years": 60 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "name": "Pat", + "self": [ + "REF", + 5 + ], + "years": 60, + "role": "Professor", + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "name", + "role", + "years", + "salary", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "Professor Pat", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "salutation_f3", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "Professor Pat\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "__return__": [ + "REF", + 1 + ], + "room": 501, + "course": "6.01", + "salutation": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "__init__", + "building", + "course", + "room", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 4 + ], + "pat": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ], + [ + "salutation", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, name, role, years, salary)", + 1 + ], + "3": [ + "FUNCTION", + "salutation(self)", + 1 + ], + "4": [ + "CLASS", + "Staff601", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ], + [ + "salutation", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ], + [ + "salary", + 100000 + ] + ] + }, + "line": 20, + "event": "return" + } + ] +} diff --git a/v3/example-code/oop_inherit.golden_py3 b/v3/example-code/oop_inherit.golden_py3 new file mode 100644 index 000000000..c5aa17dc7 --- /dev/null +++ b/v3/example-code/oop_inherit.golden_py3 @@ -0,0 +1,3159 @@ +{ + "code": "# Inheritance - object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def giveRaise(self, percentage):\n self.salary = self.salary + self.salary * percentage\n\nclass Prof601(Staff601):\n salary = 100000\n\n def __init__(self, name, age):\n self.name = name\n self.giveRaise((age - 18) * 0.03)\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Prof601('Pat', 60)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "course" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "course", + "6.01" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "course", + "6.01" + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "room": 501 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course", + "room" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2", + "ordered_varnames": [] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT" + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2", + "ordered_varnames": [] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2", + "ordered_varnames": [] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2", + "ordered_varnames": [ + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ] + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "__init__": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p", + "ordered_varnames": [ + "__init__", + "salary" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "Prof601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ] + }, + "line": 20, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601" + ] + }, + "line": 16, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "percentage": 1.260, + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "giveRaise_f4", + "ordered_varnames": [ + "self", + "percentage" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "percentage": 1.260, + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "giveRaise_f4", + "ordered_varnames": [ + "self", + "percentage" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "giveRaise", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "percentage": 1.260, + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "giveRaise", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "giveRaise_f4", + "ordered_varnames": [ + "self", + "percentage", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + 226000.000 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "age": 60, + "name": "Pat", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "__init___f3", + "ordered_varnames": [ + "self", + "name", + "age", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + 226000.000 + ] + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601", + "Prof601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "giveRaise": [ + "REF", + 2 + ], + "room": 501, + "course": "6.01", + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Staff601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1_p_z", + "ordered_varnames": [ + "building", + "course", + "giveRaise", + "room", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "salary": 100000, + "salutation": [ + "REF", + 6 + ], + "__init__": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Prof601", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Prof601_f2_p_z", + "ordered_varnames": [ + "__init__", + "salary", + "salutation", + "__return__" + ] + } + ], + "globals": { + "Staff601": [ + "REF", + 3 + ], + "pat": [ + "REF", + 8 + ], + "Prof601": [ + "REF", + 7 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ], + "2": [ + "FUNCTION", + "giveRaise(self, percentage)", + 1 + ], + "3": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "giveRaise", + [ + "REF", + 2 + ] + ], + [ + "room", + 501 + ] + ], + "4": [ + "DICT", + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ], + [ + "__init__", + [ + "REF", + 5 + ] + ] + ], + "5": [ + "FUNCTION", + "__init__(self, name, age)", + 2 + ], + "6": [ + "FUNCTION", + "salutation(self)", + 2 + ], + "7": [ + "CLASS", + "Prof601", + [ + "Staff601" + ], + [ + "__init__", + [ + "REF", + 5 + ] + ], + [ + "salary", + 100000 + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "Prof601", + [ + "name", + "Pat" + ], + [ + "salary", + 226000.000 + ] + ] + }, + "line": 23, + "event": "return" + } + ] +} diff --git a/v3/example-code/oop_small.golden_py3 b/v3/example-code/oop_small.golden_py3 new file mode 100644 index 000000000..53667117e --- /dev/null +++ b/v3/example-code/oop_small.golden_py3 @@ -0,0 +1,2087 @@ +{ + "code": "class A:\n x = 1\n y = 'hello'\n\nclass B:\n z = 'bye'\n\nclass C(A,B):\n def salutation(self):\n return '%d %s %s' % (self.x, self.y, self.z)\n\ninst = C()\nprint(inst.salutation())\ninst.x = 100\nprint(inst.salutation())\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "x", + 1 + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": "hello", + "x": 1, + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "y", + "hello" + ], + [ + "x", + 1 + ] + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "B", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "B", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "B_f2", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "3": [ + "DICT" + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "B", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "B", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "B_f2", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "3": [ + "DICT" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "B", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "B", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "B_f2", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "3": [ + "DICT" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "B", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "z": "bye" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "B", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "B_f2", + "ordered_varnames": [ + "z", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "3": [ + "DICT", + [ + "z", + "bye" + ] + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "C", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "C", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "C_f3", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT" + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "C", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "C", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "C_f3", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "C", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "C", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "C_f3", + "ordered_varnames": [] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B" + ], + "stdout": "", + "func_name": "C", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "C", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f4", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f4", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": "1 hello bye", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f4", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C" + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f5", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f5", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n", + "func_name": "salutation", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": "100 hello bye", + "self": [ + "REF", + 8 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "salutation", + "is_zombie": false, + "parent_frame_id_list": [ + 3 + ], + "unique_hash": "salutation_f5", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "B", + "C", + "inst" + ], + "stdout": "1 hello bye\n100 hello bye\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "salutation": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 5 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "C", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "C_f3_p_z", + "ordered_varnames": [ + "salutation", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 2 + ], + "C": [ + "REF", + 7 + ], + "B": [ + "REF", + 4 + ], + "inst": [ + "REF", + 8 + ] + }, + "heap": { + "2": [ + "CLASS", + "A", + [], + [ + "x", + 1 + ], + [ + "y", + "hello" + ] + ], + "4": [ + "CLASS", + "B", + [], + [ + "z", + "bye" + ] + ], + "5": [ + "DICT", + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "6": [ + "FUNCTION", + "salutation(self)", + 3 + ], + "7": [ + "CLASS", + "C", + [ + "A", + "B" + ], + [ + "salutation", + [ + "REF", + 6 + ] + ] + ], + "8": [ + "INSTANCE", + "C", + [ + "x", + 100 + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/example-code/py_tutorial.golden_py3 b/v3/example-code/py_tutorial.golden_py3 new file mode 100644 index 000000000..a3b9a2ffe --- /dev/null +++ b/v3/example-code/py_tutorial.golden_py3 @@ -0,0 +1,4754 @@ +{ + "code": "# Philip's 10-minute intro to Python\n\n# numbers!\nage = 26\npi = 3.14159\n\n# strings!\ns = 'Rutherford Birchard Hayes'\ntokens = s.split()\nfirstName = tokens[0]\nmiddleName = tokens[1]\nlastName = tokens[2]\ns2 = firstName + ' ' + middleName + ' ' + lastName\n\n# 'if' statement - indentation matters!\nif (s == s2):\n print('yes!!!')\nelse:\n print('nooooooo')\n\n# list (mutable sequence)\nbeatles = ['John', 'Paul', 'George']\nbeatles.append('Ringo')\n\n# 'for' loop - indentation matters!\nfor b in beatles:\n print('Hello ' + b)\n\n# tuple (immutable sequence)\nages = (18, 21, 28, 21, 22, 18, 19, 34, 9)\n\n# set (no order, no duplicates)\nuniqueAges = set(ages)\nuniqueAges.add(18) # already in set, no effect\nuniqueAges.remove(21)\n\n# no guaranteed order when iterating over a set\nfor thisAge in uniqueAges:\n print(thisAge)\n\n# testing set membership\nif 18 in uniqueAges:\n print('There is an 18-year-old present!')\n\n# sorting\nbeatles.sort() # in-place\norderedUniqueAges = sorted(uniqueAges) # new list\n\n# dict - mapping unique keys to values\nnetWorth = {}\nnetWorth['Donald Trump'] = 3000000000\nnetWorth['Bill Gates'] = 58000000000\nnetWorth['Tom Cruise'] = 40000000\nnetWorth['Joe Postdoc'] = 20000\n\n# iterating over key-value pairs:\nfor (person, worth) in netWorth.items():\n if worth < 1000000:\n print('haha ' + person + ' is not a millionaire')\n\n# testing dict membership\nif 'Tom Cruise' in netWorth:\n print('show me the money!')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "age" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26, + "pi": 3.142 + }, + "heap": {}, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "age": 26, + "pi": 3.142, + "s": "Rutherford Birchard Hayes" + }, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "age": 26, + "pi": 3.142, + "s": "Rutherford Birchard Hayes" + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "age": 26, + "pi": 3.142, + "s": "Rutherford Birchard Hayes", + "firstName": "Rutherford" + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George" + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "John", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "John", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Paul", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Paul", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "George", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "George", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 27, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 26, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ] + }, + "line": 30, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ] + }, + "line": 33, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 21, + 22, + 28 + ] + }, + "line": 34, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 21, + 22, + 28 + ] + }, + "line": 35, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 34, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 34, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 9, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 9, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 18, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 18, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 19, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 19, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 22, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 22, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 39, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 38, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 42, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 43, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "John", + "Paul", + "George", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 46, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ] + }, + "line": 47, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "orderedUniqueAges": [ + "REF", + 5 + ], + "middleName": "Birchard", + "lastName": "Hayes", + "age": 26, + "uniqueAges": [ + "REF", + 4 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "s2": "Rutherford Birchard Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ] + }, + "line": 50, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT" + ] + }, + "line": 51, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ] + ] + }, + "line": 52, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ] + ] + }, + "line": 53, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 54, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Donald Trump", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 3000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Donald Trump", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 3000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Bill Gates", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 58000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Bill Gates", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 58000000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 59, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Joe Postdoc", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 20000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 58, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 57, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 62, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 63, + "event": "step_line" + }, + { + "ordered_globals": [ + "age", + "pi", + "s", + "tokens", + "firstName", + "middleName", + "lastName", + "s2", + "beatles", + "b", + "ages", + "uniqueAges", + "thisAge", + "orderedUniqueAges", + "netWorth", + "person", + "worth" + ], + "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\nshow me the money!\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "netWorth": [ + "REF", + 6 + ], + "beatles": [ + "REF", + 2 + ], + "firstName": "Rutherford", + "uniqueAges": [ + "REF", + 4 + ], + "middleName": "Birchard", + "s2": "Rutherford Birchard Hayes", + "age": 26, + "orderedUniqueAges": [ + "REF", + 5 + ], + "ages": [ + "REF", + 3 + ], + "tokens": [ + "REF", + 1 + ], + "person": "Tom Cruise", + "s": "Rutherford Birchard Hayes", + "b": "Ringo", + "lastName": "Hayes", + "thisAge": 28, + "pi": 3.142, + "worth": 40000000 + }, + "heap": { + "1": [ + "LIST", + "Rutherford", + "Birchard", + "Hayes" + ], + "2": [ + "LIST", + "George", + "John", + "Paul", + "Ringo" + ], + "3": [ + "TUPLE", + 18, + 21, + 28, + 21, + 22, + 18, + 19, + 34, + 9 + ], + "4": [ + "SET", + 34, + 9, + 18, + 19, + 22, + 28 + ], + "5": [ + "LIST", + 9, + 18, + 19, + 22, + 28, + 34 + ], + "6": [ + "DICT", + [ + "Donald Trump", + 3000000000 + ], + [ + "Bill Gates", + 58000000000 + ], + [ + "Joe Postdoc", + 20000 + ], + [ + "Tom Cruise", + 40000000 + ] + ] + }, + "line": 63, + "event": "return" + } + ] +} diff --git a/v3/example-code/sqrt.golden_py3 b/v3/example-code/sqrt.golden_py3 new file mode 100644 index 000000000..324f6870c --- /dev/null +++ b/v3/example-code/sqrt.golden_py3 @@ -0,0 +1,8929 @@ +{ + "code": "# Calculating square roots by Newton's method, inspired by SICP\n# http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-10.html#%_sec_1.1.7\n\ndef sqrt(x):\n def average(a, b):\n return (a + b) / 2.0\n\n def is_good_enough(guess):\n return (abs((guess * guess) - x) < 0.001)\n\n def improve(guess):\n return average(guess, x / guess)\n\n def sqrt_iter(guess):\n if is_good_enough(guess):\n return guess\n else:\n return sqrt_iter(improve(guess))\n\n return sqrt_iter(1.0)\n\n\nans = sqrt(9)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ], + "is_good_enough": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "is_good_enough" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "average": [ + "REF", + 2 + ], + "is_good_enough": [ + "REF", + 3 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": false, + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f3", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": 1.000, + "b": 9.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": 1.000, + "b": 9.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "a": 1.000, + "__return__": 5.000, + "b": 9.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f5", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5.000, + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f4", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": false, + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f7", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": 5.000, + "b": 1.800 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": 5.000, + "b": 1.800 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "a": 5.000, + "__return__": 3.400, + "b": 1.800 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f9", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 3.400, + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f8", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": false, + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f11", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.400, + "b": 2.647 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.400, + "b": 2.647 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "a": 3.400, + "__return__": 3.023, + "b": 2.647 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f13", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 3.023, + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f12", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": false, + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f15", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 11, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.023, + "b": 2.977 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.023, + "b": 2.977 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "average", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "a": 3.023, + "__return__": 3.000, + "b": 2.977 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "average", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "average_f17", + "ordered_varnames": [ + "a", + "b", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "improve", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "improve", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "improve_f16", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "is_good_enough", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "__return__": true, + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "is_good_enough", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "is_good_enough_f19", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "guess": 3.023 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f18", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "guess": 3.400 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.023 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f14", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "guess": 5.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 3.000, + "guess": 3.400 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f10", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "guess": 1.000 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3.000, + "guess": 5.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f6", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt_iter", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 9, + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3.000, + "guess": 1.000 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sqrt_iter", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "sqrt_iter_f2", + "ordered_varnames": [ + "guess", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt" + ], + "stdout": "", + "func_name": "sqrt", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "__return__": 3.000, + "x": 9, + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 20, + "event": "return" + }, + { + "ordered_globals": [ + "sqrt", + "ans" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "sqrt_iter": [ + "REF", + 5 + ], + "is_good_enough": [ + "REF", + 3 + ], + "__return__": 3.000, + "x": 9, + "average": [ + "REF", + 2 + ], + "improve": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sqrt", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sqrt_f1_p_z", + "ordered_varnames": [ + "x", + "average", + "improve", + "is_good_enough", + "sqrt_iter", + "__return__" + ] + } + ], + "globals": { + "sqrt": [ + "REF", + 1 + ], + "ans": 3.000 + }, + "heap": { + "1": [ + "FUNCTION", + "sqrt(x)", + null + ], + "2": [ + "FUNCTION", + "average(a, b)", + 1 + ], + "3": [ + "FUNCTION", + "is_good_enough(guess)", + 1 + ], + "4": [ + "FUNCTION", + "improve(guess)", + 1 + ], + "5": [ + "FUNCTION", + "sqrt_iter(guess)", + 1 + ] + }, + "line": 23, + "event": "return" + } + ] +} diff --git a/v3/example-code/strtok.golden_py3 b/v3/example-code/strtok.golden_py3 new file mode 100644 index 000000000..3c5031e8f --- /dev/null +++ b/v3/example-code/strtok.golden_py3 @@ -0,0 +1,258 @@ +{ + "code": "input = 'John,Doe,1984,4,1,male'\n\ntokens = input.split(',')\nfirstName = tokens[0]\nlastName = tokens[1]\nbirthdate = (int(tokens[2]), int(tokens[3]), int(tokens[4]))\nisMale = (tokens[5] == 'male')\n\nprint('Hi ' + firstName + ' ' + lastName)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "input" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "input": "John,Doe,1984,4,1,male" + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male", + "firstName": "John" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "lastName": "Doe", + "firstName": "John", + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "tokens": [ + "REF", + 1 + ], + "lastName": "Doe", + "firstName": "John", + "birthdate": [ + "REF", + 2 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate", + "isMale" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "isMale": true, + "firstName": "John", + "lastName": "Doe", + "birthdate": [ + "REF", + 2 + ], + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "input", + "tokens", + "firstName", + "lastName", + "birthdate", + "isMale" + ], + "stdout": "Hi John Doe\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "isMale": true, + "firstName": "John", + "lastName": "Doe", + "birthdate": [ + "REF", + 2 + ], + "tokens": [ + "REF", + 1 + ], + "input": "John,Doe,1984,4,1,male" + }, + "heap": { + "1": [ + "LIST", + "John", + "Doe", + "1984", + "4", + "1", + "male" + ], + "2": [ + "TUPLE", + 1984, + 4, + 1 + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/example-code/sum-cubes.golden_py3 b/v3/example-code/sum-cubes.golden_py3 new file mode 100644 index 000000000..6eecbbe30 --- /dev/null +++ b/v3/example-code/sum-cubes.golden_py3 @@ -0,0 +1,1693 @@ +{ + "code": "def summation(n, term, next):\n total, k = 0, 1\n while k <= n:\n total, k = total + term(k), next(k)\n return total\n\ndef cube(k):\n return pow(k, 3)\n\ndef successor(k):\n return k + 1\n\ndef sum_cubes(n):\n return summation(n, cube, successor)\n\nsum_cubes(3)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "n": 3, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "n": 3, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "cube", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "cube", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "cube_f3", + "ordered_varnames": [ + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "successor", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 0, + "k": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "successor", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "successor_f4", + "ordered_varnames": [ + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3, + "term": [ + "REF", + 2 + ], + "total": 1, + "k": 2, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "term": [ + "REF", + 2 + ], + "k": 2, + "n": 3, + "next": [ + "REF", + 3 + ], + "__return__": 1, + "total": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "n", + "term", + "next", + "total", + "k", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "sum_cubes", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 1, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sum_cubes", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sum_cubes_f1", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "cube", + "successor", + "sum_cubes" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "cube": [ + "REF", + 2 + ], + "sum_cubes": [ + "REF", + 4 + ], + "successor": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(n, term, next)", + null + ], + "2": [ + "FUNCTION", + "cube(k)", + null + ], + "3": [ + "FUNCTION", + "successor(k)", + null + ], + "4": [ + "FUNCTION", + "sum_cubes(n)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/sum-list.golden_py3 b/v3/example-code/sum-list.golden_py3 new file mode 100644 index 000000000..c121417d9 --- /dev/null +++ b/v3/example-code/sum-list.golden_py3 @@ -0,0 +1,3466 @@ +{ + "code": "myList = (1, (2, (3, (4, (5, None)))))\n\ndef sumList(node, subtotal):\n if not node:\n return subtotal\n else:\n return sumList(node[1], subtotal + node[0])\n\ntotal = sumList(myList, 0)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "subtotal": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "node": null, + "__return__": 15, + "subtotal": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f6", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "subtotal": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "node": [ + "REF", + 5 + ], + "__return__": 15, + "subtotal": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f5", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "subtotal": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "node": [ + "REF", + 4 + ], + "__return__": 15, + "subtotal": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f4", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "subtotal": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "node": [ + "REF", + 3 + ], + "__return__": 15, + "subtotal": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "subtotal": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "node": [ + "REF", + 2 + ], + "__return__": 15, + "subtotal": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList" + ], + "stdout": "", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "node": [ + "REF", + 1 + ], + "__return__": 15, + "subtotal": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "node", + "subtotal", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "myList", + "sumList", + "total" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "total": 15, + "myList": [ + "REF", + 1 + ], + "sumList": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 2, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 3, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 4, + [ + "REF", + 5 + ] + ], + "5": [ + "TUPLE", + 5, + null + ], + "6": [ + "FUNCTION", + "sumList(node, subtotal)", + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/example-code/sum.golden_py3 b/v3/example-code/sum.golden_py3 new file mode 100644 index 000000000..0186b5dff --- /dev/null +++ b/v3/example-code/sum.golden_py3 @@ -0,0 +1,10163 @@ +{ + "code": "# Higher-order functions\n# Adapted from MIT 6.01 course notes (Section A.2.2)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\ndef summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint(sumsquares(1, 10))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 10, + "s": 0, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 4, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 9, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 4, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 16, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 25, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 6, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": 36, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 6 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": 7, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 91, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": 49, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 7 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": 8, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 140, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 17, + "encoded_locals": { + "__return__": 64, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 8 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 18, + "encoded_locals": { + "__return__": 9, + "x": 8 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 204, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 19, + "encoded_locals": { + "__return__": 81, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 9 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 20, + "encoded_locals": { + "__return__": 10, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 285, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 21, + "encoded_locals": { + "__return__": 100, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 22, + "encoded_locals": { + "__return__": 11, + "x": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 10, + "s": 385, + "low": 1, + "__return__": 385, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "__return__": 385, + "low": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "385\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 10, + "__return__": 385, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p_z", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/towers_of_hanoi.golden_py3 b/v3/example-code/towers_of_hanoi.golden_py3 new file mode 100644 index 000000000..0b98e6d8c --- /dev/null +++ b/v3/example-code/towers_of_hanoi.golden_py3 @@ -0,0 +1,10996 @@ +{ + "code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "TowerOfHanoi": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f4", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3, + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f5", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f3", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 3 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f7", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4, + 1 + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f8", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f6", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f2", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 4 + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2, + 1 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f11", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 3, + 2 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f12", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f10", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST", + 3 + ], + "4": [ + "LIST", + 4 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2, + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "tmp": [ + "REF", + 4 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 3 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f14", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST", + 2 + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST", + 1 + ], + "4": [ + "LIST", + 4, + 3, + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f15", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f13", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "tmp": [ + "REF", + 2 + ], + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f9", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "TowerOfHanoi", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "tmp": [ + "REF", + 3 + ], + "a": [ + "REF", + 2 + ], + "__return__": null, + "b": [ + "REF", + 4 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "TowerOfHanoi", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "TowerOfHanoi_f1", + "ordered_varnames": [ + "n", + "a", + "b", + "tmp", + "__return__" + ] + } + ], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "TowerOfHanoi", + "stack1", + "stack2", + "stack3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "stack3": [ + "REF", + 4 + ], + "stack2": [ + "REF", + 3 + ], + "TowerOfHanoi": [ + "REF", + 1 + ], + "stack1": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "TowerOfHanoi(n, a, b, tmp)", + null + ], + "2": [ + "LIST" + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 4, + 3, + 2, + 1 + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/varargs.golden_py3 b/v3/example-code/varargs.golden_py3 new file mode 100644 index 000000000..d12be8967 --- /dev/null +++ b/v3/example-code/varargs.golden_py3 @@ -0,0 +1,1015 @@ +{ + "code": "# Demonstrate *args and **kwargs\ndef f1(a, b, *rest):\n pass\n\nf1(1, 2)\nf1(1, 2, 3, 4, 5, 6, 7)\n\ndef f2(a, b, **kwrest):\n pass\n\nf2(1, 2, name='Bob', age=38)\n\ndef f3(a, b, *rest, **kwrest):\n pass\n\nf3(1, 2, 3, 4, name='Bob', age=38)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f1", + "ordered_varnames": [ + "a", + "b", + "rest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "2": [ + "TUPLE" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "f1", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f1_f2", + "ordered_varnames": [ + "a", + "b", + "rest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "3": [ + "TUPLE", + 3, + 4, + 5, + 6, + 7 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "f1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "f2", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "kwrest": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f2", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f2_f3", + "ordered_varnames": [ + "a", + "b", + "kwrest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "5": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f1", + "f2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "f3", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "a": 1, + "__return__": null, + "b": 2, + "rest": [ + "REF", + 8 + ], + "kwrest": [ + "REF", + 7 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f3", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f3_f4", + "ordered_varnames": [ + "a", + "b", + "rest", + "kwrest", + "__return__" + ] + } + ], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "8": [ + "TUPLE", + 3, + 4 + ], + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ], + "7": [ + "DICT", + [ + "age", + 38 + ], + [ + "name", + "Bob" + ] + ] + }, + "line": 14, + "event": "return" + }, + { + "ordered_globals": [ + "f1", + "f2", + "f3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f1": [ + "REF", + 1 + ], + "f2": [ + "REF", + 4 + ], + "f3": [ + "REF", + 6 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f1(a, b, *rest)", + null + ], + "4": [ + "FUNCTION", + "f2(a, b, **kwrest)", + null + ], + "6": [ + "FUNCTION", + "f3(a, b, *rest, **kwrest)", + null + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/example-code/wentworth_gcd.golden_py3 b/v3/example-code/wentworth_gcd.golden_py3 new file mode 100644 index 000000000..cc0273cb0 --- /dev/null +++ b/v3/example-code/wentworth_gcd.golden_py3 @@ -0,0 +1,3798 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef gcd(x, y, depth=1):\n '''\n Find the greatest common divisor of x, y\n Pre: x >= y, y >= 0, both x and y are int\n '''\n result = x # set provisional return value\n if y != 0:\n indent = \"**\" * depth\n print((\"%s About to recursively call gcd(%d, %d)\" % (indent, y, x%y)))\n result = gcd(y, x % y, depth+1)\n print((\"%s result is %d\" % (indent, result)))\n return result\n\ndef main():\n m = 77\n n = 28\n print((\"Finding gcd(%d, %d)\" % (m,n)))\n g = gcd(m, n)\n print(('Greatest common divisor of %d, %d = %d'\n % (m, n, g)))\n\nmain()\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 25, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 17, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 21 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "y": 0, + "x": 7, + "depth": 4, + "result": 7, + "__return__": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f5", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": 7, + "x": 21, + "depth": 3, + "indent": "******", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "indent": "******", + "__return__": 7, + "depth": 3, + "result": 7, + "y": 7, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f4", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "y": 21, + "x": 28, + "depth": 2, + "indent": "****", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 77 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "indent": "****", + "__return__": 7, + "depth": 2, + "result": 7, + "y": 21, + "x": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f3", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 28, + "x": 77, + "depth": 1, + "indent": "**", + "result": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "gcd", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "n": 28 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "indent": "**", + "__return__": 7, + "depth": 1, + "result": 7, + "y": 28, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gcd", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gcd_f2", + "ordered_varnames": [ + "x", + "y", + "depth", + "result", + "indent", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\nGreatest common divisor of 77, 28 = 7\n", + "func_name": "main", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "m": 77, + "g": 7, + "n": 28 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "main", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "main_f1", + "ordered_varnames": [ + "m", + "n", + "g", + "__return__" + ] + } + ], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 23, + "event": "return" + }, + { + "ordered_globals": [ + "gcd", + "main" + ], + "stdout": "Finding gcd(77, 28)\n** About to recursively call gcd(28, 21)\n**** About to recursively call gcd(21, 7)\n****** About to recursively call gcd(7, 0)\n****** result is 7\n**** result is 7\n** result is 7\nGreatest common divisor of 77, 28 = 7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "main": [ + "REF", + 2 + ], + "gcd": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gcd(x, y, depth)", + null + ], + "2": [ + "FUNCTION", + "main()", + null + ] + }, + "line": 25, + "event": "return" + } + ] +} diff --git a/v3/example-code/wentworth_sumList.golden_py3 b/v3/example-code/wentworth_sumList.golden_py3 new file mode 100644 index 000000000..8809705d3 --- /dev/null +++ b/v3/example-code/wentworth_sumList.golden_py3 @@ -0,0 +1,4520 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\ndef sumList(xs):\n '''\n Sum a list that can contain nested lists.\n Precondition: All leaf elements are numbers.\n '''\n sum = 0\n for e in xs:\n if type(e) is list:\n print((\"Calling sumList(%s) recursively\" % e))\n v = sumList(e)\n print((\"sumList(%s) returned %s\" % (e, v)))\n sum += v\n else:\n sum += e\n return sum\n\n\ntestData = [10, [20, 30, [40], 50], 60]\nprint((\"Calling sumList(%s)\" % testData))\nresult = sumList(testData)\nprint((\"Final sum of all numbers in initial list is %s\" % result))\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 0, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 0, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 20 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 20, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": 30 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 0, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 40, + "xs": [ + "REF", + 4 + ], + "sum": 40, + "e": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f3", + "ordered_varnames": [ + "xs", + "sum", + "e", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 50, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": [ + "REF", + 4 + ], + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 90, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 140, + "xs": [ + "REF", + 3 + ], + "sum": 140, + "e": 50, + "v": 40 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f2", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 10, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": [ + "REF", + 3 + ], + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 150, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "sumList", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 210, + "xs": [ + "REF", + 2 + ], + "sum": 210, + "e": 60, + "v": 140 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumList", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumList_f1", + "ordered_varnames": [ + "xs", + "sum", + "e", + "v", + "__return__" + ] + } + ], + "globals": { + "testData": [ + "REF", + 2 + ], + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 18, + "event": "return" + }, + { + "ordered_globals": [ + "sumList", + "testData", + "result" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "result": 210, + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "sumList", + "testData", + "result" + ], + "stdout": "Calling sumList([10, [20, 30, [40], 50], 60])\nCalling sumList([20, 30, [40], 50]) recursively\nCalling sumList([40]) recursively\nsumList([40]) returned 40\nsumList([20, 30, [40], 50]) returned 140\nFinal sum of all numbers in initial list is 210\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "testData": [ + "REF", + 2 + ], + "result": 210, + "sumList": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "sumList(xs)", + null + ], + "2": [ + "LIST", + 10, + [ + "REF", + 3 + ], + 60 + ], + "3": [ + "LIST", + 20, + 30, + [ + "REF", + 4 + ], + 50 + ], + "4": [ + "LIST", + 40 + ] + }, + "line": 24, + "event": "return" + } + ] +} diff --git a/v3/example-code/wentworth_try_finally.golden_py3 b/v3/example-code/wentworth_try_finally.golden_py3 new file mode 100644 index 000000000..881592050 --- /dev/null +++ b/v3/example-code/wentworth_try_finally.golden_py3 @@ -0,0 +1,2823 @@ +{ + "code": "# Tutorial code from Prof. Peter Wentworth\n# Rhodes University, South Africa (http://www.ru.ac.za/)\n\n# Demonstrate recursion that throws an exception\n# at its base case, and the tracing of try ... finally.\n#\n# How many \"survived!\" messages will be printed???\n\ndef f(n):\n try:\n x = 10 / n\n print(\"x is \" + str(x))\n f(n-1)\n print(\"survived!\")\n finally:\n print(\"Bye from f where n = \" + str(n))\n\nf(4)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 11, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null, + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f5", + "ordered_varnames": [ + "n", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 10.000, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": null, + "x": 10.000, + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f4", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 5.000, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "x": 5.000, + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f3", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "x": 3.333, + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f2", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 13, + "event": "exception" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\nBye from f where n = 4\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "x": 2.500, + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "n", + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 16, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "x is 2.5\nx is 3.3333333333333335\nx is 5.0\nx is 10.0\nBye from f where n = 0\nBye from f where n = 1\nBye from f where n = 2\nBye from f where n = 3\nBye from f where n = 4\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(n)", + null + ] + }, + "line": 18, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/caught_exception_1.golden_py3 b/v3/tests/backend-tests/caught_exception_1.golden_py3 new file mode 100644 index 000000000..b9d796a10 --- /dev/null +++ b/v3/tests/backend-tests/caught_exception_1.golden_py3 @@ -0,0 +1,66 @@ +{ + "code": "try:\n x = 1 / 0\nexcept:\n print(\"DIVIDE BY ZERO\")\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "exception" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/caught_exception_2.golden_py3 b/v3/tests/backend-tests/caught_exception_2.golden_py3 new file mode 100644 index 000000000..c0fb9edc3 --- /dev/null +++ b/v3/tests/backend-tests/caught_exception_2.golden_py3 @@ -0,0 +1,77 @@ +{ + "code": "# caught exception:\ntry:\n x = 1 / 0\nexcept:\n print(\"DIVIDE BY ZERO\")\n\n\n# uncaught:\nprint(y)\n\nprint(\"should not reach here\")\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "exception" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "DIVIDE BY ZERO\n", + "exception_msg": "NameError: name 'y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 9, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/circ_ref.golden_py3 b/v3/tests/backend-tests/circ_ref.golden_py3 new file mode 100644 index 000000000..ea8bc5c65 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref.golden_py3 @@ -0,0 +1,65 @@ +{ + "code": "# true circular reference\n\nx = [1, 2]\nx.append(x)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + [ + "REF", + 1 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/circ_ref_2.golden_py3 b/v3/tests/backend-tests/circ_ref_2.golden_py3 new file mode 100644 index 000000000..c1fb56894 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref_2.golden_py3 @@ -0,0 +1,116 @@ +{ + "code": "# true indirect circular reference\n\nx = [1, 2]\ny = [3, 4, x]\nx.append(y)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ], + "2": [ + "LIST", + 3, + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + [ + "REF", + 2 + ] + ], + "2": [ + "LIST", + 3, + 4, + [ + "REF", + 1 + ] + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/circ_ref_fake.golden_py3 b/v3/tests/backend-tests/circ_ref_fake.golden_py3 new file mode 100644 index 000000000..11e8e7d50 --- /dev/null +++ b/v3/tests/backend-tests/circ_ref_fake.golden_py3 @@ -0,0 +1,168 @@ +{ + "code": "# not a true circular reference\n\na = [10, 20, 30]\nb = a\nc = [10, 20, 30]\nd = (a, b, c)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "b": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "c": [ + "REF", + 2 + ], + "b": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "a", + "b", + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ], + "c": [ + "REF", + 2 + ], + "b": [ + "REF", + 1 + ], + "d": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "LIST", + 10, + 20, + 30 + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "TUPLE", + [ + "REF", + 1 + ], + [ + "REF", + 1 + ], + [ + "REF", + 2 + ] + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/class_test.golden_py3 b/v3/tests/backend-tests/class_test.golden_py3 new file mode 100644 index 000000000..5d77aed91 --- /dev/null +++ b/v3/tests/backend-tests/class_test.golden_py3 @@ -0,0 +1,2671 @@ +{ + "code": "class Point:\n def __init__(self, x, y):\n self.x = x\n self.y = y\n \n def __str__(self):\n return \"(%d, %d)\" % (self.x, self.y)\n\np = Point(1, 2)\nprint(p)\np2 = Point(3, -4)\nprint(p2)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p", + "ordered_varnames": [ + "__init__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Point", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "Point", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "self": [ + "REF", + 5 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": "(1, 2)", + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f3", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "x", + "y" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p" + ], + "stdout": "(1, 2)\n", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "y": -4, + "x": 3, + "self": [ + "REF", + 6 + ], + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f4", + "ordered_varnames": [ + "self", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f5", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f5", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n", + "func_name": "__str__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": "(3, -4)", + "self": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__str__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__str___f5", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "Point", + "p", + "p2" + ], + "stdout": "(1, 2)\n(3, -4)\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "__str__": [ + "REF", + 3 + ], + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "Point", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "Point_f1_p_z", + "ordered_varnames": [ + "__init__", + "__str__", + "__return__" + ] + } + ], + "globals": { + "p2": [ + "REF", + 6 + ], + "p": [ + "REF", + 5 + ], + "Point": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "__str__", + [ + "REF", + 3 + ] + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self, x, y)", + 1 + ], + "3": [ + "FUNCTION", + "__str__(self)", + 1 + ], + "4": [ + "CLASS", + "Point", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "__str__", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "Point", + [ + "x", + 1 + ], + [ + "y", + 2 + ] + ], + "6": [ + "INSTANCE", + "Point", + [ + "x", + 3 + ], + [ + "y", + -4 + ] + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/class_test_2.golden_py3 b/v3/tests/backend-tests/class_test_2.golden_py3 new file mode 100644 index 000000000..4b69e54da --- /dev/null +++ b/v3/tests/backend-tests/class_test_2.golden_py3 @@ -0,0 +1,297 @@ +{ + "code": "class Outer():\n pass\n\no = Outer()\no.a = 5\no.b = \"Hi\"\nprint(o)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Outer_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Outer_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Outer_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Outer", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Outer", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Outer_f1", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "Outer" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ], + "o": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ], + "3": [ + "INSTANCE", + "Outer" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ], + "o": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ], + "3": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ], + "o": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ], + "3": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ], + [ + "b", + "Hi" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Outer", + "o" + ], + "stdout": "<__main__.Outer object at 0xADDR>\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Outer": [ + "REF", + 2 + ], + "o": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Outer", + [] + ], + "3": [ + "INSTANCE", + "Outer", + [ + "a", + 5 + ], + [ + "b", + "Hi" + ] + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/class_test_3.golden_py3 b/v3/tests/backend-tests/class_test_3.golden_py3 new file mode 100644 index 000000000..81a87f39f --- /dev/null +++ b/v3/tests/backend-tests/class_test_3.golden_py3 @@ -0,0 +1,673 @@ +{ + "code": "class Staff601:\n course = '6.01'\n building = 34\n room = 501\n\npat = Staff601()\nprint(pat.course)\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint(pat.building)\npat.building = 32\nprint(pat.building)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "course" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "course", + "6.01" + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "course", + "6.01" + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "Staff601", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "building": 34, + "course": "6.01", + "room": 501, + "__return__": [ + "REF", + 1 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "Staff601", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "Staff601_f1", + "ordered_varnames": [ + "building", + "course", + "room", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "building", + 34 + ], + [ + "room", + 501 + ], + [ + "course", + "6.01" + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "Staff601" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "name", + "Pat" + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "Staff601", + "pat" + ], + "stdout": "6.01\n34\n32\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "Staff601": [ + "REF", + 2 + ], + "pat": [ + "REF", + 3 + ] + }, + "heap": { + "2": [ + "CLASS", + "Staff601", + [], + [ + "building", + 34 + ], + [ + "course", + "6.01" + ], + [ + "room", + 501 + ] + ], + "3": [ + "INSTANCE", + "Staff601", + [ + "age", + 60 + ], + [ + "building", + 32 + ], + [ + "name", + "Pat" + ], + [ + "role", + "Professor" + ] + ] + }, + "line": 15, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/closure-shadow-same-name.golden_py3 b/v3/tests/backend-tests/closure-shadow-same-name.golden_py3 new file mode 100644 index 000000000..5f17e5c8b --- /dev/null +++ b/v3/tests/backend-tests/closure-shadow-same-name.golden_py3 @@ -0,0 +1,505 @@ +{ + "code": "# some of the params in f and g have identical names AND values,\n# so make sure they're all displayed properly\ndef f(x, y, z):\n def g(x, y):\n return x\n return g(x, y)\n\nf(1, 2, 3)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y", + "z" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "z", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 1, + "z": 3, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "y", + "z", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y, z)", + null + ], + "2": [ + "FUNCTION", + "g(x, y)", + 1 + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/data_test.golden_py3 b/v3/tests/backend-tests/data_test.golden_py3 new file mode 100644 index 000000000..68e3251eb --- /dev/null +++ b/v3/tests/backend-tests/data_test.golden_py3 @@ -0,0 +1,213 @@ +{ + "code": "x = ('hello', 'world', 1, 2, 3, 'goodbye')\ny = list(x)\nz = set(x)\nw = {\"joe\" : 5, \"mindy\" : 6, \"jack\" : 7}\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "3": [ + "SET", + 1, + 2, + 3, + "goodbye", + "world", + "hello" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "w" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 3 + ], + "w": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "TUPLE", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "2": [ + "LIST", + "hello", + "world", + 1, + 2, + 3, + "goodbye" + ], + "3": [ + "SET", + 1, + 2, + 3, + "goodbye", + "world", + "hello" + ], + "4": [ + "DICT", + [ + "mindy", + 6 + ], + [ + "joe", + 5 + ], + [ + "jack", + 7 + ] + ] + }, + "line": 4, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/dict_error.golden_py3 b/v3/tests/backend-tests/dict_error.golden_py3 new file mode 100644 index 000000000..1d65cbe41 --- /dev/null +++ b/v3/tests/backend-tests/dict_error.golden_py3 @@ -0,0 +1,207 @@ +{ + "code": "def foo():\n local_y[('tup', 'le')] = set([1, 2, 3])\n\nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "exception_msg": "NameError: global name 'local_y' is not defined", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "exception" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "foo" + ], + "stdout": "", + "exception_msg": "NameError: global name 'local_y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "foo": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/dict_test.golden_py3 b/v3/tests/backend-tests/dict_test.golden_py3 new file mode 100644 index 000000000..cb382cbf5 --- /dev/null +++ b/v3/tests/backend-tests/dict_test.golden_py3 @@ -0,0 +1,730 @@ +{ + "code": "x = {1 : 2}\nx[('tup', 'le')] = set([1, 2, 3])\n\ndef foo():\n local_x = {1 : 2}\n local_y = {}\n local_y[('tup', 'le')] = set([1, 2, 3])\n print(\"hello\", list(local_y.values()))\n\nfoo()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ] + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT" + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT", + [ + [ + "REF", + 7 + ], + [ + "REF", + 8 + ] + ] + ], + "7": [ + "TUPLE", + "tup", + "le" + ], + "8": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "hello [{1, 2, 3}]\n", + "func_name": "foo", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "local_y": [ + "REF", + 6 + ], + "local_x": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "foo", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "foo_f1", + "ordered_varnames": [ + "local_x", + "local_y", + "__return__" + ] + } + ], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ], + "5": [ + "DICT", + [ + 1, + 2 + ] + ], + "6": [ + "DICT", + [ + [ + "REF", + 7 + ], + [ + "REF", + 8 + ] + ] + ], + "7": [ + "TUPLE", + "tup", + "le" + ], + "8": [ + "SET", + 1, + 2, + 3 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "x", + "foo" + ], + "stdout": "hello [{1, 2, 3}]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "foo": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + 1, + 2 + ], + [ + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + ], + "2": [ + "TUPLE", + "tup", + "le" + ], + "3": [ + "SET", + 1, + 2, + 3 + ], + "4": [ + "FUNCTION", + "foo()", + null + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/exec_test.golden_py3 b/v3/tests/backend-tests/exec_test.golden_py3 new file mode 100644 index 000000000..f8b44bb26 --- /dev/null +++ b/v3/tests/backend-tests/exec_test.golden_py3 @@ -0,0 +1,26 @@ +{ + "code": "exec(\"import os; os.system('echo security breach')\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "NameError: name 'exec' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/func_exception.golden_py3 b/v3/tests/backend-tests/func_exception.golden_py3 new file mode 100644 index 000000000..537097da9 --- /dev/null +++ b/v3/tests/backend-tests/func_exception.golden_py3 @@ -0,0 +1,270 @@ +{ + "code": "def g(x,y):\n print(\"In g\")\n ans = x/y\n return ans\n \ng(5, 0)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "exception" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 0, + "x": 5, + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "g_f1", + "ordered_varnames": [ + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "g" + ], + "stdout": "In g\n", + "exception_msg": "ZeroDivisionError: division by zero", + "func_name": "", + "stack_to_render": [], + "globals": { + "g": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "g(x, y)", + null + ] + }, + "line": 6, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/generator_test.golden_py3 b/v3/tests/backend-tests/generator_test.golden_py3 new file mode 100644 index 000000000..9a61882ef --- /dev/null +++ b/v3/tests/backend-tests/generator_test.golden_py3 @@ -0,0 +1,100 @@ +{ + "code": "x = (e for e in range(10))\ny = x\nz = (e for e in range(10))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 1 + ], + "x": [ + "REF", + 1 + ], + "z": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "generator" + ], + "2": [ + "INSTANCE", + "generator" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/generator_use_test.golden_py3 b/v3/tests/backend-tests/generator_use_test.golden_py3 new file mode 100644 index 000000000..5bb2c43a8 --- /dev/null +++ b/v3/tests/backend-tests/generator_use_test.golden_py3 @@ -0,0 +1,10772 @@ +{ + "code": "def gen_odds():\n x = 1\n while True:\n yield x\n x += 2\n\nfor i in gen_odds():\n print(i)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds" + ], + "stdout": "", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f1", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "__return__": 3, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 1, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 3, + "encoded_locals": { + "__return__": 5, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 3, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 4, + "encoded_locals": { + "__return__": 7, + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 5, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 7 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 5, + "encoded_locals": { + "__return__": 9, + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 7, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 9 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 6, + "encoded_locals": { + "__return__": 11, + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 9, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 11 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 7, + "encoded_locals": { + "__return__": 13, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 11, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 8, + "encoded_locals": { + "__return__": 15, + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 13, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 9, + "encoded_locals": { + "__return__": 17, + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 15, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 17 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 10, + "encoded_locals": { + "__return__": 19, + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 17, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 19 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 11, + "encoded_locals": { + "__return__": 21, + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 19, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 21 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 12, + "encoded_locals": { + "__return__": 23, + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 21, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 23 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 13, + "encoded_locals": { + "__return__": 25, + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f13", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 23, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 25 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 14, + "encoded_locals": { + "__return__": 27, + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f14", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 25, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 27 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 15, + "encoded_locals": { + "__return__": 29, + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f15", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 27, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 29 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 16, + "encoded_locals": { + "__return__": 31, + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f16", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 29, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 31 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 17, + "encoded_locals": { + "__return__": 33, + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f17", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 31, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 33 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 18, + "encoded_locals": { + "__return__": 35, + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f18", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 33, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 35 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 19, + "encoded_locals": { + "__return__": 37, + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f19", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 35, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 37 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 20, + "encoded_locals": { + "__return__": 39, + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f20", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 37, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 39 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 21, + "encoded_locals": { + "__return__": 41, + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f21", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 39, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 41 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 22, + "encoded_locals": { + "__return__": 43, + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f22", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 41, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 43 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 23, + "encoded_locals": { + "__return__": 45, + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f23", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 43, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 45 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 24, + "encoded_locals": { + "__return__": 47, + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f24", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 45, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 47 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 25, + "encoded_locals": { + "__return__": 49, + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f25", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 47, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 49 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 26, + "encoded_locals": { + "__return__": 51, + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f26", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 49, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 51 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 27, + "encoded_locals": { + "__return__": 53, + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f27", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 51, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 53 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 28, + "encoded_locals": { + "__return__": 55, + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f28", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 53, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 55 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 29, + "encoded_locals": { + "__return__": 57, + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f29", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 55, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 57 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 30, + "encoded_locals": { + "__return__": 59, + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f30", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 57, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 59 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 31, + "encoded_locals": { + "__return__": 61, + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f31", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 59, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 61 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 32, + "encoded_locals": { + "__return__": 63, + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f32", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 61, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 63 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 33, + "encoded_locals": { + "__return__": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f33", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 63, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 34, + "encoded_locals": { + "__return__": 67, + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f34", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 65, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 67 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 35, + "encoded_locals": { + "__return__": 69, + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f35", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 67, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 69 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 36, + "encoded_locals": { + "__return__": 71, + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f36", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 69, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 71 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 37, + "encoded_locals": { + "__return__": 73, + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f37", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 71, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 73 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 38, + "encoded_locals": { + "__return__": 75, + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f38", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 73, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 75 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 39, + "encoded_locals": { + "__return__": 77, + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f39", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 75, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 77 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 40, + "encoded_locals": { + "__return__": 79, + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f40", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 77, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 79 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 41, + "encoded_locals": { + "__return__": 81, + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f41", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 79, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 81 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 42, + "encoded_locals": { + "__return__": 83, + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f42", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 81, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 83 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 43, + "encoded_locals": { + "__return__": 85, + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f43", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 83, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 44, + "encoded_locals": { + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f44", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 44, + "encoded_locals": { + "x": 85 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f44", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 44, + "encoded_locals": { + "x": 87 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f44", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 44, + "encoded_locals": { + "__return__": 87, + "x": 87 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f44", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 85, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 45, + "encoded_locals": { + "x": 87 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f45", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 45, + "encoded_locals": { + "x": 87 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f45", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 45, + "encoded_locals": { + "x": 89 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f45", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 45, + "encoded_locals": { + "__return__": 89, + "x": 89 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f45", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 87, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 46, + "encoded_locals": { + "x": 89 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f46", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 46, + "encoded_locals": { + "x": 89 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f46", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 46, + "encoded_locals": { + "x": 91 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f46", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 46, + "encoded_locals": { + "__return__": 91, + "x": 91 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f46", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 89, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 47, + "encoded_locals": { + "x": 91 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f47", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 47, + "encoded_locals": { + "x": 91 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f47", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 47, + "encoded_locals": { + "x": 93 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f47", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 47, + "encoded_locals": { + "__return__": 93, + "x": 93 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f47", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 91, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 48, + "encoded_locals": { + "x": 93 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f48", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 48, + "encoded_locals": { + "x": 93 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f48", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 48, + "encoded_locals": { + "x": 95 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f48", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 48, + "encoded_locals": { + "__return__": 95, + "x": 95 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f48", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 93, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 49, + "encoded_locals": { + "x": 95 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f49", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 49, + "encoded_locals": { + "x": 95 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f49", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 49, + "encoded_locals": { + "x": 97 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f49", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 49, + "encoded_locals": { + "__return__": 97, + "x": 97 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f49", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "i": 95, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 50, + "encoded_locals": { + "x": 97 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f50", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 50, + "encoded_locals": { + "x": 97 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f50", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "gen_odds", + "i" + ], + "stdout": "1\n3\n5\n7\n9\n11\n13\n15\n17\n19\n21\n23\n25\n27\n29\n31\n33\n35\n37\n39\n41\n43\n45\n47\n49\n51\n53\n55\n57\n59\n61\n63\n65\n67\n69\n71\n73\n75\n77\n79\n81\n83\n85\n87\n89\n91\n93\n95\n97\n", + "func_name": "gen_odds", + "stack_to_render": [ + { + "frame_id": 50, + "encoded_locals": { + "x": 99 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "gen_odds", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "gen_odds_f50", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "i": 97, + "gen_odds": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "gen_odds()", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/import_error.golden_py3 b/v3/tests/backend-tests/import_error.golden_py3 new file mode 100644 index 000000000..05a889187 --- /dev/null +++ b/v3/tests/backend-tests/import_error.golden_py3 @@ -0,0 +1,29 @@ +{ + "code": "# should NOT allow for any imports\nimport os\n\nos.system(\"echo security breach\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "return" + }, + { + "exception_msg": "ImportError: os not supported", + "event": "uncaught_exception" + } + ] +} diff --git a/v3/tests/backend-tests/infinite_loop.golden_py3 b/v3/tests/backend-tests/infinite_loop.golden_py3 new file mode 100644 index 000000000..ed5d62820 --- /dev/null +++ b/v3/tests/backend-tests/infinite_loop.golden_py3 @@ -0,0 +1,7560 @@ +{ + "code": "# Fibonacci!!!\n\narr = [1, 1]\n\nprint(arr[0])\n\nwhile True:\n print(arr[-1])\n tmp = sum(arr)\n arr.append(tmp)\n del arr[0]\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 1, + 2 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2, + 3, + 5 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3, + 5, + 8 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 8, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5, + 8, + 13 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 13, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 8, + 13, + 21 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 21, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 13, + 21, + 34 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 34, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 21, + 34, + 55 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 55, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 34, + 55, + 89 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 89, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 55, + 89, + 144 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 144, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 89, + 144, + 233 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 233, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 144, + 233, + 377 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 377, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 233, + 377, + 610 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 610, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 377, + 610, + 987 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 987, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 610, + 987, + 1597 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1597, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 987, + 1597, + 2584 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2584, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1597, + 2584, + 4181 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4181, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2584, + 4181, + 6765 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6765, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4181, + 6765, + 10946 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10946, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6765, + 10946, + 17711 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17711, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10946, + 17711, + 28657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 28657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17711, + 28657, + 46368 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 46368, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 28657, + 46368, + 75025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 75025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 46368, + 75025, + 121393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 121393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 75025, + 121393, + 196418 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 196418, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 121393, + 196418, + 317811 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 317811, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 196418, + 317811, + 514229 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 514229, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 317811, + 514229, + 832040 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 832040, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 514229, + 832040, + 1346269 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1346269, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 832040, + 1346269, + 2178309 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2178309, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1346269, + 2178309, + 3524578 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3524578, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2178309, + 3524578, + 5702887 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 5702887, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 3524578, + 5702887, + 9227465 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 9227465, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 5702887, + 9227465, + 14930352 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 14930352, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 9227465, + 14930352, + 24157817 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 24157817, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 14930352, + 24157817, + 39088169 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 39088169, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 24157817, + 39088169, + 63245986 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 63245986, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 39088169, + 63245986, + 102334155 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 102334155, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 63245986, + 102334155, + 165580141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 165580141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 102334155, + 165580141, + 267914296 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 267914296, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 165580141, + 267914296, + 433494437 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 433494437, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 267914296, + 433494437, + 701408733 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 701408733, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 433494437, + 701408733, + 1134903170 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1134903170, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 701408733, + 1134903170, + 1836311903 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1836311903, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1134903170, + 1836311903, + 2971215073 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2971215073, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1836311903, + 2971215073, + 4807526976 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4807526976, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2971215073, + 4807526976, + 7778742049 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 7778742049, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4807526976, + 7778742049, + 12586269025 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 12586269025, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 7778742049, + 12586269025, + 20365011074 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 20365011074, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 12586269025, + 20365011074, + 32951280099 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 32951280099, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 20365011074, + 32951280099, + 53316291173 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 53316291173, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 32951280099, + 53316291173, + 86267571272 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 86267571272, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 53316291173, + 86267571272, + 139583862445 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 139583862445, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 86267571272, + 139583862445, + 225851433717 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 225851433717, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 139583862445, + 225851433717, + 365435296162 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 365435296162, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 225851433717, + 365435296162, + 591286729879 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 591286729879, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 365435296162, + 591286729879, + 956722026041 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 956722026041, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 591286729879, + 956722026041, + 1548008755920 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1548008755920, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 956722026041, + 1548008755920, + 2504730781961 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2504730781961, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1548008755920, + 2504730781961, + 4052739537881 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 4052739537881, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2504730781961, + 4052739537881, + 6557470319842 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 6557470319842, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 4052739537881, + 6557470319842, + 10610209857723 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 10610209857723, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 6557470319842, + 10610209857723, + 17167680177565 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 17167680177565, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 10610209857723, + 17167680177565, + 27777890035288 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 27777890035288, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 17167680177565, + 27777890035288, + 44945570212853 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 44945570212853, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 27777890035288, + 44945570212853, + 72723460248141 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 72723460248141, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 44945570212853, + 72723460248141, + 117669030460994 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 117669030460994, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 72723460248141, + 117669030460994, + 190392490709135 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 190392490709135, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 117669030460994, + 190392490709135, + 308061521170129 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 308061521170129, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 190392490709135, + 308061521170129, + 498454011879264 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 498454011879264, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 308061521170129, + 498454011879264, + 806515533049393 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 806515533049393, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 498454011879264, + 806515533049393, + 1304969544928657 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 1304969544928657, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 806515533049393, + 1304969544928657, + 2111485077978050 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 2111485077978050, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1304969544928657, + 2111485077978050, + 3416454622906707 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "arr", + "tmp" + ], + "stdout": "1\n1\n2\n3\n5\n8\n13\n21\n34\n55\n89\n144\n233\n377\n610\n987\n1597\n2584\n4181\n6765\n10946\n17711\n28657\n46368\n75025\n121393\n196418\n317811\n514229\n832040\n1346269\n2178309\n3524578\n5702887\n9227465\n14930352\n24157817\n39088169\n63245986\n102334155\n165580141\n267914296\n433494437\n701408733\n1134903170\n1836311903\n2971215073\n4807526976\n7778742049\n12586269025\n20365011074\n32951280099\n53316291173\n86267571272\n139583862445\n225851433717\n365435296162\n591286729879\n956722026041\n1548008755920\n2504730781961\n4052739537881\n6557470319842\n10610209857723\n17167680177565\n27777890035288\n44945570212853\n72723460248141\n117669030460994\n190392490709135\n308061521170129\n498454011879264\n806515533049393\n1304969544928657\n2111485077978050\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "tmp": 3416454622906707, + "arr": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 2111485077978050, + 3416454622906707 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/infinite_loop_one_liner.golden_py3 b/v3/tests/backend-tests/infinite_loop_one_liner.golden_py3 new file mode 100644 index 000000000..e28f84304 --- /dev/null +++ b/v3/tests/backend-tests/infinite_loop_one_liner.golden_py3 @@ -0,0 +1,3009 @@ +{ + "code": "while 1:\n print(\"hahahaha\")\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "hahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\nhahahaha\n", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "exception_msg": "(stopped after 300 steps to prevent possible infinite loop)", + "event": "instruction_limit_reached" + } + ] +} diff --git a/v3/tests/backend-tests/john-compose.golden_py3 b/v3/tests/backend-tests/john-compose.golden_py3 new file mode 100644 index 000000000..9acb62b04 --- /dev/null +++ b/v3/tests/backend-tests/john-compose.golden_py3 @@ -0,0 +1,1262 @@ +{ + "code": "def compose1(f, g):\n return lambda x: f(g(x))\n\nadd_one_and_square = compose1(lambda x: x * x, lambda x: x + 1)\nresult = add_one_and_square(12)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1", + "ordered_varnames": [ + "f", + "g" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1", + "ordered_varnames": [ + "f", + "g" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1" + ], + "stdout": "", + "func_name": "compose1", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "compose1", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 13, + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 12 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f2", + "ordered_varnames": [ + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 169, + "x": 13 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 169, + "x": 12 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "compose1", + "add_one_and_square", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "g": [ + "REF", + 2 + ], + "f": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "compose1", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "compose1_f1_p_z", + "ordered_varnames": [ + "f", + "g", + "__return__" + ] + } + ], + "globals": { + "compose1": [ + "REF", + 1 + ], + "add_one_and_square": [ + "REF", + 4 + ], + "result": 169 + }, + "heap": { + "1": [ + "FUNCTION", + "compose1(f, g)", + null + ], + "2": [ + "FUNCTION", + "(x)", + null + ], + "3": [ + "FUNCTION", + "(x)", + null + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-import-test.golden_py3 b/v3/tests/backend-tests/john-import-test.golden_py3 new file mode 100644 index 000000000..332fa4b5e --- /dev/null +++ b/v3/tests/backend-tests/john-import-test.golden_py3 @@ -0,0 +1,282 @@ +{ + "code": "import math\nimport operator\nimport string\nimport collections\nimport re\nimport json\n\n# causes some errors in regression tests, but fine in GAE ...\n#import random\n#import datetime\n#import functools\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "math" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "string": [ + "REF", + 3 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ], + "3": [ + "INSTANCE", + "module" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string", + "collections" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "collections": [ + "REF", + 4 + ], + "string": [ + "REF", + 3 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ], + "3": [ + "INSTANCE", + "module" + ], + "4": [ + "INSTANCE", + "module" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string", + "collections", + "re" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 2 + ], + "re": [ + "REF", + 5 + ], + "collections": [ + "REF", + 4 + ], + "string": [ + "REF", + 3 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ], + "3": [ + "INSTANCE", + "module" + ], + "4": [ + "INSTANCE", + "module" + ], + "5": [ + "INSTANCE", + "module" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "math", + "operator", + "string", + "collections", + "re", + "json" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "string": [ + "REF", + 3 + ], + "re": [ + "REF", + 5 + ], + "json": [ + "REF", + 6 + ], + "collections": [ + "REF", + 4 + ], + "operator": [ + "REF", + 2 + ], + "math": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "INSTANCE", + "module" + ], + "3": [ + "INSTANCE", + "module" + ], + "4": [ + "INSTANCE", + "module" + ], + "5": [ + "INSTANCE", + "module" + ], + "6": [ + "INSTANCE", + "module" + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/lambda_1.golden_py3 b/v3/tests/backend-tests/lambda_1.golden_py3 new file mode 100644 index 000000000..947c90d9d --- /dev/null +++ b/v3/tests/backend-tests/lambda_1.golden_py3 @@ -0,0 +1,5493 @@ +{ + "code": "def summation(low, high, f, next):\n s = 0\n x = low\n while x <= high:\n s = s + f(x)\n x = next(x)\n return s\n\ndef sumsquares(low, high):\n return summation(low, high, lambda x: x**2, lambda x: x+1)\n\nprint(sumsquares(1, 5))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1", + "ordered_varnames": [ + "low", + "high" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "high": 5, + "s": 0, + "f": [ + "REF", + 4 + ], + "low": 1, + "next": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 0, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 1, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": 4, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 3, + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 5, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 9, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f8", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 4, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f8", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f9", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 14, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": 16, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f9", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f10", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5, + "x": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f10", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f11", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 30, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": 25, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f11", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f12", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": 6, + "x": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f12", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "summation", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "f": [ + "REF", + 4 + ], + "next": [ + "REF", + 3 + ], + "high": 5, + "s": 55, + "low": 1, + "__return__": 55, + "x": 6 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "summation", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "summation_f2", + "ordered_varnames": [ + "low", + "high", + "f", + "next", + "s", + "x", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ], + "3": [ + "FUNCTION", + "(x)", + 1 + ], + "4": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "", + "func_name": "sumsquares", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "__return__": 55, + "low": 1 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "summation", + "sumsquares" + ], + "stdout": "55\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "high": 5, + "__return__": 55, + "low": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "sumsquares", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "sumsquares_f1_p_z", + "ordered_varnames": [ + "low", + "high", + "__return__" + ] + } + ], + "globals": { + "summation": [ + "REF", + 1 + ], + "sumsquares": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "summation(low, high, f, next)", + null + ], + "2": [ + "FUNCTION", + "sumsquares(low, high)", + null + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/ling-scheme-1.golden_py3 b/v3/tests/backend-tests/ling-scheme-1.golden_py3 new file mode 100644 index 000000000..a775366a0 --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-1.golden_py3 @@ -0,0 +1,4020 @@ +{ + "code": "def repeat(f, n):\n if n == 0:\n return []\n else:\n return [f()] + repeat(f, n - 1)\n\nrepeat(lambda : 5, 5)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f8", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f10", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "REF", + 3 + ], + "f": [ + "REF", + 2 + ], + "n": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f11", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "3": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "f": [ + "REF", + 2 + ], + "n": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f9", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "4": [ + "LIST", + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 5 + ], + "f": [ + "REF", + 2 + ], + "n": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f7", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "5": [ + "LIST", + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "f": [ + "REF", + 2 + ], + "n": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f5", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "6": [ + "LIST", + 5, + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "f": [ + "REF", + 2 + ], + "n": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f3", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ], + "7": [ + "LIST", + 5, + 5, + 5, + 5 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "repeat", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 8 + ], + "f": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "repeat", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "repeat_f1", + "ordered_varnames": [ + "f", + "n", + "__return__" + ] + } + ], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "8": [ + "LIST", + 5, + 5, + 5, + 5, + 5 + ], + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ], + "2": [ + "FUNCTION", + "()", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "repeat" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "repeat": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "repeat(f, n)", + null + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/ling-scheme-2.golden_py3 b/v3/tests/backend-tests/ling-scheme-2.golden_py3 new file mode 100644 index 000000000..add7f461f --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-2.golden_py3 @@ -0,0 +1,3788 @@ +{ + "code": "def iota(n):\n def loop(acc, k):\n if k == n:\n return list(reversed(acc))\n else:\n return loop([k] + acc, k + 1)\n return loop([], 0)\n\nresult = iota(5)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "n": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1", + "ordered_varnames": [ + "n" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "k": 4 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "acc": [ + "REF", + 8 + ], + "__return__": [ + "REF", + 9 + ], + "k": 5 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f7", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "8": [ + "LIST", + 4, + 3, + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "k": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "acc": [ + "REF", + 7 + ], + "__return__": [ + "REF", + 9 + ], + "k": 4 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f6", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "7": [ + "LIST", + 3, + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "k": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "acc": [ + "REF", + 6 + ], + "__return__": [ + "REF", + 9 + ], + "k": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f5", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "6": [ + "LIST", + 2, + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "k": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "acc": [ + "REF", + 5 + ], + "__return__": [ + "REF", + 9 + ], + "k": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f4", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "iota(n)", + null + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "5": [ + "LIST", + 1, + 0 + ], + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "k": 0 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "acc": [ + "REF", + 4 + ], + "__return__": [ + "REF", + 9 + ], + "k": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f3", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "4": [ + "LIST", + 0 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "loop", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "acc": [ + "REF", + 3 + ], + "__return__": [ + "REF", + 9 + ], + "k": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "loop", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "loop_f2", + "ordered_varnames": [ + "acc", + "k", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "3": [ + "LIST" + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "iota" + ], + "stdout": "", + "func_name": "iota", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "iota", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p", + "ordered_varnames": [ + "n", + "loop", + "__return__" + ] + } + ], + "globals": { + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "iota", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "loop": [ + "REF", + 2 + ], + "n": 5 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "iota", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "iota_f1_p_z", + "ordered_varnames": [ + "n", + "loop", + "__return__" + ] + } + ], + "globals": { + "result": [ + "REF", + 9 + ], + "iota": [ + "REF", + 1 + ] + }, + "heap": { + "9": [ + "LIST", + 0, + 1, + 2, + 3, + 4 + ], + "2": [ + "FUNCTION", + "loop(acc, k)", + 1 + ], + "1": [ + "FUNCTION", + "iota(n)", + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/ling-scheme-3.golden_py3 b/v3/tests/backend-tests/ling-scheme-3.golden_py3 new file mode 100644 index 000000000..d9ef80599 --- /dev/null +++ b/v3/tests/backend-tests/ling-scheme-3.golden_py3 @@ -0,0 +1,8612 @@ +{ + "code": "def map(f, xs):\n if xs == []:\n return []\n else:\n return [f(xs[0])] + list(map(f, xs[1:]))\n\ndef append(xs, ys):\n if xs == []:\n return ys\n else:\n return [xs[0]] + append(xs[1:], ys)\n\ndef pairs(xs):\n if xs == []:\n return []\n elif xs[1:] == []:\n return []\n else:\n return append(map(lambda x: [xs[0], x], xs[1:]), pairs(xs[1:]))\n\nresult = pairs([1, 2, 3])\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "map" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": [ + "REF", + 7 + ], + "x": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "7": [ + "LIST", + 1, + 2 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": [ + "REF", + 9 + ], + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f5", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "9": [ + "LIST", + 1, + 3 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": [ + "REF", + 11 + ], + "xs": [ + "REF", + 10 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f6", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "10": [ + "LIST" + ], + "11": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": [ + "REF", + 12 + ], + "xs": [ + "REF", + 8 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f4", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "8": [ + "LIST", + 3 + ], + "9": [ + "LIST", + 1, + 3 + ], + "12": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 13 + ], + "xs": [ + "REF", + 5 + ], + "f": [ + "REF", + 6 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f2", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "5": [ + "LIST", + 2, + 3 + ], + "6": [ + "FUNCTION", + "(x)", + 1 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + "x", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 19, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "x": 3, + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + "x", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 9, + "encoded_locals": { + "__return__": [ + "REF", + 17 + ], + "x": 3, + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f9", + "ordered_varnames": [ + "x", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "17": [ + "LIST", + 2, + 3 + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "18": [ + "LIST" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "18": [ + "LIST" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "18": [ + "LIST" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs" + ] + }, + { + "frame_id": 10, + "encoded_locals": { + "__return__": [ + "REF", + 19 + ], + "xs": [ + "REF", + 18 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f10", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "18": [ + "LIST" + ], + "19": [ + "LIST" + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "map", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 8, + "encoded_locals": { + "__return__": [ + "REF", + 20 + ], + "xs": [ + "REF", + 15 + ], + "f": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "map", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "map_f8", + "ordered_varnames": [ + "f", + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "15": [ + "LIST", + 3 + ], + "16": [ + "FUNCTION", + "(x)", + 1 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 13, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 11, + "encoded_locals": { + "__return__": [ + "REF", + 22 + ], + "xs": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f11", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "21": [ + "LIST", + 3 + ], + "22": [ + "LIST" + ] + }, + "line": 17, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 13, + "encoded_locals": { + "__return__": [ + "REF", + 22 + ], + "xs": [ + "REF", + 23 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f13", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "23": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 12, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 20 + ], + "ys": [ + "REF", + 22 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f12", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "20": [ + "LIST", + [ + "REF", + 17 + ] + ], + "22": [ + "LIST" + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 14 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f7", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "14": [ + "LIST", + 2, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 16, + "encoded_locals": { + "__return__": [ + "REF", + 24 + ], + "xs": [ + "REF", + 26 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f16", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "26": [ + "LIST" + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys" + ] + }, + { + "frame_id": 15, + "encoded_locals": { + "__return__": [ + "REF", + 27 + ], + "xs": [ + "REF", + 25 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f15", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "25": [ + "LIST", + [ + "REF", + 9 + ] + ], + "27": [ + "LIST", + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "append", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs" + ] + }, + { + "frame_id": 14, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 13 + ], + "ys": [ + "REF", + 24 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "append", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "append_f14", + "ordered_varnames": [ + "xs", + "ys", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "13": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ] + ], + "17": [ + "LIST", + 2, + 3 + ], + "24": [ + "LIST", + [ + "REF", + 17 + ] + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 11, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs" + ], + "stdout": "", + "func_name": "pairs", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "pairs", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 19, + "event": "return" + }, + { + "ordered_globals": [ + "map", + "append", + "pairs", + "result" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 28 + ], + "xs": [ + "REF", + 4 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "pairs", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "pairs_f1_p_z", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "map": [ + "REF", + 1 + ], + "pairs": [ + "REF", + 3 + ], + "result": [ + "REF", + 28 + ], + "append": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "map(f, xs)", + null + ], + "2": [ + "FUNCTION", + "append(xs, ys)", + null + ], + "3": [ + "FUNCTION", + "pairs(xs)", + null + ], + "4": [ + "LIST", + 1, + 2, + 3 + ], + "7": [ + "LIST", + 1, + 2 + ], + "9": [ + "LIST", + 1, + 3 + ], + "17": [ + "LIST", + 2, + 3 + ], + "28": [ + "LIST", + [ + "REF", + 7 + ], + [ + "REF", + 9 + ], + [ + "REF", + 17 + ] + ] + }, + "line": 21, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_dict_test.golden_py3 b/v3/tests/backend-tests/list_dict_test.golden_py3 new file mode 100644 index 000000000..4baefb4f5 --- /dev/null +++ b/v3/tests/backend-tests/list_dict_test.golden_py3 @@ -0,0 +1,416 @@ +{ + "code": "x = {}\nl = ['hello', \"world\", 'goodbye']\nfor (i, e) in enumerate(l):\n x[e] = i\nprint(x)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ], + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": [ + "REF", + 1 + ], + "e": "hello", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT" + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": [ + "REF", + 1 + ], + "e": "hello", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 1 + ], + "e": "world", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": [ + "REF", + 1 + ], + "e": "world", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "l", + "i", + "e" + ], + "stdout": "{'world': 1, 'hello': 0, 'goodbye': 2}\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": [ + "REF", + 1 + ], + "e": "goodbye", + "l": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "world", + 1 + ], + [ + "hello", + 0 + ], + [ + "goodbye", + 2 + ] + ], + "2": [ + "LIST", + "hello", + "world", + "goodbye" + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_test.golden_py3 b/v3/tests/backend-tests/list_test.golden_py3 new file mode 100644 index 000000000..9d34156ff --- /dev/null +++ b/v3/tests/backend-tests/list_test.golden_py3 @@ -0,0 +1,48 @@ +{ + "code": "x = [1, 2, \"hello\", (3, 4)]\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "LIST", + 1, + 2, + "hello", + [ + "REF", + 2 + ] + ], + "2": [ + "TUPLE", + 3, + 4 + ] + }, + "line": 1, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/namedtuple.golden_py3 b/v3/tests/backend-tests/namedtuple.golden_py3 new file mode 100644 index 000000000..0815f8aa9 --- /dev/null +++ b/v3/tests/backend-tests/namedtuple.golden_py3 @@ -0,0 +1,10013 @@ +{ + "code": "from collections import namedtuple\n\nRestaurant = namedtuple('Restaurant', 'name cuisine phone dish price')\n\nR1 = Restaurant(\"Taillevent\", \"French\", \"343-3434\", \"Escargots\", 24.50)\nR2 = Restaurant(\"La Tour D'Argent\", \"French\", \"343-3344\", \"Ris de Veau\", 48.50)\nR3 = Restaurant(\"Pascal\", \"French\", \"333-4444\", \"Bouillabaisse\", 32.00)\nR4 = Restaurant(\"Thai Touch\", \"Thai\", \"444-3333\", \"Mee Krob\", 10.95)\nR5 = Restaurant(\"Thai Dishes\", \"Thai\", \"333-4433\", \"Paht Woon Sen\", 8.50)\nR6 = Restaurant(\"Thai Spoon\", \"Thai\", \"334-3344\", \"Mussamun\", 9.00)\nR7 = Restaurant(\"McDonald's\", \"Burgers\", \"333-4443\", \"Big Mac\", 3.95)\nR8 = Restaurant(\"Burger King\", \"Burgers\", \"444-3344\", \"Whopper\", 3.75)\nR9 = Restaurant(\"Wahoo's\", \"Fish Tacos\", \"443-4443\", \"Mahi Mahi Burrito\", 7.50)\nR10 = Restaurant(\"In-N-Out Burger\", \"Burgers\", \"434-3344\", \"Cheeseburger\", 2.50)\nR11 = Restaurant(\"The Shack\", \"Burgers\", \"333-3334\", \"Hot Link Burger\", 4.50)\nR12 = Restaurant(\"Gina's\", \"Pizza\", \"334-4433\", \"Combo Pizza\", 12.95)\nR13 = Restaurant(\"Peacock, Room\", \"Indian\", \"333-4443\", \"Rogan Josh\", 12.50)\nR14 = Restaurant(\"Gaylord\", \"Indian\", \"333-3433\", \"Tandoori Chicken\", 13.50)\nR15 = Restaurant(\"Mr. Chow\", \"Chinese\", \"222-3333\", \"Peking Duck\", 24.50)\nR16 = Restaurant(\"Chez Panisse\", \"California\", \"222-3322\", \"Grilled Duck Breast\", 25.00)\nR17 = Restaurant(\"Spago\", \"California\", \"333-2222\", \"Striped Bass\", 24.50)\nR18 = Restaurant(\"Sriped Bass\", \"Seafood\", \"333-2233\", \"Cedar Plank Salmon\", 21.50)\nR19 = Restaurant(\"Golden Pagoda\", \"Chinese\", \"232-3232\", \"Egg Foo Young\", 8.50)\nR20 = Restaurant(\"Langer's\", \"Delicatessen\", \"333-2223\", \"Pastrami Sandwich\", 11.50)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ], + "R11": [ + "REF", + 26 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R12": [ + "REF", + 27 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ], + "R11": [ + "REF", + 26 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ], + "27": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R12": [ + "REF", + 27 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ], + "R11": [ + "REF", + 26 + ], + "R13": [ + "REF", + 28 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ], + "27": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] + ], + "28": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] + ] + }, + "line": 18, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R12": [ + "REF", + 27 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R11": [ + "REF", + 26 + ], + "R13": [ + "REF", + 28 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ], + "27": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] + ], + "28": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] + ], + "29": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] + ] + }, + "line": 19, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R12": [ + "REF", + 27 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R15": [ + "REF", + 30 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R11": [ + "REF", + 26 + ], + "R13": [ + "REF", + 28 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ], + "27": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] + ], + "28": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] + ], + "29": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] + ], + "30": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] + ] + }, + "line": 20, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R12": [ + "REF", + 27 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R10": [ + "REF", + 25 + ], + "R15": [ + "REF", + 30 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R11": [ + "REF", + 26 + ], + "R16": [ + "REF", + 31 + ], + "R13": [ + "REF", + 28 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ], + "27": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] + ], + "28": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] + ], + "29": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] + ], + "30": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] + ], + "31": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] + ] + }, + "line": 21, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R16": [ + "REF", + 31 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R15": [ + "REF", + 30 + ], + "R12": [ + "REF", + 27 + ], + "R13": [ + "REF", + 28 + ], + "R10": [ + "REF", + 25 + ], + "R17": [ + "REF", + 32 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R11": [ + "REF", + 26 + ], + "R9": [ + "REF", + 24 + ], + "R7": [ + "REF", + 22 + ], + "R6": [ + "REF", + 21 + ], + "namedtuple": [ + "REF", + 1 + ], + "R4": [ + "REF", + 19 + ], + "R2": [ + "REF", + 17 + ], + "R1": [ + "REF", + 16 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ], + "27": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] + ], + "28": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] + ], + "29": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] + ], + "30": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] + ], + "31": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] + ], + "32": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Striped Bass" + ], + [ + "name", + "Spago" + ], + [ + "phone", + "333-2222" + ], + [ + "price", + 24.500 + ] + ] + }, + "line": 22, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17", + "R18" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R16": [ + "REF", + 31 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R15": [ + "REF", + 30 + ], + "R12": [ + "REF", + 27 + ], + "R13": [ + "REF", + 28 + ], + "R10": [ + "REF", + 25 + ], + "R17": [ + "REF", + 32 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R11": [ + "REF", + 26 + ], + "R18": [ + "REF", + 33 + ], + "R9": [ + "REF", + 24 + ], + "R7": [ + "REF", + 22 + ], + "R6": [ + "REF", + 21 + ], + "namedtuple": [ + "REF", + 1 + ], + "R4": [ + "REF", + 19 + ], + "R2": [ + "REF", + 17 + ], + "R1": [ + "REF", + 16 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ], + "27": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] + ], + "28": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] + ], + "29": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] + ], + "30": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] + ], + "31": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] + ], + "32": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Striped Bass" + ], + [ + "name", + "Spago" + ], + [ + "phone", + "333-2222" + ], + [ + "price", + 24.500 + ] + ], + "33": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Seafood" + ], + [ + "dish", + "Cedar Plank Salmon" + ], + [ + "name", + "Sriped Bass" + ], + [ + "phone", + "333-2233" + ], + [ + "price", + 21.500 + ] + ] + }, + "line": 23, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17", + "R18", + "R19" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R16": [ + "REF", + 31 + ], + "R5": [ + "REF", + 20 + ], + "R14": [ + "REF", + 29 + ], + "R15": [ + "REF", + 30 + ], + "R12": [ + "REF", + 27 + ], + "R13": [ + "REF", + 28 + ], + "R10": [ + "REF", + 25 + ], + "R17": [ + "REF", + 32 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R8": [ + "REF", + 23 + ], + "R11": [ + "REF", + 26 + ], + "R18": [ + "REF", + 33 + ], + "R19": [ + "REF", + 34 + ], + "R7": [ + "REF", + 22 + ], + "R6": [ + "REF", + 21 + ], + "namedtuple": [ + "REF", + 1 + ], + "R4": [ + "REF", + 19 + ], + "R2": [ + "REF", + 17 + ], + "R9": [ + "REF", + 24 + ], + "R1": [ + "REF", + 16 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ], + "27": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] + ], + "28": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] + ], + "29": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] + ], + "30": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] + ], + "31": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] + ], + "32": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Striped Bass" + ], + [ + "name", + "Spago" + ], + [ + "phone", + "333-2222" + ], + [ + "price", + 24.500 + ] + ], + "33": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Seafood" + ], + [ + "dish", + "Cedar Plank Salmon" + ], + [ + "name", + "Sriped Bass" + ], + [ + "phone", + "333-2233" + ], + [ + "price", + 21.500 + ] + ], + "34": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Egg Foo Young" + ], + [ + "name", + "Golden Pagoda" + ], + [ + "phone", + "232-3232" + ], + [ + "price", + 8.500 + ] + ] + }, + "line": 24, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "R7", + "R8", + "R9", + "R10", + "R11", + "R12", + "R13", + "R14", + "R15", + "R16", + "R17", + "R18", + "R19", + "R20" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R5": [ + "REF", + 20 + ], + "R16": [ + "REF", + 31 + ], + "R17": [ + "REF", + 32 + ], + "R14": [ + "REF", + 29 + ], + "R15": [ + "REF", + 30 + ], + "R12": [ + "REF", + 27 + ], + "R13": [ + "REF", + 28 + ], + "R10": [ + "REF", + 25 + ], + "R11": [ + "REF", + 26 + ], + "R3": [ + "REF", + 18 + ], + "R18": [ + "REF", + 33 + ], + "R19": [ + "REF", + 34 + ], + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R7": [ + "REF", + 22 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R8": [ + "REF", + 23 + ], + "R9": [ + "REF", + 24 + ], + "R20": [ + "REF", + 35 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Big Mac" + ], + [ + "name", + "McDonald's" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 3.950 + ] + ], + "23": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Whopper" + ], + [ + "name", + "Burger King" + ], + [ + "phone", + "444-3344" + ], + [ + "price", + 3.750 + ] + ], + "24": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Fish Tacos" + ], + [ + "dish", + "Mahi Mahi Burrito" + ], + [ + "name", + "Wahoo's" + ], + [ + "phone", + "443-4443" + ], + [ + "price", + 7.500 + ] + ], + "25": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Cheeseburger" + ], + [ + "name", + "In-N-Out Burger" + ], + [ + "phone", + "434-3344" + ], + [ + "price", + 2.500 + ] + ], + "26": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Burgers" + ], + [ + "dish", + "Hot Link Burger" + ], + [ + "name", + "The Shack" + ], + [ + "phone", + "333-3334" + ], + [ + "price", + 4.500 + ] + ], + "27": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Pizza" + ], + [ + "dish", + "Combo Pizza" + ], + [ + "name", + "Gina's" + ], + [ + "phone", + "334-4433" + ], + [ + "price", + 12.950 + ] + ], + "28": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Rogan Josh" + ], + [ + "name", + "Peacock, Room" + ], + [ + "phone", + "333-4443" + ], + [ + "price", + 12.500 + ] + ], + "29": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Indian" + ], + [ + "dish", + "Tandoori Chicken" + ], + [ + "name", + "Gaylord" + ], + [ + "phone", + "333-3433" + ], + [ + "price", + 13.500 + ] + ], + "30": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Peking Duck" + ], + [ + "name", + "Mr. Chow" + ], + [ + "phone", + "222-3333" + ], + [ + "price", + 24.500 + ] + ], + "31": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Grilled Duck Breast" + ], + [ + "name", + "Chez Panisse" + ], + [ + "phone", + "222-3322" + ], + [ + "price", + 25.000 + ] + ], + "32": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "California" + ], + [ + "dish", + "Striped Bass" + ], + [ + "name", + "Spago" + ], + [ + "phone", + "333-2222" + ], + [ + "price", + 24.500 + ] + ], + "33": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Seafood" + ], + [ + "dish", + "Cedar Plank Salmon" + ], + [ + "name", + "Sriped Bass" + ], + [ + "phone", + "333-2233" + ], + [ + "price", + 21.500 + ] + ], + "34": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Chinese" + ], + [ + "dish", + "Egg Foo Young" + ], + [ + "name", + "Golden Pagoda" + ], + [ + "phone", + "232-3232" + ], + [ + "price", + 8.500 + ] + ], + "35": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Delicatessen" + ], + [ + "dish", + "Pastrami Sandwich" + ], + [ + "name", + "Langer's" + ], + [ + "phone", + "333-2223" + ], + [ + "price", + 11.500 + ] + ] + }, + "line": 24, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/newstyle_class.golden_py3 b/v3/tests/backend-tests/newstyle_class.golden_py3 new file mode 100644 index 000000000..c69af1f0e --- /dev/null +++ b/v3/tests/backend-tests/newstyle_class.golden_py3 @@ -0,0 +1,1631 @@ +{ + "code": "class A(object):\n bla = \"A\"\n def __init__(self):\n self.blb = \"B\"\n\n def x(self):\n self.bla = self.blb\n\na = A()\n\na.x()\n\nprint(a.bla)\nprint(A.bla)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "bla": "A" + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1", + "ordered_varnames": [ + "bla" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "bla", + "A" + ] + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p", + "ordered_varnames": [ + "__init__", + "bla" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "func_name": "A", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "A", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": {}, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A" + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "A" + ], + "stdout": "", + "func_name": "__init__", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "__init__", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "__init___f2", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "x_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "x_f3", + "ordered_varnames": [ + "self" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "blb", + "B" + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "x", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": null, + "self": [ + "REF", + 5 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "x", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "x_f3", + "ordered_varnames": [ + "self", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "B\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "A", + "a" + ], + "stdout": "B\nA\n", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 1 + ], + "x": [ + "REF", + 3 + ], + "bla": "A", + "__init__": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "A", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "A_f1_p_z", + "ordered_varnames": [ + "__init__", + "bla", + "x", + "__return__" + ] + } + ], + "globals": { + "A": [ + "REF", + 4 + ], + "a": [ + "REF", + 5 + ] + }, + "heap": { + "1": [ + "DICT", + [ + "x", + [ + "REF", + 3 + ] + ], + [ + "bla", + "A" + ], + [ + "__init__", + [ + "REF", + 2 + ] + ] + ], + "2": [ + "FUNCTION", + "__init__(self)", + 1 + ], + "3": [ + "FUNCTION", + "x(self)", + 1 + ], + "4": [ + "CLASS", + "A", + [], + [ + "__init__", + [ + "REF", + 2 + ] + ], + [ + "bla", + "A" + ], + [ + "x", + [ + "REF", + 3 + ] + ] + ], + "5": [ + "INSTANCE", + "A", + [ + "bla", + "B" + ], + [ + "blb", + "B" + ] + ] + }, + "line": 14, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/one_func.golden_py3 b/v3/tests/backend-tests/one_func.golden_py3 new file mode 100644 index 000000000..ecd811f5c --- /dev/null +++ b/v3/tests/backend-tests/one_func.golden_py3 @@ -0,0 +1,350 @@ +{ + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\nx = 5\ny = 10\nz = x * y\nprint(add(x, y, z))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5, + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50 + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 8, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/open_error.golden_py3 b/v3/tests/backend-tests/open_error.golden_py3 new file mode 100644 index 000000000..7f343f9c8 --- /dev/null +++ b/v3/tests/backend-tests/open_error.golden_py3 @@ -0,0 +1,26 @@ +{ + "code": "for line in open(\"/etc/passwd\"):\n print(line)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [], + "stdout": "", + "exception_msg": "NameError: name 'open' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/parent-finding-1.golden_py3 b/v3/tests/backend-tests/parent-finding-1.golden_py3 new file mode 100644 index 000000000..00a4aab28 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-1.golden_py3 @@ -0,0 +1,483 @@ +{ + "code": "# make sure OPT finds f as the parent of g\ndef f(x, y):\n def g(x):\n return x + y\n return g(3)\n\nf(1, 2)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "x", + "y" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5, + "x": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "x", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 5, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "x", + "y", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "y": 2, + "x": 1, + "__return__": 5, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "x", + "y", + "g", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(x, y)", + null + ], + "2": [ + "FUNCTION", + "g(x)", + 1 + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/parent-finding-2.golden_py3 b/v3/tests/backend-tests/parent-finding-2.golden_py3 new file mode 100644 index 000000000..812420ec4 --- /dev/null +++ b/v3/tests/backend-tests/parent-finding-2.golden_py3 @@ -0,0 +1,957 @@ +{ + "code": "# make sure OPT finds horse as parent of mask\ndef horse(mask):\n horse = mask\n def mask(horse):\n return horse\n return horse(mask)\n\nmask = lambda horse: horse(2)\n\nhorse(mask)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "horse": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1", + "ordered_varnames": [ + "mask", + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "mask", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 2, + "horse": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "mask", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "mask_f3", + "ordered_varnames": [ + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "horse", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "horse", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p", + "ordered_varnames": [ + "mask", + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "horse", + "mask" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 2, + "horse": [ + "REF", + 2 + ], + "mask": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "horse", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "horse_f1_p_z", + "ordered_varnames": [ + "mask", + "horse", + "__return__" + ] + } + ], + "globals": { + "horse": [ + "REF", + 1 + ], + "mask": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "horse(mask)", + null + ], + "2": [ + "FUNCTION", + "(horse)", + null + ], + "3": [ + "FUNCTION", + "mask(horse)", + 1 + ] + }, + "line": 10, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/parse_error.golden_py3 b/v3/tests/backend-tests/parse_error.golden_py3 new file mode 100644 index 000000000..047dce543 --- /dev/null +++ b/v3/tests/backend-tests/parse_error.golden_py3 @@ -0,0 +1,11 @@ +{ + "code": "x = 0\nfor i in range(10):\n x += 1\n print x\n x += 1\n\n", + "trace": [ + { + "exception_msg": "IndentationError: unexpected indent (, line 4)", + "line": 4, + "event": "uncaught_exception", + "offset": 3 + } + ] +} diff --git a/v3/tests/backend-tests/parse_error_2.golden_py3 b/v3/tests/backend-tests/parse_error_2.golden_py3 new file mode 100644 index 000000000..a6973b8ee --- /dev/null +++ b/v3/tests/backend-tests/parse_error_2.golden_py3 @@ -0,0 +1,11 @@ +{ + "code": "x = 5\ny = x\nz = x + y\n\nfor x haslk;fjlasfhlkjl;sa\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 5)", + "line": 5, + "event": "uncaught_exception", + "offset": 11 + } + ] +} diff --git a/v3/tests/backend-tests/parse_error_3.golden_py3 b/v3/tests/backend-tests/parse_error_3.golden_py3 new file mode 100644 index 000000000..8ae537dd0 --- /dev/null +++ b/v3/tests/backend-tests/parse_error_3.golden_py3 @@ -0,0 +1,11 @@ +{ + "code": "x = []\nfor i in range(10):\n x.append(i)\n if i == 24:\n pass\n print y\n", + "trace": [ + { + "exception_msg": "IndentationError: unindent does not match any outer indentation level (, line 6)", + "line": 6, + "event": "uncaught_exception", + "offset": 11 + } + ] +} diff --git a/v3/tests/backend-tests/pie-test.golden_py3 b/v3/tests/backend-tests/pie-test.golden_py3 new file mode 100644 index 000000000..e913056f2 --- /dev/null +++ b/v3/tests/backend-tests/pie-test.golden_py3 @@ -0,0 +1,91 @@ +{ + "code": "import operator\nfrom math import pi, e\npie = operator.add(pi, e)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator", + "pi", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ], + "pi": 3.142, + "e": 2.718 + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "operator", + "pi", + "e", + "pie" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "operator": [ + "REF", + 1 + ], + "pi": 3.142, + "e": 2.718, + "pie": 5.860 + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/py-modules.golden_py3 b/v3/tests/backend-tests/py-modules.golden_py3 new file mode 100644 index 000000000..e8551d9ee --- /dev/null +++ b/v3/tests/backend-tests/py-modules.golden_py3 @@ -0,0 +1,132 @@ +{ + "code": "# test to make sure nothing crashes when tracing code in pure-Python\n# function calls imported from modules\nimport random\nrandom.randint(10, 100)\n\nfrom re import compile\nx = compile('foo')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "random" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "random" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "random", + "compile" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compile": [ + "REF", + 2 + ], + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "compile(pattern, flags)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "random", + "compile", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "compile": [ + "REF", + 2 + ], + "x": [ + "REF", + 3 + ], + "random": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "module" + ], + "2": [ + "FUNCTION", + "compile(pattern, flags)", + null + ], + "3": [ + "INSTANCE", + "SRE_Pattern" + ] + }, + "line": 7, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/runtime_error.golden_py3 b/v3/tests/backend-tests/runtime_error.golden_py3 new file mode 100644 index 000000000..c26590156 --- /dev/null +++ b/v3/tests/backend-tests/runtime_error.golden_py3 @@ -0,0 +1,440 @@ +{ + "code": "x = 5\nfor i in range(10):\n if i == x:\n z = x + y # ERROR!\n else:\n z = i\n print(z)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 0 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 1 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 2 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 3 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "i", + "z" + ], + "stdout": "0\n1\n2\n3\n4\n", + "exception_msg": "NameError: name 'y' is not defined", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 4 + }, + "heap": {}, + "line": 4, + "event": "exception" + } + ] +} diff --git a/v3/tests/backend-tests/set_test.golden_py3 b/v3/tests/backend-tests/set_test.golden_py3 new file mode 100644 index 000000000..bf39a5207 --- /dev/null +++ b/v3/tests/backend-tests/set_test.golden_py3 @@ -0,0 +1,151 @@ +{ + "code": "x = set()\nx.add('a')\nx.add('a')\nx.add('b')\nx.add('c')\nx.add('b')\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a" + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a" + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "b" + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "c", + "b" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "SET", + "a", + "c", + "b" + ] + }, + "line": 6, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/simple.golden_py3 b/v3/tests/backend-tests/simple.golden_py3 new file mode 100644 index 000000000..c3f69caa6 --- /dev/null +++ b/v3/tests/backend-tests/simple.golden_py3 @@ -0,0 +1,501 @@ +{ + "code": "x = 5\ny = 10\nz = x * y\nprint(\"HELLO WORLD\")\nfor i in range(10):\n print(z * i)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5 + }, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5 + }, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 50 + }, + "heap": {}, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z" + ], + "stdout": "HELLO WORLD\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "z": 50 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 0, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 1, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 2, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 3, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 4, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 5, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 6, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 7, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 8, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 8, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n450\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "x": 5, + "z": 50, + "y": 10 + }, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y", + "z", + "i" + ], + "stdout": "HELLO WORLD\n0\n50\n100\n150\n200\n250\n300\n350\n400\n450\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "i": 9, + "y": 10, + "z": 50, + "x": 5 + }, + "heap": {}, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/three_lists.golden_py3 b/v3/tests/backend-tests/three_lists.golden_py3 new file mode 100644 index 000000000..27775034e --- /dev/null +++ b/v3/tests/backend-tests/three_lists.golden_py3 @@ -0,0 +1,632 @@ +{ + "code": "# test case submitted by Peter Wentworth (p.wentworth@ru.ac.za)\n\ndef f(xs):\n print(xs)\n\na = [10, 20, 30]\nb = a\nc = [10, 20, 30]\nd = 24\ne = (a, b, c)\n\nf(b)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "b": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "[10, 20, 30]\n", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "xs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "xs", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 4, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "a", + "b", + "c", + "d", + "e" + ], + "stdout": "[10, 20, 30]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 2 + ], + "c": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ], + "e": [ + "REF", + 4 + ], + "d": 24, + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(xs)", + null + ], + "2": [ + "LIST", + 10, + 20, + 30 + ], + "3": [ + "LIST", + 10, + 20, + 30 + ], + "4": [ + "TUPLE", + [ + "REF", + 2 + ], + [ + "REF", + 2 + ], + [ + "REF", + 3 + ] + ] + }, + "line": 12, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/tuple_test.golden_py3 b/v3/tests/backend-tests/tuple_test.golden_py3 new file mode 100644 index 000000000..f1c5b4fc3 --- /dev/null +++ b/v3/tests/backend-tests/tuple_test.golden_py3 @@ -0,0 +1,72 @@ +{ + "code": "x = (1, 2, 3)\ny = (4,)\n\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2, + 3 + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": [ + "REF", + 2 + ], + "x": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "TUPLE", + 1, + 2, + 3 + ], + "2": [ + "TUPLE", + 4 + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/two_funcs.golden_py3 b/v3/tests/backend-tests/two_funcs.golden_py3 new file mode 100644 index 000000000..9a2a15184 --- /dev/null +++ b/v3/tests/backend-tests/two_funcs.golden_py3 @@ -0,0 +1,1453 @@ +{ + "code": "def add(a, b, c):\n d = a + b\n return c + d\n\ndef double_add(a, b, c):\n x = add(a, b, c)\n y = add(a, b, c)\n return x + y\n\nx = 5\ny = 10\nz = x * y\nprint(add(x, y, z))\nprint(double_add(x, y, z))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "x": 5, + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f1", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f3", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c", + "d" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "a": 5, + "__return__": 65, + "c": 50, + "b": 10, + "d": 15 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "add_f4", + "ordered_varnames": [ + "a", + "b", + "c", + "d", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "x": 65, + "c": 50, + "b": 10, + "y": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x", + "y" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n", + "func_name": "double_add", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 5, + "c": 50, + "b": 10, + "__return__": 130, + "y": 65, + "x": 65 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "double_add", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "double_add_f2", + "ordered_varnames": [ + "a", + "b", + "c", + "x", + "y", + "__return__" + ] + } + ], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 8, + "event": "return" + }, + { + "ordered_globals": [ + "add", + "double_add", + "x", + "y", + "z" + ], + "stdout": "65\n130\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "y": 10, + "x": 5, + "add": [ + "REF", + 1 + ], + "z": 50, + "double_add": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "add(a, b, c)", + null + ], + "2": [ + "FUNCTION", + "double_add(a, b, c)", + null + ] + }, + "line": 14, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/varargs.golden_py3 b/v3/tests/backend-tests/varargs.golden_py3 new file mode 100644 index 000000000..64cd90d22 --- /dev/null +++ b/v3/tests/backend-tests/varargs.golden_py3 @@ -0,0 +1,267 @@ +{ + "code": "def parrot(mandatory, mandatory2, *args, **kwargs):\n pass\n\nparrot('a', 'b', 'c', 'd', 'e', name='Philip', age='35')\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "parrot", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": null, + "args": [ + "REF", + 3 + ], + "mandatory": "a", + "mandatory2": "b", + "kwargs": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "parrot", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "parrot_f1", + "ordered_varnames": [ + "mandatory", + "mandatory2", + "args", + "kwargs", + "__return__" + ] + } + ], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ], + "2": [ + "DICT", + [ + "age", + "35" + ], + [ + "name", + "Philip" + ] + ], + "3": [ + "TUPLE", + "c", + "d", + "e" + ] + }, + "line": 2, + "event": "return" + }, + { + "ordered_globals": [ + "parrot" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "parrot": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "parrot(mandatory, mandatory2, *args, **kwargs)", + null + ] + }, + "line": 4, + "event": "return" + } + ] +} From 8a50e3f0d853ae521c3d29a20cbb029899242ace Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 22 Sep 2012 23:40:43 -0700 Subject: [PATCH 430/502] tiny --- v3/tests/run-all-tests.sh | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100755 v3/tests/run-all-tests.sh diff --git a/v3/tests/run-all-tests.sh b/v3/tests/run-all-tests.sh new file mode 100755 index 000000000..051ffd8d5 --- /dev/null +++ b/v3/tests/run-all-tests.sh @@ -0,0 +1,8 @@ +#!/bin/sh +echo 'Python 2 test' +echo '=============' +python golden_test.py --all +echo +echo 'Python 3 test' +echo '=============' +python golden_test.py --all --py3 From f84e907f8ea27a450232ae55d8b01f0eaf4929fa Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 23 Sep 2012 00:22:08 -0700 Subject: [PATCH 431/502] added --- v3/tests/diff_py23_golden_files.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 v3/tests/diff_py23_golden_files.py diff --git a/v3/tests/diff_py23_golden_files.py b/v3/tests/diff_py23_golden_files.py new file mode 100644 index 000000000..904cb6d04 --- /dev/null +++ b/v3/tests/diff_py23_golden_files.py @@ -0,0 +1,7 @@ +import os, itertools, subprocess + +for (dn, sd, files) in itertools.chain(os.walk('backend-tests/'), os.walk('../example-code/')): + for f in files: + bn, ext = os.path.splitext(f) + if ext == '.golden': + subprocess.call(['diff', '-u', os.path.join(dn, bn + ext), os.path.join(dn, bn + '.golden_py3')]) From 0fd95cb72ef9c6799a9eab51a27604b7de22bc7d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 24 Sep 2012 15:14:48 -0700 Subject: [PATCH 432/502] updated regression test suite and added new test --- .../backend-tests/py3_func_annotations.golden | 11 +++++++++++ .../py3_func_annotations.golden_py3 | 19 +++++++++++++++++++ .../backend-tests/py3_func_annotations.txt | 9 +++++++++ v3/tests/golden_test.py | 10 ++++++---- v3/tests/run-all-tests.sh | 8 ++++---- 5 files changed, 49 insertions(+), 8 deletions(-) create mode 100644 v3/tests/backend-tests/py3_func_annotations.golden create mode 100644 v3/tests/backend-tests/py3_func_annotations.golden_py3 create mode 100644 v3/tests/backend-tests/py3_func_annotations.txt diff --git a/v3/tests/backend-tests/py3_func_annotations.golden b/v3/tests/backend-tests/py3_func_annotations.golden new file mode 100644 index 000000000..a62687849 --- /dev/null +++ b/v3/tests/backend-tests/py3_func_annotations.golden @@ -0,0 +1,11 @@ +{ + "code": "# test case of Python 3 function annotations inspired by David G. Kay\ndef remove_by_name(L: 'list of Restaurant', name: str) -> 'list of Restaurant':\n \"\"\" Given name, remove all Restaurants with that name from collection.\n \"\"\"\n result = []\n for r in L:\n if r.name != name:\n result.append(r)\n return result\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 2)", + "line": 2, + "event": "uncaught_exception", + "offset": 21 + } + ] +} diff --git a/v3/tests/backend-tests/py3_func_annotations.golden_py3 b/v3/tests/backend-tests/py3_func_annotations.golden_py3 new file mode 100644 index 000000000..4dd046e9e --- /dev/null +++ b/v3/tests/backend-tests/py3_func_annotations.golden_py3 @@ -0,0 +1,19 @@ +{ + "code": "# test case of Python 3 function annotations inspired by David G. Kay\ndef remove_by_name(L: 'list of Restaurant', name: str) -> 'list of Restaurant':\n \"\"\" Given name, remove all Restaurants with that name from collection.\n \"\"\"\n result = []\n for r in L:\n if r.name != name:\n result.append(r)\n return result\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "exception_msg": "ValueError: Function has keyword-only arguments or annotations, use getfullargspec() API which can support them", + "event": "uncaught_exception" + } + ] +} diff --git a/v3/tests/backend-tests/py3_func_annotations.txt b/v3/tests/backend-tests/py3_func_annotations.txt new file mode 100644 index 000000000..24037afbf --- /dev/null +++ b/v3/tests/backend-tests/py3_func_annotations.txt @@ -0,0 +1,9 @@ +# test case of Python 3 function annotations inspired by David G. Kay +def remove_by_name(L: 'list of Restaurant', name: str) -> 'list of Restaurant': + """ Given name, remove all Restaurants with that name from collection. + """ + result = [] + for r in L: + if r.name != name: + result.append(r) + return result diff --git a/v3/tests/golden_test.py b/v3/tests/golden_test.py index 2b451ecde..f2d54b8e9 100644 --- a/v3/tests/golden_test.py +++ b/v3/tests/golden_test.py @@ -24,6 +24,8 @@ def execute(input_filename): print '(has stderr)' # print ' stderr {' # print stderr, '}' + else: + print # capture stdout into outfile, filtering out machine-specific addresses outfile = base + OUTPUT_FILE_EXTENSION @@ -84,7 +86,7 @@ def diff_test_output(test_name): def run_test(input_filename, clobber_golden=False): - print 'Testing', input_filename + print 'Testing', input_filename, (base, ext) = os.path.splitext(input_filename) assert ext == INPUT_FILE_EXTENSION @@ -131,18 +133,18 @@ def diff_all_test_outputs(): parser.add_option("--diffall", action="store_true", dest="diff_all", help="Diff against golden file for all tests") parser.add_option("--py3", action="store_true", dest="py3", - help="Run Python 3 tests (rather than Python 2)") + help="Run tests using Python 3.2 (rather than Python 2.7)") (options, args) = parser.parse_args() INPUT_FILE_EXTENSION = '.txt' # input test files are .txt, NOT .py if options.py3: - PROGRAM = ['python3', '../generate_json_trace.py'] + PROGRAM = ['python3.2', '../generate_json_trace.py'] OUTPUT_FILE_EXTENSION = '.out_py3' GOLDEN_FILE_EXTENSION = '.golden_py3' else: - PROGRAM = ['python2', '../generate_json_trace.py'] + PROGRAM = ['python2.7', '../generate_json_trace.py'] OUTPUT_FILE_EXTENSION = '.out' GOLDEN_FILE_EXTENSION = '.golden' diff --git a/v3/tests/run-all-tests.sh b/v3/tests/run-all-tests.sh index 051ffd8d5..40b4e7577 100755 --- a/v3/tests/run-all-tests.sh +++ b/v3/tests/run-all-tests.sh @@ -1,8 +1,8 @@ #!/bin/sh -echo 'Python 2 test' -echo '=============' +echo 'Python 2.7 test' +echo '===============' python golden_test.py --all echo -echo 'Python 3 test' -echo '=============' +echo 'Python 3.2 test' +echo '===============' python golden_test.py --all --py3 From 1026ae1b8cb596e8a7a7500cdd181052f13a7305 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 24 Sep 2012 15:55:06 -0700 Subject: [PATCH 433/502] support Python 3 annotations and keyword-only arguments --- v3/pg_encoder.py | 17 +++++++-- .../py3_func_annotations.golden_py3 | 23 ++++++++++- v3/tests/backend-tests/py3_kwonly_args.golden | 11 ++++++ .../backend-tests/py3_kwonly_args.golden_py3 | 38 +++++++++++++++++++ v3/tests/backend-tests/py3_kwonly_args.txt | 3 ++ 5 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 v3/tests/backend-tests/py3_kwonly_args.golden create mode 100644 v3/tests/backend-tests/py3_kwonly_args.golden_py3 create mode 100644 v3/tests/backend-tests/py3_kwonly_args.txt diff --git a/v3/pg_encoder.py b/v3/pg_encoder.py index a247bee3c..03ac0f67c 100644 --- a/v3/pg_encoder.py +++ b/v3/pg_encoder.py @@ -158,14 +158,23 @@ def encode(self, dat): if k not in ('__module__', '__return__', '__locals__'): new_obj.append([self.encode(k), self.encode(v)]) elif typ in (types.FunctionType, types.MethodType): - # NB: In Python 3.0, getargspec is deprecated in favor of getfullargspec - argspec = inspect.getargspec(dat) + if is_python3: + argspec = inspect.getfullargspec(dat) + else: + argspec = inspect.getargspec(dat) printed_args = [e for e in argspec.args] if argspec.varargs: printed_args.append('*' + argspec.varargs) - if argspec.keywords: - printed_args.append('**' + argspec.keywords) + + if is_python3: + if argspec.varkw: + printed_args.append('**' + argspec.varkw) + if argspec.kwonlyargs: + printed_args.extend(argspec.kwonlyargs) + else: + if argspec.keywords: + printed_args.append('**' + argspec.keywords) func_name = get_name(dat) pretty_name = func_name + '(' + ', '.join(printed_args) + ')' diff --git a/v3/tests/backend-tests/py3_func_annotations.golden_py3 b/v3/tests/backend-tests/py3_func_annotations.golden_py3 index 4dd046e9e..20571a78e 100644 --- a/v3/tests/backend-tests/py3_func_annotations.golden_py3 +++ b/v3/tests/backend-tests/py3_func_annotations.golden_py3 @@ -12,8 +12,27 @@ "event": "step_line" }, { - "exception_msg": "ValueError: Function has keyword-only arguments or annotations, use getfullargspec() API which can support them", - "event": "uncaught_exception" + "ordered_globals": [ + "remove_by_name" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "remove_by_name": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "remove_by_name(L, name)", + null + ] + }, + "line": 2, + "event": "return" } ] } diff --git a/v3/tests/backend-tests/py3_kwonly_args.golden b/v3/tests/backend-tests/py3_kwonly_args.golden new file mode 100644 index 000000000..f8bfc9a22 --- /dev/null +++ b/v3/tests/backend-tests/py3_kwonly_args.golden @@ -0,0 +1,11 @@ +{ + "code": "# Python 3 keyword-only arguments\ndef my_sorted(iterable, *, reverse=False, key=None):\n pass\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 2)", + "line": 2, + "event": "uncaught_exception", + "offset": 26 + } + ] +} diff --git a/v3/tests/backend-tests/py3_kwonly_args.golden_py3 b/v3/tests/backend-tests/py3_kwonly_args.golden_py3 new file mode 100644 index 000000000..2affddfb3 --- /dev/null +++ b/v3/tests/backend-tests/py3_kwonly_args.golden_py3 @@ -0,0 +1,38 @@ +{ + "code": "# Python 3 keyword-only arguments\ndef my_sorted(iterable, *, reverse=False, key=None):\n pass\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "my_sorted" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "my_sorted": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "my_sorted(iterable, reverse, key)", + null + ] + }, + "line": 2, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/py3_kwonly_args.txt b/v3/tests/backend-tests/py3_kwonly_args.txt new file mode 100644 index 000000000..e49a8d85a --- /dev/null +++ b/v3/tests/backend-tests/py3_kwonly_args.txt @@ -0,0 +1,3 @@ +# Python 3 keyword-only arguments +def my_sorted(iterable, *, reverse=False, key=None): + pass From a6ec9d6656a7d1de669c3932a7eb2f03e57c306b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 24 Sep 2012 16:21:08 -0700 Subject: [PATCH 434/502] ignore __repr__ calls too --- v3/pg_logger.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 6818bdbc7..2d2aae4c4 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -323,6 +323,16 @@ def interaction(self, frame, traceback, event_type): # also don't trace inside of the magic "constructor" code if cur_frame.f_code.co_name == '__new__': return + # or __repr__, which is often called when running print statements + if cur_frame.f_code.co_name == '__repr__': + return + + + # debug ... + #print('===', file=sys.stderr) + #for (e,ln) in self.stack: + # print(e.f_code.co_name + ' ' + e.f_code.co_filename + ' ' + str(ln), file=sys.stderr) + #print('', file=sys.stderr) # don't trace inside of our __restricted_import__ helper function From d428455df2a18bc287f6a7ad01518138b203e153 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 24 Sep 2012 16:38:03 -0700 Subject: [PATCH 435/502] added yet another regression test --- v3/tests/backend-tests/restaurants.golden | 5541 +++++++++++++ v3/tests/backend-tests/restaurants.golden_py3 | 6936 +++++++++++++++++ v3/tests/backend-tests/restaurants.txt | 16 + 3 files changed, 12493 insertions(+) create mode 100644 v3/tests/backend-tests/restaurants.golden create mode 100644 v3/tests/backend-tests/restaurants.golden_py3 create mode 100644 v3/tests/backend-tests/restaurants.txt diff --git a/v3/tests/backend-tests/restaurants.golden b/v3/tests/backend-tests/restaurants.golden new file mode 100644 index 000000000..5d9d1a8d6 --- /dev/null +++ b/v3/tests/backend-tests/restaurants.golden @@ -0,0 +1,5541 @@ +{ + "code": "# Adapted from an example by David G. Kay\nfrom collections import namedtuple\n\nRestaurant = namedtuple('Restaurant', 'name cuisine phone dish price')\n\nR1 = Restaurant(\"Taillevent\", \"French\", \"343-3434\", \"Escargots\", 24.50)\nR2 = Restaurant(\"La Tour D'Argent\", \"French\", \"343-3344\", \"Ris de Veau\", 48.50)\nR3 = Restaurant(\"Pascal\", \"French\", \"333-4444\", \"Bouillabaisse\", 32.00)\nR4 = Restaurant(\"Thai Touch\", \"Thai\", \"444-3333\", \"Mee Krob\", 10.95)\nR5 = Restaurant(\"Thai Dishes\", \"Thai\", \"333-4433\", \"Paht Woon Sen\", 8.50)\nR6 = Restaurant(\"Thai Spoon\", \"Thai\", \"334-3344\", \"Mussamun\", 9.00)\n\nRL = [R1, R2, R3, R4, R5, R6]\n\nFrenchRestaurants = [r for r in RL if r.cuisine==\"French\"]\nprint(FrenchRestaurants)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 16 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 17 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 19 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 20 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "r": [ + "REF", + 21 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r", + "FrenchRestaurants" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "FrenchRestaurants": [ + "REF", + 23 + ], + "r": [ + "REF", + 21 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "r", + "FrenchRestaurants" + ], + "stdout": "[Restaurant(name='Taillevent', cuisine='French', phone='343-3434', dish='Escargots', price=24.5), Restaurant(name=\"La Tour D'Argent\", cuisine='French', phone='343-3344', dish='Ris de Veau', price=48.5), Restaurant(name='Pascal', cuisine='French', phone='333-4444', dish='Bouillabaisse', price=32.0)]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "FrenchRestaurants": [ + "REF", + 23 + ], + "r": [ + "REF", + 21 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "staticmethod", + "" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "classmethod", + "" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "property", + "" + ], + "12": [ + "property", + "" + ], + "13": [ + "property", + "" + ], + "14": [ + "property", + "" + ], + "15": [ + "property", + "" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/restaurants.golden_py3 b/v3/tests/backend-tests/restaurants.golden_py3 new file mode 100644 index 000000000..e689bdf47 --- /dev/null +++ b/v3/tests/backend-tests/restaurants.golden_py3 @@ -0,0 +1,6936 @@ +{ + "code": "# Adapted from an example by David G. Kay\nfrom collections import namedtuple\n\nRestaurant = namedtuple('Restaurant', 'name cuisine phone dish price')\n\nR1 = Restaurant(\"Taillevent\", \"French\", \"343-3434\", \"Escargots\", 24.50)\nR2 = Restaurant(\"La Tour D'Argent\", \"French\", \"343-3344\", \"Ris de Veau\", 48.50)\nR3 = Restaurant(\"Pascal\", \"French\", \"333-4444\", \"Bouillabaisse\", 32.00)\nR4 = Restaurant(\"Thai Touch\", \"Thai\", \"444-3333\", \"Mee Krob\", 10.95)\nR5 = Restaurant(\"Thai Dishes\", \"Thai\", \"333-4433\", \"Paht Woon Sen\", 8.50)\nR6 = Restaurant(\"Thai Spoon\", \"Thai\", \"334-3344\", \"Mussamun\", 9.00)\n\nRL = [R1, R2, R3, R4, R5, R6]\n\nFrenchRestaurants = [r for r in RL if r.cuisine==\"French\"]\nprint(FrenchRestaurants)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "namedtuple": [ + "REF", + 1 + ], + "Restaurant": [ + "REF", + 2 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "call" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 16 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 17 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 18 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 19 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 20 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "r": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + ".0": [ + "REF", + 23 + ], + "__return__": [ + "REF", + 24 + ], + "r": [ + "REF", + 21 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f1", + "ordered_varnames": [ + ".0", + "r", + "__return__" + ] + } + ], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "23": [ + "INSTANCE", + "list_iterator" + ], + "24": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 15, + "event": "return" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "FrenchRestaurants" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "FrenchRestaurants": [ + "REF", + 24 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "24": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "namedtuple", + "Restaurant", + "R1", + "R2", + "R3", + "R4", + "R5", + "R6", + "RL", + "FrenchRestaurants" + ], + "stdout": "[Restaurant(name='Taillevent', cuisine='French', phone='343-3434', dish='Escargots', price=24.5), Restaurant(name=\"La Tour D'Argent\", cuisine='French', phone='343-3344', dish='Ris de Veau', price=48.5), Restaurant(name='Pascal', cuisine='French', phone='333-4444', dish='Bouillabaisse', price=32.0)]\n", + "func_name": "", + "stack_to_render": [], + "globals": { + "R4": [ + "REF", + 19 + ], + "namedtuple": [ + "REF", + 1 + ], + "R6": [ + "REF", + 21 + ], + "R1": [ + "REF", + 16 + ], + "R2": [ + "REF", + 17 + ], + "Restaurant": [ + "REF", + 2 + ], + "R3": [ + "REF", + 18 + ], + "FrenchRestaurants": [ + "REF", + 24 + ], + "R5": [ + "REF", + 20 + ], + "RL": [ + "REF", + 22 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "namedtuple(typename, field_names, verbose, rename)", + null + ], + "2": [ + "CLASS", + "Restaurant", + [ + "tuple" + ], + [ + "__getnewargs__", + [ + "REF", + 3 + ] + ], + [ + "__new__", + [ + "REF", + 4 + ] + ], + [ + "__repr__", + [ + "REF", + 5 + ] + ], + [ + "__slots__", + [ + "REF", + 6 + ] + ], + [ + "_asdict", + [ + "REF", + 7 + ] + ], + [ + "_fields", + [ + "REF", + 8 + ] + ], + [ + "_make", + [ + "REF", + 9 + ] + ], + [ + "_replace", + [ + "REF", + 10 + ] + ], + [ + "cuisine", + [ + "REF", + 11 + ] + ], + [ + "dish", + [ + "REF", + 12 + ] + ], + [ + "name", + [ + "REF", + 13 + ] + ], + [ + "phone", + [ + "REF", + 14 + ] + ], + [ + "price", + [ + "REF", + 15 + ] + ] + ], + "3": [ + "FUNCTION", + "__getnewargs__(self)", + null + ], + "4": [ + "INSTANCE", + "staticmethod" + ], + "5": [ + "FUNCTION", + "__repr__(self)", + null + ], + "6": [ + "TUPLE" + ], + "7": [ + "FUNCTION", + "_asdict(self)", + null + ], + "8": [ + "TUPLE", + "name", + "cuisine", + "phone", + "dish", + "price" + ], + "9": [ + "INSTANCE", + "classmethod" + ], + "10": [ + "FUNCTION", + "_replace(_self, **kwds)", + null + ], + "11": [ + "INSTANCE", + "property" + ], + "12": [ + "INSTANCE", + "property" + ], + "13": [ + "INSTANCE", + "property" + ], + "14": [ + "INSTANCE", + "property" + ], + "15": [ + "INSTANCE", + "property" + ], + "16": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Escargots" + ], + [ + "name", + "Taillevent" + ], + [ + "phone", + "343-3434" + ], + [ + "price", + 24.500 + ] + ], + "17": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Ris de Veau" + ], + [ + "name", + "La Tour D'Argent" + ], + [ + "phone", + "343-3344" + ], + [ + "price", + 48.500 + ] + ], + "18": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "French" + ], + [ + "dish", + "Bouillabaisse" + ], + [ + "name", + "Pascal" + ], + [ + "phone", + "333-4444" + ], + [ + "price", + 32.000 + ] + ], + "19": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mee Krob" + ], + [ + "name", + "Thai Touch" + ], + [ + "phone", + "444-3333" + ], + [ + "price", + 10.950 + ] + ], + "20": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Paht Woon Sen" + ], + [ + "name", + "Thai Dishes" + ], + [ + "phone", + "333-4433" + ], + [ + "price", + 8.500 + ] + ], + "21": [ + "INSTANCE", + "Restaurant", + [ + "cuisine", + "Thai" + ], + [ + "dish", + "Mussamun" + ], + [ + "name", + "Thai Spoon" + ], + [ + "phone", + "334-3344" + ], + [ + "price", + 9.000 + ] + ], + "22": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ], + [ + "REF", + 19 + ], + [ + "REF", + 20 + ], + [ + "REF", + 21 + ] + ], + "24": [ + "LIST", + [ + "REF", + 16 + ], + [ + "REF", + 17 + ], + [ + "REF", + 18 + ] + ] + }, + "line": 16, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/restaurants.txt b/v3/tests/backend-tests/restaurants.txt new file mode 100644 index 000000000..3d7c3b186 --- /dev/null +++ b/v3/tests/backend-tests/restaurants.txt @@ -0,0 +1,16 @@ +# Adapted from an example by David G. Kay +from collections import namedtuple + +Restaurant = namedtuple('Restaurant', 'name cuisine phone dish price') + +R1 = Restaurant("Taillevent", "French", "343-3434", "Escargots", 24.50) +R2 = Restaurant("La Tour D'Argent", "French", "343-3344", "Ris de Veau", 48.50) +R3 = Restaurant("Pascal", "French", "333-4444", "Bouillabaisse", 32.00) +R4 = Restaurant("Thai Touch", "Thai", "444-3333", "Mee Krob", 10.95) +R5 = Restaurant("Thai Dishes", "Thai", "333-4433", "Paht Woon Sen", 8.50) +R6 = Restaurant("Thai Spoon", "Thai", "334-3344", "Mussamun", 9.00) + +RL = [R1, R2, R3, R4, R5, R6] + +FrenchRestaurants = [r for r in RL if r.cuisine=="French"] +print(FrenchRestaurants) From 17d2930745dbad45f25a295a69ade5e1ab76f3b8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 24 Sep 2012 20:12:36 -0700 Subject: [PATCH 436/502] lovely --- v3/tests/backend-tests/john-lambda-lambda.txt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 v3/tests/backend-tests/john-lambda-lambda.txt diff --git a/v3/tests/backend-tests/john-lambda-lambda.txt b/v3/tests/backend-tests/john-lambda-lambda.txt new file mode 100644 index 000000000..61a0d2fb5 --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda.txt @@ -0,0 +1,5 @@ +# another gem from john denero ... +def a(b): + a, b = b(3) + +a(lambda a: (lambda b: a, a)) From 2216e848b6aa6c4b0fdba58b542ab0a4e8827d3e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 10:08:01 -0700 Subject: [PATCH 437/502] get ready to write embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 20 ++++++++++++++++++++ v3/docs/embedding-HOWTO.txt | 8 +++----- v3/index.html | 2 +- 3 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 v3/docs/embedding-HOWTO.md diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md new file mode 100644 index 000000000..4b0e8281e --- /dev/null +++ b/v3/docs/embedding-HOWTO.md @@ -0,0 +1,20 @@ +# Embedding Online Python Tutor visualizations + +This document is a starting point for anyone who wants to embed +Online Python Tutor (OPT) visualizations in their webpage. View it online at: + +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/embedd.md + +Look at the Git history to see when this document was last updated; the more time +elapsed since that date, the more likely things are out-of-date. + +I'm assuming that you're competent in Python, JavaScript, command-line-fu, and Google-fu, +so I won't do much hand-holding in these directions. + +This guide isn't meant to be comprehensive; you will undoubtedly still +be confused about details after reading it, so feel free to email +philip@pgbovine.net if you have questions. + +And please excuse the sloppy writing; I'm not trying to win any style awards here :) + + diff --git a/v3/docs/embedding-HOWTO.txt b/v3/docs/embedding-HOWTO.txt index 268b50dad..49944948d 100644 --- a/v3/docs/embedding-HOWTO.txt +++ b/v3/docs/embedding-HOWTO.txt @@ -1,6 +1,4 @@ -Instructions for embedding Online Python Tutor visualizations ------- +This document has been moved to embedding-HOWTO.md -[Full documentation coming soon! For now, please email philip@pgbovine.net] - -[TODO: move to GitHub Markdown format] +View it online at: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/embedding-HOWTO.md diff --git a/v3/index.html b/v3/index.html index 35462a9f9..ed6ce82ed 100644 --- a/v3/index.html +++ b/v3/index.html @@ -127,7 +127,7 @@

    LEARN programming by vi

    EMBED visualizations in digital textbooks

    Using a single line of JavaScript code, you can embed an Online Python Tutor +href="https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/embedding-HOWTO.md">embed an Online Python Tutor visualization within your web page (as shown in the “Learn” box above). The screenshot below shows a few of these visualizations embedded within the online textbook for the introductory CS course at UC From 72d4dde33c04af17be2943069d38c0ae58860958 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 10:33:21 -0700 Subject: [PATCH 438/502] Update v3/docs/embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md index 4b0e8281e..469818ac4 100644 --- a/v3/docs/embedding-HOWTO.md +++ b/v3/docs/embedding-HOWTO.md @@ -3,7 +3,7 @@ This document is a starting point for anyone who wants to embed Online Python Tutor (OPT) visualizations in their webpage. View it online at: -https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/embedd.md +https://github.com/pgbovine/OnlinePythonTutor/edit/master/v3/docs/embedding-HOWTO.md Look at the Git history to see when this document was last updated; the more time elapsed since that date, the more likely things are out-of-date. @@ -18,3 +18,17 @@ philip@pgbovine.net if you have questions. And please excuse the sloppy writing; I'm not trying to win any style awards here :) +## High-Level Overview + +To embed a visualization, you: + +1. Run the target Python program offline to generate an execution trace, which is one (really, really long) +string representing a JavaScript (JSON) object. +2. Copy that long string into a JavaScript .js file. +3. Include some other stuff in your .js file and then embed it within your HTML webpage. + +Note that the embedded visualization is **read-only** -- that is, the user can interact with the visualization +by stepping forward and backward, but they cannot edit the code. + +If the user wants to click the 'Edit code' button to edit the code, then they are +brought to the [code editor page](http://pythontutor.com/visualize.html). From 1ab02ec13a212e81424bb6b71be0f5e50e08e892 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 10:35:45 -0700 Subject: [PATCH 439/502] tiny --- v3/{embedding-test.html => embedding-demo.html} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename v3/{embedding-test.html => embedding-demo.html} (100%) diff --git a/v3/embedding-test.html b/v3/embedding-demo.html similarity index 100% rename from v3/embedding-test.html rename to v3/embedding-demo.html From 03261e6c285e42fdf728cfd0b2906467cbb7a62c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 10:38:51 -0700 Subject: [PATCH 440/502] Update v3/docs/embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md index 469818ac4..7b5eb75a5 100644 --- a/v3/docs/embedding-HOWTO.md +++ b/v3/docs/embedding-HOWTO.md @@ -32,3 +32,13 @@ by stepping forward and backward, but they cannot edit the code. If the user wants to click the 'Edit code' button to edit the code, then they are brought to the [code editor page](http://pythontutor.com/visualize.html). + + +## The Nitty-Gritty + +Let's attempt to go [literate programming](http://en.wikipedia.org/wiki/Literate_programming) style now ... load up +[v3/embedding-demo.html](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/embedding-demo.html) in +your browser to see a demo. And then view its source code and follow the instructions there, which should +lead you to [v3/embedding-demo.js](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/embedding-demo.js). + +Everything you need to know should be in the demo code! From ec5ad2b3e485c83ff289efbb48917084f25b0ab8 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 10:39:41 -0700 Subject: [PATCH 441/502] Update v3/docs/embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md index 7b5eb75a5..f11975367 100644 --- a/v3/docs/embedding-HOWTO.md +++ b/v3/docs/embedding-HOWTO.md @@ -3,7 +3,7 @@ This document is a starting point for anyone who wants to embed Online Python Tutor (OPT) visualizations in their webpage. View it online at: -https://github.com/pgbovine/OnlinePythonTutor/edit/master/v3/docs/embedding-HOWTO.md +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/embedding-HOWTO.md Look at the Git history to see when this document was last updated; the more time elapsed since that date, the more likely things are out-of-date. From bc5ab40ca9e9651850ded0f380acfa3daf9df967 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 11:55:12 -0700 Subject: [PATCH 442/502] added skeleton of OPT embedding demo --- v3/embedding-demo.html | 33 +- v3/embedding-demo.js | 45 + v3/embedding-examples.js | 33 - v3/generate_json_trace.py | 20 +- v3/tests/backend-tests/list_sum.golden | 2125 ++++++++++++++++++++ v3/tests/backend-tests/list_sum.golden_py3 | 2125 ++++++++++++++++++++ v3/tests/backend-tests/list_sum.txt | 9 + 7 files changed, 4345 insertions(+), 45 deletions(-) create mode 100644 v3/embedding-demo.js delete mode 100644 v3/embedding-examples.js create mode 100644 v3/tests/backend-tests/list_sum.golden create mode 100644 v3/tests/backend-tests/list_sum.golden_py3 create mode 100644 v3/tests/backend-tests/list_sum.txt diff --git a/v3/embedding-demo.html b/v3/embedding-demo.html index f6fbd56d8..ac025e96b 100644 --- a/v3/embedding-demo.html +++ b/v3/embedding-demo.html @@ -2,9 +2,9 @@ - Online Python Tutor embedding test + Online Python Tutor embedding demo - + @@ -12,29 +12,42 @@ + + - + + -

    Stuff:

    + -
    +

    Recursive list sum (from pythontutor.com home page):

    -

    Aliasing 5:

    +
    -
    -

    Towers of Hanoi:

    +

    Towers of Hanoi:

    -
    +
    + + +

    Happy Birthday:

    + +
    - diff --git a/v3/embedding-demo.js b/v3/embedding-demo.js new file mode 100644 index 000000000..861017e82 --- /dev/null +++ b/v3/embedding-demo.js @@ -0,0 +1,45 @@ +// To embed Online Python Tutor visualizations into embedding-demo.html ... + +// 1. Run generate_json_trace.py to generate execution traces as JavaScript variables. +// (WARNING: The following lines are VERY LONG.) + +// Run: +// python generate_json_trace.py --create_jsvar=listSumTrace tests/backend-tests/list_sum.txt +// and copy-and-paste the output line into here: +var listSumTrace = {"code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "return"}]}; + +// Do the same for +// python generate_json_trace.py --create_jsvar=hanoiTrace tests/example-code/towers_of_hanoi.txt +var hanoiTrace = {"code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 4, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f4", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 4, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f4", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 4, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f4", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 4, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f4", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 5, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f5", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 5, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f5", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 5, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f5", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 5, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f5", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 3, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f3", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 7, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f7", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 7, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f7", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 7, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f7", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 7, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f7", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 8, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f8", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 8, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f8", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 8, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f8", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 8, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f8", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 6, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "__return__": null, "b": ["REF", 3], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f6", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 2, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f2", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 11, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f11", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 11, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f11", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 11, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f11", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 11, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f11", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 12, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f12", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 12, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f12", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 12, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f12", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 12, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f12", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 10, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "__return__": null, "b": ["REF", 2], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f10", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 14, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f14", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 14, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f14", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 14, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f14", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 14, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f14", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 15, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f15", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 15, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f15", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 15, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f15", "ordered_varnames": ["n", "a", "b", "tmp"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 15, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f15", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 13, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f13", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp"]}, {"frame_id": 9, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 3}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f9", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 4}, "is_highlighted": true, "is_parent": false, "func_name": "TowerOfHanoi", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "TowerOfHanoi_f1", "ordered_varnames": ["n", "a", "b", "tmp", "__return__"]}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 16, "event": "return"}]}; + +// And finally, let's generate one last trace and copy it in here: +// python generate_json_trace.py --create_jsvar=happyTrace tests/example-code/happy.txt +var happyTrace = {"code": "# From \"Teaching with Python\" by John Zelle\ndef happy():\n print(\"Happy Birthday to you!\")\n\ndef sing(P):\n happy()\n happy()\n print(\"Happy Birthday dear \" + P + \"!\")\n happy()\n\n# main\nsing(\"Fred\")\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 2, "event": "step_line"}, {"ordered_globals": ["happy"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 5, "event": "call"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 2, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f2", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 2, "event": "call"}, {"ordered_globals": ["happy", "sing"], "stdout": "", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 2, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f2", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 2, "encoded_locals": {"__return__": null}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f2", "ordered_varnames": ["__return__"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "return"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\n", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 3, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f3", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 2, "event": "call"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 3, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f3", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 3, "encoded_locals": {"__return__": null}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f3", "ordered_varnames": ["__return__"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "return"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\n", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 4, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f4", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 2, "event": "call"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 4, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f4", "ordered_varnames": []}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", "func_name": "happy", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"P": "Fred"}, "is_highlighted": false, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P"]}, {"frame_id": 4, "encoded_locals": {"__return__": null}, "is_highlighted": true, "is_parent": false, "func_name": "happy", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "happy_f4", "ordered_varnames": ["__return__"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 3, "event": "return"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", "func_name": "sing", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": null, "P": "Fred"}, "is_highlighted": true, "is_parent": false, "func_name": "sing", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "sing_f1", "ordered_varnames": ["P", "__return__"]}], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 9, "event": "return"}, {"ordered_globals": ["happy", "sing"], "stdout": "Happy Birthday to you!\nHappy Birthday to you!\nHappy Birthday dear Fred!\nHappy Birthday to you!\n", "func_name": "", "stack_to_render": [], "globals": {"sing": ["REF", 2], "happy": ["REF", 1]}, "heap": {"1": ["FUNCTION", "happy()", null], "2": ["FUNCTION", "sing(P)", null]}, "line": 12, "event": "return"}]}; + +// 2. When the HTML document finishes loading, populate the three divs +// (listSumDiv, hanoiDiv, happyDiv) with the visualizations +// corresponding to the respective traces. +$(document).ready(function() { + + + // see js/pytutor.js for the specs for ExecutionVisualizer + var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, + {embeddedMode: true, jumpToEnd: true, editCodeBaseURL: 'http://pythontutor.com/'}); + + var hanoiVisualizer = new ExecutionVisualizer('hanoiDiv', hanoiTrace, + {embeddedMode: true, startingInstruction: 45, editCodeBaseURL: 'http://pythontutor.com/'}); + + var happyVisualizer = new ExecutionVisualizer('happyDiv', happyTrace, + {embeddedMode: true, editCodeBaseURL: 'http://pythontutor.com/'}); + + + // TODO: implement the div trick where the divs don't get shorter after they get taller ... + + // redraw connector arrows on window resize + $(window).resize(function() { + listSumVisualizer.redrawConnectors(); + hanoiVisualizer.redrawConnectors(); + happyVisualizer.redrawConnectors(); + }); +}); + diff --git a/v3/embedding-examples.js b/v3/embedding-examples.js deleted file mode 100644 index a80fb5fb4..000000000 --- a/v3/embedding-examples.js +++ /dev/null @@ -1,33 +0,0 @@ -// Traces generated by generate_json_trace.py - -var stuff = {"code": "# Philip's 10-minute intro to Python\n\n# numbers!\nage = 26\npi = 3.14159\n\n# strings!\ns = 'Rutherford Birchard Hayes'\ntokens = s.split()\nfirstName = tokens[0]\nmiddleName = tokens[1]\nlastName = tokens[2]\ns2 = firstName + ' ' + middleName + ' ' + lastName\n\n# 'if' statement - indentation matters!\nif (s == s2):\n print 'yes!!!'\nelse:\n print 'nooooooo'\n\n# list (mutable sequence)\nbeatles = ['John', 'Paul', 'George']\nbeatles.append('Ringo')\n\n# 'for' loop - indentation matters!\nfor b in beatles:\n print 'Hello', b\n\n# tuple (immutable sequence)\nages = (18, 21, 28, 21, 22, 18, 19, 34, 9)\n\n# set (no order, no duplicates)\nuniqueAges = set(ages)\nuniqueAges.add(18) # already in set, no effect\nuniqueAges.remove(21)\n\n# no guaranteed order when iterating over a set\nfor thisAge in uniqueAges:\n print thisAge\n\n# testing set membership\nif 18 in uniqueAges:\n print 'There is an 18-year-old present!'\n\n# sorting\nbeatles.sort() # in-place\norderedUniqueAges = sorted(uniqueAges) # new list\n\n# dict - mapping unique keys to values\nnetWorth = {}\nnetWorth['Donald Trump'] = 3000000000\nnetWorth['Bill Gates'] = 58000000000\nnetWorth['Tom Cruise'] = 40000000\nnetWorth['Joe Postdoc'] = 20000\n\n# iterating over key-value pairs:\nfor (person, worth) in netWorth.iteritems():\n if worth < 1000000:\n print 'haha', person, 'is not a millionaire'\n\n# testing dict membership\nif 'Tom Cruise' in netWorth:\n print 'show me the money!'\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 4, "event": "step_line"}, {"ordered_globals": ["age"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"age": 26}, "heap": {}, "line": 5, "event": "step_line"}, {"ordered_globals": ["age", "pi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"age": 26, "pi": 3.14159}, "heap": {}, "line": 8, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"age": 26, "pi": 3.14159, "s": "Rutherford Birchard Hayes"}, "heap": {}, "line": 9, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"tokens": ["REF", 1], "age": 26, "pi": 3.14159, "s": "Rutherford Birchard Hayes"}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 10, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"tokens": ["REF", 1], "age": 26, "pi": 3.14159, "s": "Rutherford Birchard Hayes", "firstName": "Rutherford"}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 17, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George"]}, "line": 23, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "John", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Paul", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "George", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 27, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 26, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"]}, "line": 30, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9]}, "line": 33, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 21, 22, 28]}, "line": 34, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 21, 22, 28]}, "line": 35, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 34, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 9, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 18, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 19, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 22, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 39, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 38, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 42, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 43, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "John", "Paul", "George", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 46, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28]}, "line": 47, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"beatles": ["REF", 2], "firstName": "Rutherford", "orderedUniqueAges": ["REF", 5], "middleName": "Birchard", "lastName": "Hayes", "age": 26, "uniqueAges": ["REF", 4], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "s2": "Rutherford Birchard Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34]}, "line": 50, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT"]}, "line": 51, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000]]}, "line": 52, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000]]}, "line": 53, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Tom Cruise", 40000000]]}, "line": 54, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Donald Trump", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 3000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Donald Trump", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 3000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Bill Gates", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 58000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Bill Gates", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 58000000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Joe Postdoc", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 20000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Joe Postdoc", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 20000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 59, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Joe Postdoc", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 20000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 58, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 57, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 62, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 63, "event": "step_line"}, {"ordered_globals": ["age", "pi", "s", "tokens", "firstName", "middleName", "lastName", "s2", "beatles", "b", "ages", "uniqueAges", "thisAge", "orderedUniqueAges", "netWorth", "person", "worth"], "stdout": "yes!!!\nHello John\nHello Paul\nHello George\nHello Ringo\n34\n9\n18\n19\n22\n28\nThere is an 18-year-old present!\nhaha Joe Postdoc is not a millionaire\nshow me the money!\n", "func_name": "", "stack_to_render": [], "globals": {"netWorth": ["REF", 6], "beatles": ["REF", 2], "firstName": "Rutherford", "uniqueAges": ["REF", 4], "middleName": "Birchard", "s2": "Rutherford Birchard Hayes", "age": 26, "orderedUniqueAges": ["REF", 5], "ages": ["REF", 3], "tokens": ["REF", 1], "person": "Tom Cruise", "s": "Rutherford Birchard Hayes", "b": "Ringo", "lastName": "Hayes", "thisAge": 28, "pi": 3.14159, "worth": 40000000}, "heap": {"1": ["LIST", "Rutherford", "Birchard", "Hayes"], "2": ["LIST", "George", "John", "Paul", "Ringo"], "3": ["TUPLE", 18, 21, 28, 21, 22, 18, 19, 34, 9], "4": ["SET", 34, 9, 18, 19, 22, 28], "5": ["LIST", 9, 18, 19, 22, 28, 34], "6": ["DICT", ["Donald Trump", 3000000000], ["Bill Gates", 58000000000], ["Joe Postdoc", 20000], ["Tom Cruise", 40000000]]}, "line": 63, "event": "return"}]} - -var stuff = {"code": "# Object-oriented programming intro\n# Adapted from MIT 6.01 course notes (Section 3.5)\n# http://mit.edu/6.01/mercurial/spring10/www/handouts/readings.pdf\n\nclass Staff601:\n course = '6.01'\n building = 34\n room = 501\n\n def salutation(self):\n return self.role + ' ' + self.name\n\npat = Staff601()\nprint pat.course\n\npat.name = 'Pat'\npat.age = 60\npat.role = 'Professor'\n\nprint pat.building\npat.building = 32\nprint pat.building\n\nprint pat.salutation()\nprint Staff601.salutation(pat)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 5, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": []}], "globals": {}, "heap": {}, "line": 5, "event": "call"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": []}], "globals": {}, "heap": {}, "line": 5, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": []}], "globals": {}, "heap": {}, "line": 6, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"course": "6.01"}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": ["course"]}], "globals": {}, "heap": {}, "line": 7, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01"}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": ["building", "course"]}], "globals": {}, "heap": {}, "line": 8, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "room": 501}, "is_highlighted": true, "is_parent": false, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1", "ordered_varnames": ["building", "course", "room"]}], "globals": {}, "heap": {}, "line": 10, "event": "step_line"}, {"ordered_globals": [], "stdout": "", "func_name": "Staff601", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": true, "is_parent": true, "func_name": "Staff601", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]]]}, "line": 10, "event": "return"}, {"ordered_globals": ["Staff601"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601"]}, "line": 14, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["name", "Pat"]]}, "line": 17, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["name", "Pat"]]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["name", "Pat"], ["role", "Professor"]]}, "line": 20, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["name", "Pat"], ["role", "Professor"]]}, "line": 21, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 24, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 2, "encoded_locals": {"self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f2", "ordered_varnames": ["self"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 10, "event": "call"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 2, "encoded_locals": {"self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f2", "ordered_varnames": ["self"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": "Professor Pat", "self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f2", "ordered_varnames": ["self", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 11, "event": "return"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 25, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 3, "encoded_locals": {"self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f3", "ordered_varnames": ["self"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 10, "event": "call"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 3, "encoded_locals": {"self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f3", "ordered_varnames": ["self"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\n", "func_name": "salutation", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}, {"frame_id": 3, "encoded_locals": {"__return__": "Professor Pat", "self": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "salutation", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "salutation_f3", "ordered_varnames": ["self", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 11, "event": "return"}, {"ordered_globals": ["Staff601", "pat"], "stdout": "6.01\n34\n32\nProfessor Pat\nProfessor Pat\n", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"building": 34, "course": "6.01", "salutation": ["REF", 1], "room": 501, "__return__": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "Staff601", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "Staff601_f1_p_z", "ordered_varnames": ["building", "course", "room", "salutation", "__return__"]}], "globals": {"Staff601": ["REF", 3], "pat": ["REF", 4]}, "heap": {"1": ["FUNCTION", "salutation(self)", 1], "2": ["DICT", ["building", 34], ["room", 501], ["course", "6.01"], ["salutation", ["REF", 1]], ["__doc__", null]], "3": ["CLASS", "Staff601", [], ["building", 34], ["course", "6.01"], ["room", 501], ["salutation", ["REF", 1]]], "4": ["INSTANCE", "Staff601", ["age", 60], ["building", 32], ["name", "Pat"], ["role", "Professor"]]}, "line": 25, "event": "return"}]} -var closure4 = {"code": "def f(x):\n def g(y):\n return x + y\n return g\n\ng1 = f(1)\ng2 = f(2)\ng1(3) + g2(4)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"x": 1}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1", "ordered_varnames": ["x"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null]}, "line": 1, "event": "call"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"x": 1}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1", "ordered_varnames": ["x"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"x": 1, "g": ["REF", 2]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1_p", "ordered_varnames": ["x", "g"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["f"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f1_p", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 4, "event": "return"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"x": 2}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2", "ordered_varnames": ["x"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 1, "event": "call"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"x": 2}, "is_highlighted": true, "is_parent": false, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2", "ordered_varnames": ["x"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"x": 2, "g": ["REF", 3]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2_p", "ordered_varnames": ["x", "g"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["f", "g1"], "stdout": "", "func_name": "f", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": true, "is_parent": true, "func_name": "f", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "f_f2_p", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 4, "event": "return"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 3, "encoded_locals": {"y": 3}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "g_f3", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 2, "event": "call"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 3, "encoded_locals": {"y": 3}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "g_f3", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 3, "encoded_locals": {"y": 3, "__return__": 4}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [1], "unique_hash": "g_f3", "ordered_varnames": ["y", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "return"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 4, "encoded_locals": {"y": 4}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [2], "unique_hash": "g_f4", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 2, "event": "call"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 4, "encoded_locals": {"y": 4}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [2], "unique_hash": "g_f4", "ordered_varnames": ["y"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "g", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 4, "encoded_locals": {"y": 4, "__return__": 6}, "is_highlighted": true, "is_parent": false, "func_name": "g", "is_zombie": false, "parent_frame_id_list": [2], "unique_hash": "g_f4", "ordered_varnames": ["y", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 3, "event": "return"}, {"ordered_globals": ["f", "g1", "g2"], "stdout": "", "func_name": "", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": ["REF", 2], "x": 1, "g": ["REF", 2]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f1_p_z", "ordered_varnames": ["x", "g", "__return__"]}, {"frame_id": 2, "encoded_locals": {"__return__": ["REF", 3], "x": 2, "g": ["REF", 3]}, "is_highlighted": false, "is_parent": true, "func_name": "f", "is_zombie": true, "parent_frame_id_list": [], "unique_hash": "f_f2_p_z", "ordered_varnames": ["x", "g", "__return__"]}], "globals": {"g2": ["REF", 3], "g1": ["REF", 2], "f": ["REF", 1]}, "heap": {"1": ["FUNCTION", "f(x)", null], "2": ["FUNCTION", "g(y)", 1], "3": ["FUNCTION", "g(y)", 2]}, "line": 8, "event": "return"}]} - -var aliasing = {"code": "x = [1, 2, 3]\ny = [4, 5, 6]\nz = y\ny = x\nx = z\n\nx = [1, 2, 3] # a different [1, 2, 3] list!\ny = x\nx.append(4)\ny.append(5)\nz = [1, 2, 3, 4, 5] # a different list!\nx.append(6)\ny.append(7)\ny = \"hello\"\n\n\ndef foo(lst):\n lst.append(\"hello\")\n bar(lst)\n\ndef bar(myLst):\n print myLst\n\nfoo(x)\nfoo(z)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "y"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 2], "x": ["REF", 1]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 2], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 1], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 2], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 1], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"1": ["LIST", 1, 2, 3], "2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3, 4]}, "line": 10, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 2]}, "heap": {"2": ["LIST", 4, 5, 6], "3": ["LIST", 1, 2, 3, 4, 5]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": ["REF", 3], "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 14, "event": "step_line"}, {"ordered_globals": ["x", "y", "z"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5]}, "line": 17, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null]}, "line": 21, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 24, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 17, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 21, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 3]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 3]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 25, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 17, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 18, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 21, "event": "call"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst"], "frame_id": null, "encoded_locals": {"myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "step_line"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "bar", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst"], "frame_id": null, "encoded_locals": {"lst": ["REF", 4]}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "bar_i1", "func_name": "bar", "is_zombie": false, "ordered_varnames": ["myLst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "myLst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 22, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "foo", "stack_to_render": [{"unique_hash": "foo_i0", "func_name": "foo", "is_zombie": false, "ordered_varnames": ["lst", "__return__"], "frame_id": null, "encoded_locals": {"__return__": null, "lst": ["REF", 4]}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"y": "hello", "x": ["REF", 3], "foo": ["REF", 5], "bar": ["REF", 6], "z": ["REF", 4]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 19, "event": "return"}, {"ordered_globals": ["x", "y", "z", "foo", "bar"], "stdout": "[1, 2, 3, 4, 5, 6, 7, 'hello']\n[1, 2, 3, 4, 5, 'hello']\n", "func_name": "", "stack_to_render": [], "globals": {"y": "hello", "x": ["REF", 3], "z": ["REF", 4], "bar": ["REF", 6], "foo": ["REF", 5]}, "heap": {"3": ["LIST", 1, 2, 3, 4, 5, 6, 7, "hello"], "4": ["LIST", 1, 2, 3, 4, 5, "hello"], "5": ["FUNCTION", "foo(lst)", null], "6": ["FUNCTION", "bar(myLst)", null]}, "line": 25, "event": "return"}]}; - -var aliasing5 = {"code": "x = None\nfor i in range(5, 0, -1):\n x = (i, x)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["x"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"x": null}, "heap": {}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 5, "x": null}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 5, "x": ["REF", 1]}, "heap": {"1": ["TUPLE", 5, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 4, "x": ["REF", 1]}, "heap": {"1": ["TUPLE", 5, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 4, "x": ["REF", 2]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 3, "x": ["REF", 2]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 3, "x": ["REF", 3]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 2, "x": ["REF", 3]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 2, "x": ["REF", 4]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 4]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 5]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]], "5": ["TUPLE", 1, ["REF", 4]]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["x", "i"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"i": 1, "x": ["REF", 5]}, "heap": {"1": ["TUPLE", 5, null], "2": ["TUPLE", 4, ["REF", 1]], "3": ["TUPLE", 3, ["REF", 2]], "4": ["TUPLE", 2, ["REF", 3]], "5": ["TUPLE", 1, ["REF", 4]]}, "line": 2, "event": "return"}]}; - -var hanoi = {"code": "# move a stack of n disks from stack a to stack b,\n# using tmp as a temporary stack\ndef TowerOfHanoi(n, a, b, tmp):\n if n == 1:\n b.append(a.pop())\n else:\n TowerOfHanoi(n-1, a, tmp, b)\n b.append(a.pop())\n TowerOfHanoi(n-1, tmp, b, a)\n \nstack1 = [4,3,2,1]\nstack2 = []\nstack3 = []\n \n# transfer stack1 to stack3 using Tower of Hanoi rules\nTowerOfHanoi(len(stack1), stack1, stack3, stack2)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 3, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null]}, "line": 11, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1]}, "line": 12, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"]}, "line": 13, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 16, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2, 1], "3": ["LIST"], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3, 2], "3": ["LIST", 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST", 1], "4": ["LIST", 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 3], "3": ["LIST"], "4": ["LIST", 2, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3], "4": ["LIST", 2, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3], "4": ["LIST", 2]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4, 1], "3": ["LIST", 3, 2], "4": ["LIST"]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "b": ["REF", 3], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 4], "__return__": null, "b": ["REF", 3], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 4], "3": ["LIST", 3, 2, 1], "4": ["LIST"]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2, 1], "4": ["LIST", 4]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 3, 2], "4": ["LIST", 4, 1]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 3], "4": ["LIST", 4, 1]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "b": ["REF", 2], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 4], "__return__": null, "b": ["REF", 2], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 3], "__return__": null, "b": ["REF", 2], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST", 3], "4": ["LIST", 4]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 7, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2, 1], "3": ["LIST"], "4": ["LIST", 4, 3]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 4], "a": ["REF", 2], "__return__": null, "b": ["REF", 3], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST", 2], "3": ["LIST", 1], "4": ["LIST", 4, 3]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 3, "event": "call"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 4, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST", 1], "4": ["LIST", 4, 3, 2]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 2}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i3", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 1}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 5, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "b": ["REF", 4], "n": 3}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i2", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 2}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "b": ["REF", 4], "n": 4}, "is_highlighted": false, "parent_frame_id_list": []}, {"unique_hash": "TowerOfHanoi_i1", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 2], "a": ["REF", 3], "__return__": null, "b": ["REF", 4], "n": 3}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "TowerOfHanoi", "stack_to_render": [{"unique_hash": "TowerOfHanoi_i0", "func_name": "TowerOfHanoi", "is_zombie": false, "ordered_varnames": ["n", "a", "b", "tmp", "__return__"], "frame_id": null, "encoded_locals": {"tmp": ["REF", 3], "a": ["REF", 2], "__return__": null, "b": ["REF", 4], "n": 4}, "is_highlighted": true, "parent_frame_id_list": []}], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 9, "event": "return"}, {"ordered_globals": ["TowerOfHanoi", "stack1", "stack2", "stack3"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"stack3": ["REF", 4], "stack2": ["REF", 3], "TowerOfHanoi": ["REF", 1], "stack1": ["REF", 2]}, "heap": {"1": ["FUNCTION", "TowerOfHanoi(n, a, b, tmp)", null], "2": ["LIST"], "3": ["LIST"], "4": ["LIST", 4, 3, 2, 1]}, "line": 16, "event": "return"}]}; - - -var stuffViz = null; -var aliasing5Viz = null; -var hanoiViz = null; - -$(document).ready(function() { - stuffViz = new ExecutionVisualizer('stuffDiv', stuff, {embeddedMode: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); - aliasing5Viz = new ExecutionVisualizer('aliasing5Div', aliasing5, {embeddedMode: true, jumpToEnd: true, editCodeBaseURL: 'http://localhost:8080/'}); - hanoiViz = new ExecutionVisualizer('hanoiDiv', hanoi, {startingInstruction: 45, embeddedMode: true, editCodeBaseURL: 'http://localhost:8080/'}); - - // redraw connector arrows on window resize - $(window).resize(function() { - stuffViz.redrawConnectors(); - aliasing5Viz.redrawConnectors(); - hanoiViz.redrawConnectors(); - }); - - -}); - diff --git a/v3/generate_json_trace.py b/v3/generate_json_trace.py index 809aa3807..117eade81 100644 --- a/v3/generate_json_trace.py +++ b/v3/generate_json_trace.py @@ -1,5 +1,7 @@ # Generates a JSON trace that is compatible with the js/pytutor.js frontend +import optparse + CUMULATIVE_MODE = False COMPACT = False @@ -26,6 +28,20 @@ def json_finalizer(input_code, output_trace): print(json_output) -for f in sys.argv[1:]: - pg_logger.exec_script_str(open(f).read(), CUMULATIVE_MODE, json_finalizer) +def js_var_finalizer(input_code, output_trace): + global JS_VARNAME + ret = dict(code=input_code, trace=output_trace) + json_output = json.dumps(ret, indent=None) + print("var %s = %s;" % (JS_VARNAME, json_output)) + +parser = optparse.OptionParser() +parser.add_option("--create_jsvar", dest="js_varname", + help="Create a JavaScript variable out of the trace") +(options, args) = parser.parse_args() + +if options.js_varname: + JS_VARNAME = options.js_varname + pg_logger.exec_script_str(open(args[0]).read(), CUMULATIVE_MODE, js_var_finalizer) +else: + pg_logger.exec_script_str(open(args[0]).read(), CUMULATIVE_MODE, json_finalizer) diff --git a/v3/tests/backend-tests/list_sum.golden b/v3/tests/backend-tests/list_sum.golden new file mode 100644 index 000000000..332b07b21 --- /dev/null +++ b/v3/tests/backend-tests/list_sum.golden @@ -0,0 +1,2125 @@ +{ + "code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 0, + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5, + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 6, + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList", + "total" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "total": 6, + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_sum.golden_py3 b/v3/tests/backend-tests/list_sum.golden_py3 new file mode 100644 index 000000000..332b07b21 --- /dev/null +++ b/v3/tests/backend-tests/list_sum.golden_py3 @@ -0,0 +1,2125 @@ +{ + "code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 0, + "numbers": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f4", + "ordered_varnames": [ + "numbers", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "numbers": [ + "REF", + 4 + ], + "rest": null, + "f": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f3", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": 5, + "numbers": [ + "REF", + 3 + ], + "rest": [ + "REF", + 4 + ], + "f": 2 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f2", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList" + ], + "stdout": "", + "func_name": "listSum", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": 6, + "numbers": [ + "REF", + 2 + ], + "rest": [ + "REF", + 3 + ], + "f": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "listSum", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "listSum_f1", + "ordered_varnames": [ + "numbers", + "f", + "rest", + "__return__" + ] + } + ], + "globals": { + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "listSum", + "myList", + "total" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "total": 6, + "myList": [ + "REF", + 2 + ], + "listSum": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "listSum(numbers)", + null + ], + "2": [ + "TUPLE", + 1, + [ + "REF", + 3 + ] + ], + "3": [ + "TUPLE", + 2, + [ + "REF", + 4 + ] + ], + "4": [ + "TUPLE", + 3, + null + ] + }, + "line": 9, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/list_sum.txt b/v3/tests/backend-tests/list_sum.txt new file mode 100644 index 000000000..ce2556a0d --- /dev/null +++ b/v3/tests/backend-tests/list_sum.txt @@ -0,0 +1,9 @@ +def listSum(numbers): + if not numbers: + return 0 + else: + (f, rest) = numbers + return f + listSum(rest) + +myList = (1, (2, (3, None))) +total = listSum(myList) From 527b11aa21d62ebdb743a7ba0321d75051010000 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 14:10:17 -0700 Subject: [PATCH 443/502] checked in embedding demo --- v3/embedding-demo.html | 12 +++------ v3/embedding-demo.js | 58 +++++++++++++++++++++++++++++++++++++----- 2 files changed, 54 insertions(+), 16 deletions(-) diff --git a/v3/embedding-demo.html b/v3/embedding-demo.html index ac025e96b..bb89143d5 100644 --- a/v3/embedding-demo.html +++ b/v3/embedding-demo.html @@ -18,10 +18,8 @@ - @@ -29,11 +27,7 @@ - +

    Recursive list sum (from pythontutor.com home page):

    diff --git a/v3/embedding-demo.js b/v3/embedding-demo.js index 861017e82..9af98dbc6 100644 --- a/v3/embedding-demo.js +++ b/v3/embedding-demo.js @@ -21,25 +21,69 @@ var happyTrace = {"code": "# From \"Teaching with Python\" by John Zelle\ndef ha // corresponding to the respective traces. $(document).ready(function() { + // 3. Create a new ExecutionVisualizer object for each visualization. + // (See js/pytutor.js for the full specs of ExecutionVisualizer.) + // + // The basic idea is that the parent div name is passed as the first argument, + // and the trace object is passed as the second argument. + // + // The third argument contains optional parameters. - // see js/pytutor.js for the specs for ExecutionVisualizer + // Note that "embeddedMode: true" makes the visualizer appear more compact on-screen. + // editCodeBaseURL is the base URL to prepend onto the 'Edit code' link. + + // Render listSumTrace inside of listSumDiv var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, - {embeddedMode: true, jumpToEnd: true, editCodeBaseURL: 'http://pythontutor.com/'}); + {embeddedMode: true, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); + // The "startingInstruction: 15" optional parameter means to jump to step 15 + // in the visualization when it loads. (The HTML webpage will actually display + // "Step 16 of 64" since indices are zero-indexed.) var hanoiVisualizer = new ExecutionVisualizer('hanoiDiv', hanoiTrace, - {embeddedMode: true, startingInstruction: 45, editCodeBaseURL: 'http://pythontutor.com/'}); + {embeddedMode: true, + startingInstruction: 15, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); + // "embeddedMode: false" displays the full visualizer widget with the "Program Output" pane + // "jumpToEnd: true" means to jump to the end of execution upon loading. var happyVisualizer = new ExecutionVisualizer('happyDiv', happyTrace, - {embeddedMode: true, editCodeBaseURL: 'http://pythontutor.com/'}); + {embeddedMode: false, + jumpToEnd: true, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); - // TODO: implement the div trick where the divs don't get shorter after they get taller ... + // The redrawConnectors() method needs to be called whenever + // HTML elements move around on-screen. This is because the SVG + // arrows rendered by jsPlumb don't automatically get redrawn + // in their new positions unless redrawConnectors() is called. - // redraw connector arrows on window resize + // Call redrawConnectors() whenever the window is resized, + // since HTML elements might have moved during a resize. $(window).resize(function() { listSumVisualizer.redrawConnectors(); hanoiVisualizer.redrawConnectors(); happyVisualizer.redrawConnectors(); }); -}); + + // A more subtle point is that when some div in your HTML webpage + // (such as a visualizer div) expands in height, it will "push down" + // all divs below it, but the SVG arrows rendered by jsPlumb + // WILL NOT MOVE. Thus, they will be in the incorrect location, + // unless you call redrawConnectors(). Here is one jQuery plugin + // that you can use to detect div height changes: + // + // http://benalman.com/projects/jquery-resize-plugin/ + // + // As a concrete example, drag around the execution slider in + // "Towers of Hanoi" and notice how the arrows in "Happy Birthday" + // end up not properly aligned with the other elements. + // + // A related trick you can implement is to make a div never shrink + // in height once it's grown; that way, you can avoid lots of jarring + // jumps and redraws. + // + // Please email me if you want me to add more official support + // for this behavior. +}); From c6422ebfb89d27c68dee583f34b35c65bea0a12d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 14:12:37 -0700 Subject: [PATCH 444/502] Update v3/docs/embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md index f11975367..a87404279 100644 --- a/v3/docs/embedding-HOWTO.md +++ b/v3/docs/embedding-HOWTO.md @@ -37,8 +37,8 @@ brought to the [code editor page](http://pythontutor.com/visualize.html). ## The Nitty-Gritty Let's attempt to go [literate programming](http://en.wikipedia.org/wiki/Literate_programming) style now ... load up -[v3/embedding-demo.html](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/embedding-demo.html) in -your browser to see a demo. And then view its source code and follow the instructions there, which should +[embedding-demo.html](http://pythontutor.com/embedding-demo.html) in +your browser to see a demo. And then view its [source code](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/embedding-demo.html) and follow the instructions there, which should lead you to [v3/embedding-demo.js](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/embedding-demo.js). Everything you need to know should be in the demo code! From c14626d7be194e03907cd3e75017b244c8732f36 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 14:17:32 -0700 Subject: [PATCH 445/502] Update v3/docs/embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md index a87404279..3e481e9bd 100644 --- a/v3/docs/embedding-HOWTO.md +++ b/v3/docs/embedding-HOWTO.md @@ -29,7 +29,6 @@ string representing a JavaScript (JSON) object. Note that the embedded visualization is **read-only** -- that is, the user can interact with the visualization by stepping forward and backward, but they cannot edit the code. - If the user wants to click the 'Edit code' button to edit the code, then they are brought to the [code editor page](http://pythontutor.com/visualize.html). @@ -38,7 +37,7 @@ brought to the [code editor page](http://pythontutor.com/visualize.html). Let's attempt to go [literate programming](http://en.wikipedia.org/wiki/Literate_programming) style now ... load up [embedding-demo.html](http://pythontutor.com/embedding-demo.html) in -your browser to see a demo. And then view its [source code](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/embedding-demo.html) and follow the instructions there, which should -lead you to [v3/embedding-demo.js](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/embedding-demo.js). +your browser to see a demo. And then view its [source code](https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/embedding-demo.html) and follow the instructions there, +which should then lead you to `v3/embedding-demo.js`. Everything you need to know should be in the demo code! From 4d2411c1a5d6089ee46d500826eff031564bcb2c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 14:24:26 -0700 Subject: [PATCH 446/502] Update v3/docs/embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md index 3e481e9bd..0cbb8bb56 100644 --- a/v3/docs/embedding-HOWTO.md +++ b/v3/docs/embedding-HOWTO.md @@ -32,6 +32,11 @@ by stepping forward and backward, but they cannot edit the code. If the user wants to click the 'Edit code' button to edit the code, then they are brought to the [code editor page](http://pythontutor.com/visualize.html). +Also, note that the visualization is run client-side; thus, after the user loads the webpage (from the Internet +or, say, a USB drive), they can play with the visualization without an Internet connection. + +Finally, multiple visualizations can be embedded in a single HTML webpage, although you need to be careful +to redraw the SVG arrows when page elements are resized or moved. ## The Nitty-Gritty From 7a4722dd688c0ea33738579da56c3b1957c6d647 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 14:36:05 -0700 Subject: [PATCH 447/502] added another problematic test case --- v3/tests/backend-tests/john-triple-nesting.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 v3/tests/backend-tests/john-triple-nesting.txt diff --git a/v3/tests/backend-tests/john-triple-nesting.txt b/v3/tests/backend-tests/john-triple-nesting.txt new file mode 100644 index 000000000..60a949231 --- /dev/null +++ b/v3/tests/backend-tests/john-triple-nesting.txt @@ -0,0 +1,13 @@ +# test in Python 3 +def f(t): + def g(t): + def h(): + nonlocal t + t += 1 + return h, lambda: t + h, gt = g(0) + return h, gt, lambda: t +h, gt, ft = f(0) +ft(), gt() +h() +ft(), gt() From 998b5e129a6bacd7b2768baface5a9d5442d4d9c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 22:59:02 -0700 Subject: [PATCH 448/502] RECURSIVELY dive inside of objects reachable from top of stack in order to find lambdas and other nested functions ... subtle! --- v3/pg_encoder.py | 38 +- v3/pg_logger.py | 57 +- .../john-lambda-lambda-mini.golden | 817 ++++ .../john-lambda-lambda-mini.golden_py3 | 817 ++++ .../backend-tests/john-lambda-lambda-mini.txt | 5 + .../backend-tests/john-lambda-lambda.golden | 472 +++ .../john-lambda-lambda.golden_py3 | 472 +++ .../backend-tests/john-triple-nesting.golden | 11 + .../john-triple-nesting.golden_py3 | 3726 +++++++++++++++++ 9 files changed, 6393 insertions(+), 22 deletions(-) create mode 100644 v3/tests/backend-tests/john-lambda-lambda-mini.golden create mode 100644 v3/tests/backend-tests/john-lambda-lambda-mini.golden_py3 create mode 100644 v3/tests/backend-tests/john-lambda-lambda-mini.txt create mode 100644 v3/tests/backend-tests/john-lambda-lambda.golden create mode 100644 v3/tests/backend-tests/john-lambda-lambda.golden_py3 create mode 100644 v3/tests/backend-tests/john-triple-nesting.golden create mode 100644 v3/tests/backend-tests/john-triple-nesting.golden_py3 diff --git a/v3/pg_encoder.py b/v3/pg_encoder.py index 03ac0f67c..c57c20f08 100644 --- a/v3/pg_encoder.py +++ b/v3/pg_encoder.py @@ -68,6 +68,23 @@ long = None # Avoid NameError when evaluating "long" +def is_class(dat): + """Return whether dat is a class.""" + if is_python3: + return isinstance(dat, type) + else: + return type(dat) in (types.ClassType, types.TypeType) + + +def is_instance(dat): + """Return whether dat is an instance of a class.""" + if is_python3: + return isinstance(type(dat), type) and not isinstance(dat, type) + else: + # ugh, classRE match is a bit of a hack :( + return type(dat) == types.InstanceType or classRE.match(str(type(dat))) + + def get_name(obj): """Return the name of an object.""" return obj.__name__ if hasattr(obj, '__name__') else get_name(type(obj)) @@ -182,7 +199,7 @@ def encode(self, dat): elif typ is types.BuiltinFunctionType: pretty_name = get_name(dat) + '(...)' new_obj.extend(['FUNCTION', pretty_name, None]) - elif self.is_class(dat) or self.is_instance(dat): + elif is_class(dat) or is_instance(dat): self.encode_class_or_instance(dat, new_obj) elif typ is types.ModuleType: new_obj.extend(['module', dat.__name__]) @@ -199,26 +216,9 @@ def encode(self, dat): return ret - def is_class(self, dat): - """Return whether dat is a class.""" - if is_python3: - return isinstance(dat, type) - else: - return type(dat) in (types.ClassType, types.TypeType) - - - def is_instance(self, dat): - """Return whether dat is an instance of a class.""" - if is_python3: - return isinstance(type(dat), type) and not isinstance(dat, type) - else: - # ugh, classRE match is a bit of a hack :( - return type(dat) == types.InstanceType or classRE.match(str(type(dat))) - - def encode_class_or_instance(self, dat, new_obj): """Encode dat as a class or instance.""" - if self.is_instance(dat): + if is_instance(dat): class_name = get_name(dat.__class__) new_obj.extend(['INSTANCE', class_name]) # don't traverse inside modules, or else risk EXPLODING the visualization diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 2d2aae4c4..90754e5b8 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -134,6 +134,58 @@ def filter_var_dict(d): return ret +# yield all function objects locally-reachable from frame, +# making sure to traverse inside all compound objects ... +def visit_all_locally_reachable_function_objs(frame): + for (k, v) in get_user_locals(frame).items(): + for e in visit_function_obj(v, set()): + if e: # only non-null if it's a function object + assert type(e) in (types.FunctionType, types.MethodType) + yield e + + +# TODO: this might be slow if we're traversing inside lots of objects: +def visit_function_obj(v, ids_seen_set): + v_id = id(v) + + # to prevent infinite loop + if v_id in ids_seen_set: + yield None + else: + ids_seen_set.add(v_id) + + typ = type(v) + + # simple base case + if typ in (types.FunctionType, types.MethodType): + yield v + + # recursive cases + elif typ in (list, tuple, set): + for child in v: + for child_res in visit_function_obj(child, ids_seen_set): + yield child_res + + elif typ == dict or pg_encoder.is_class(v) or pg_encoder.is_instance(v): + contents_dict = None + + if typ == dict: + contents_dict = v + # warning: some classes or instances don't have __dict__ attributes + elif hasattr(v, '__dict__'): + contents_dict = v.__dict__ + + if contents_dict: + for (key_child, val_child) in contents_dict.items(): + for key_child_res in visit_function_obj(key_child, ids_seen_set): + yield key_child_res + for val_child_res in visit_function_obj(val_child, ids_seen_set): + yield val_child_res + + # degenerate base case + yield None + + class PGLogger(bdb.Bdb): def __init__(self, cumulative_mode, finalizer_func): @@ -474,9 +526,8 @@ def create_encoded_stack_entry(cur_frame): # look for whether a nested function has been defined during # this particular call: if i > 1: # i == 1 implies that there's only a global scope visible - for (k, v) in get_user_locals(top_frame).items(): - if (type(v) in (types.FunctionType, types.MethodType) and \ - v not in self.closures and \ + for v in visit_all_locally_reachable_function_objs(top_frame): + if (v not in self.closures and \ v not in self.globally_defined_funcs): # Look for the presence of the code object (v.func_code diff --git a/v3/tests/backend-tests/john-lambda-lambda-mini.golden b/v3/tests/backend-tests/john-lambda-lambda-mini.golden new file mode 100644 index 000000000..fa12e342a --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda-mini.golden @@ -0,0 +1,817 @@ +{ + "code": "def a(b):\n a = b(3)\n a(100)\n\na(lambda a: (lambda b: a))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2_p", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "b", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-lambda-lambda-mini.golden_py3 b/v3/tests/backend-tests/john-lambda-lambda-mini.golden_py3 new file mode 100644 index 000000000..fa12e342a --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda-mini.golden_py3 @@ -0,0 +1,817 @@ +{ + "code": "def a(b):\n a = b(3)\n a(100)\n\na(lambda a: (lambda b: a))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 1, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 1, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2_p", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 3, + "b": 100 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "b", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 3 + ], + "__return__": null, + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-lambda-lambda-mini.txt b/v3/tests/backend-tests/john-lambda-lambda-mini.txt new file mode 100644 index 000000000..bd8f4edc3 --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda-mini.txt @@ -0,0 +1,5 @@ +def a(b): + a = b(3) + a(100) + +a(lambda a: (lambda b: a)) diff --git a/v3/tests/backend-tests/john-lambda-lambda.golden b/v3/tests/backend-tests/john-lambda-lambda.golden new file mode 100644 index 000000000..8cfb591a5 --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda.golden @@ -0,0 +1,472 @@ +{ + "code": "# another gem from john denero ...\ndef a(b):\n a, b = b(3)\n\na(lambda a: (lambda b: a, a))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2_p", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b)", + null + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-lambda-lambda.golden_py3 b/v3/tests/backend-tests/john-lambda-lambda.golden_py3 new file mode 100644 index 000000000..8cfb591a5 --- /dev/null +++ b/v3/tests/backend-tests/john-lambda-lambda.golden_py3 @@ -0,0 +1,472 @@ +{ + "code": "# another gem from john denero ...\ndef a(b):\n a, b = b(3)\n\na(lambda a: (lambda b: a, a))\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2", + "ordered_varnames": [ + "a" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ] + }, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "b": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "_f2_p", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "2": [ + "FUNCTION", + "(a)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b)", + null + ] + }, + "line": 5, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "a", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "a": [ + "REF", + 4 + ], + "__return__": null, + "b": 3 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "a", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "a_f1", + "ordered_varnames": [ + "b", + "a", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b)", + 2 + ] + }, + "line": 3, + "event": "return" + }, + { + "ordered_globals": [ + "a" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 2, + "encoded_locals": { + "a": 3, + "__return__": [ + "REF", + 3 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "_f2_p_z", + "ordered_varnames": [ + "a", + "__return__" + ] + } + ], + "globals": { + "a": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "a(b)", + null + ], + "3": [ + "TUPLE", + [ + "REF", + 4 + ], + 3 + ], + "4": [ + "FUNCTION", + "(b)", + null + ] + }, + "line": 5, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/john-triple-nesting.golden b/v3/tests/backend-tests/john-triple-nesting.golden new file mode 100644 index 000000000..61283f9c5 --- /dev/null +++ b/v3/tests/backend-tests/john-triple-nesting.golden @@ -0,0 +1,11 @@ +{ + "code": "# test in Python 3\ndef f(t):\n def g(t):\n def h():\n nonlocal t\n t += 1\n return h, lambda: t\n h, gt = g(0)\n return h, gt, lambda: t\nh, gt, ft = f(0)\nft(), gt()\nh()\nft(), gt()\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 5)", + "line": 5, + "event": "uncaught_exception", + "offset": 22 + } + ] +} diff --git a/v3/tests/backend-tests/john-triple-nesting.golden_py3 b/v3/tests/backend-tests/john-triple-nesting.golden_py3 new file mode 100644 index 000000000..e99b5bfae --- /dev/null +++ b/v3/tests/backend-tests/john-triple-nesting.golden_py3 @@ -0,0 +1,3726 @@ +{ + "code": "# test in Python 3\ndef f(t):\n def g(t):\n def h():\n nonlocal t\n t += 1\n return h, lambda: t\n h, gt = g(0)\n return h, gt, lambda: t\nh, gt, ft = f(0)\nft(), gt()\nh()\nft(), gt()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 2, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 2, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 8, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 3, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 4, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p", + "ordered_varnames": [ + "t", + "h" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + null + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g", + "h", + "gt" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + null + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 4, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 6, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 13, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 9, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 7, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 13, + "event": "return" + } + ] +} From 8a71ec323fbba127568112576c9b6eeb01f26e81 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 23:30:28 -0700 Subject: [PATCH 449/502] added known limitation and punting for now! --- v3/pg_logger.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 90754e5b8..515e85fde 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -470,6 +470,10 @@ def create_encoded_stack_entry(cur_frame): encoded_val = self.encoder.encode(v) # UGH, this is SUPER ugly but needed for nested function defs + # + # NB: Known limitation -- this will work only for functions + # defined on the top level, not those that are nested within, + # say, tuples or lists if type(v) in (types.FunctionType, types.MethodType): try: enclosing_frame = self.closures[v] @@ -589,6 +593,10 @@ def create_encoded_stack_entry(cur_frame): encoded_val = self.encoder.encode(v) # UGH, this is SUPER ugly but needed for nested function defs + # + # NB: Known limitation -- this will work only for functions + # defined on the top level, not those that are nested within, + # say, tuples or lists if type(v) in (types.FunctionType, types.MethodType): try: enclosing_frame = self.closures[v] From fba58493e561c3891ae36d0122728b5b68dfdce1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 1 Oct 2012 23:40:50 -0700 Subject: [PATCH 450/502] added an example to torture students --- .../closures/student-torture.golden | 11 + .../closures/student-torture.golden_py3 | 3726 +++++++++++++++++ v3/example-code/closures/student-torture.txt | 17 + v3/js/opt-frontend.js | 5 + v3/visualize.html | 7 +- 5 files changed, 3763 insertions(+), 3 deletions(-) create mode 100644 v3/example-code/closures/student-torture.golden create mode 100644 v3/example-code/closures/student-torture.golden_py3 create mode 100644 v3/example-code/closures/student-torture.txt diff --git a/v3/example-code/closures/student-torture.golden b/v3/example-code/closures/student-torture.golden new file mode 100644 index 000000000..bb48036aa --- /dev/null +++ b/v3/example-code/closures/student-torture.golden @@ -0,0 +1,11 @@ +{ + "code": "# Example to torture students\n# from UC Berkeley CS61a\n# (only works in Python 3)\n\ndef f(t):\n def g(t):\n def h():\n nonlocal t\n t += 1\n return h, lambda: t\n h, gt = g(0)\n return h, gt, lambda: t\n\nh, gt, ft = f(0)\nft(), gt()\nh()\nft(), gt()\n", + "trace": [ + { + "exception_msg": "SyntaxError: invalid syntax (, line 8)", + "line": 8, + "event": "uncaught_exception", + "offset": 22 + } + ] +} diff --git a/v3/example-code/closures/student-torture.golden_py3 b/v3/example-code/closures/student-torture.golden_py3 new file mode 100644 index 000000000..1541a910c --- /dev/null +++ b/v3/example-code/closures/student-torture.golden_py3 @@ -0,0 +1,3726 @@ +{ + "code": "# Example to torture students\n# from UC Berkeley CS61a\n# (only works in Python 3)\n\ndef f(t):\n def g(t):\n def h():\n nonlocal t\n t += 1\n return h, lambda: t\n h, gt = g(0)\n return h, gt, lambda: t\n\nh, gt, ft = f(0)\nft(), gt()\nh()\nft(), gt()\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 5, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 14, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 5, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ] + }, + "line": 6, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 11, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 6, + "event": "call" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "t": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2", + "ordered_varnames": [ + "t" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ] + }, + "line": 7, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p", + "ordered_varnames": [ + "t", + "h" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "g", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "g", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + null + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g", + "h", + "gt" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f" + ], + "stdout": "", + "func_name": "f", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": true, + "is_parent": true, + "func_name": "f", + "is_zombie": false, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + null + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 15, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 3, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f3", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 4, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f4", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 16, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 7, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 0 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 9, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "h", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 5, + "encoded_locals": { + "__return__": null + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "h", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "h_f5", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 9, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 17, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 12, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 12, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 6, + "encoded_locals": { + "__return__": 0 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "_f6", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 12, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 10, + "event": "call" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": {}, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 10, + "event": "step_line" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + }, + { + "frame_id": 7, + "encoded_locals": { + "__return__": 1 + }, + "is_highlighted": true, + "is_parent": false, + "func_name": "", + "is_zombie": false, + "parent_frame_id_list": [ + 2, + 1 + ], + "unique_hash": "_f7", + "ordered_varnames": [ + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 10, + "event": "return" + }, + { + "ordered_globals": [ + "f", + "h", + "gt", + "ft" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [ + { + "frame_id": 1, + "encoded_locals": { + "__return__": [ + "REF", + 6 + ], + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "t": 0, + "g": [ + "REF", + 2 + ] + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "f", + "is_zombie": true, + "parent_frame_id_list": [], + "unique_hash": "f_f1_p_z", + "ordered_varnames": [ + "t", + "g", + "h", + "gt", + "__return__" + ] + }, + { + "frame_id": 2, + "encoded_locals": { + "__return__": [ + "REF", + 4 + ], + "h": [ + "REF", + 3 + ], + "t": 1 + }, + "is_highlighted": false, + "is_parent": true, + "func_name": "g", + "is_zombie": true, + "parent_frame_id_list": [ + 1 + ], + "unique_hash": "g_f2_p_z", + "ordered_varnames": [ + "t", + "h", + "__return__" + ] + } + ], + "globals": { + "h": [ + "REF", + 3 + ], + "gt": [ + "REF", + 5 + ], + "ft": [ + "REF", + 7 + ], + "f": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "FUNCTION", + "f(t)", + null + ], + "2": [ + "FUNCTION", + "g(t)", + 1 + ], + "3": [ + "FUNCTION", + "h()", + 2 + ], + "4": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ] + ], + "5": [ + "FUNCTION", + "()", + 2 + ], + "6": [ + "TUPLE", + [ + "REF", + 3 + ], + [ + "REF", + 5 + ], + [ + "REF", + 7 + ] + ], + "7": [ + "FUNCTION", + "()", + 1 + ] + }, + "line": 17, + "event": "return" + } + ] +} diff --git a/v3/example-code/closures/student-torture.txt b/v3/example-code/closures/student-torture.txt new file mode 100644 index 000000000..c4fa0a10e --- /dev/null +++ b/v3/example-code/closures/student-torture.txt @@ -0,0 +1,17 @@ +# Example to torture students +# from UC Berkeley CS61a +# (only works in Python 3) + +def f(t): + def g(t): + def h(): + nonlocal t + t += 1 + return h, lambda: t + h, gt = g(0) + return h, gt, lambda: t + +h, gt, ft = f(0) +ft(), gt() +h() +ft(), gt() diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 6da40717b..64a8f9fa8 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -373,6 +373,11 @@ $(document).ready(function() { $.get("example-code/closures/lambda-param.txt", setCodeMirrorVal); return false; }); + $('#tortureLink').click(function() { + $.get("example-code/closures/student-torture.txt", setCodeMirrorVal); + return false; + }); + $('#aliasing1Link').click(function() { diff --git a/v3/visualize.html b/v3/visualize.html index 2b5ce5b94..3f5f27863 100644 --- a/v3/visualize.html +++ b/v3/visualize.html @@ -108,13 +108,14 @@ closure 1 | closure 2 | closure 3 | -closure 4 +closure 4 | +closure 5
    -closure 5 | list map | summation | -lambda param +lambda param | +student torture

    From 167e51e2c46d71dd2018ca52dd2d536bbadd61ec Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 2 Oct 2012 14:49:22 -0700 Subject: [PATCH 451/502] fixed a tiny corner case --- v3/pg_encoder.py | 11 ++++++- v3/tests/backend-tests/cmodule.golden | 37 +++++++++++++++++++++++ v3/tests/backend-tests/cmodule.golden_py3 | 37 +++++++++++++++++++++++ v3/tests/backend-tests/cmodule.txt | 3 ++ 4 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 v3/tests/backend-tests/cmodule.golden create mode 100644 v3/tests/backend-tests/cmodule.golden_py3 create mode 100644 v3/tests/backend-tests/cmodule.txt diff --git a/v3/pg_encoder.py b/v3/pg_encoder.py index c57c20f08..1d8c57a7b 100644 --- a/v3/pg_encoder.py +++ b/v3/pg_encoder.py @@ -219,7 +219,16 @@ def encode(self, dat): def encode_class_or_instance(self, dat, new_obj): """Encode dat as a class or instance.""" if is_instance(dat): - class_name = get_name(dat.__class__) + if hasattr(dat, '__class__'): + # common case ... + class_name = get_name(dat.__class__) + else: + # super special case for something like + # "from datetime import datetime_CAPI" in Python 3.2, + # which is some weird 'PyCapsule' type ... + # http://docs.python.org/release/3.1.5/c-api/capsule.html + class_name = get_name(type(dat)) + new_obj.extend(['INSTANCE', class_name]) # don't traverse inside modules, or else risk EXPLODING the visualization if class_name == 'module': diff --git a/v3/tests/backend-tests/cmodule.golden b/v3/tests/backend-tests/cmodule.golden new file mode 100644 index 000000000..e29fbc456 --- /dev/null +++ b/v3/tests/backend-tests/cmodule.golden @@ -0,0 +1,37 @@ +{ + "code": "# importing some C-ish module ...\n# make sure this doesn't crash in Python 2 or 3\nfrom datetime import datetime_CAPI\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "datetime_CAPI" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "datetime_CAPI": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "PyCapsule", + "" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/cmodule.golden_py3 b/v3/tests/backend-tests/cmodule.golden_py3 new file mode 100644 index 000000000..562a7996a --- /dev/null +++ b/v3/tests/backend-tests/cmodule.golden_py3 @@ -0,0 +1,37 @@ +{ + "code": "# importing some C-ish module ...\n# make sure this doesn't crash in Python 2 or 3\nfrom datetime import datetime_CAPI\n", + "trace": [ + { + "ordered_globals": [], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": {}, + "heap": {}, + "line": 3, + "event": "step_line" + }, + { + "ordered_globals": [ + "datetime_CAPI" + ], + "stdout": "", + "func_name": "", + "stack_to_render": [], + "globals": { + "datetime_CAPI": [ + "REF", + 1 + ] + }, + "heap": { + "1": [ + "INSTANCE", + "PyCapsule" + ] + }, + "line": 3, + "event": "return" + } + ] +} diff --git a/v3/tests/backend-tests/cmodule.txt b/v3/tests/backend-tests/cmodule.txt new file mode 100644 index 000000000..53bb90850 --- /dev/null +++ b/v3/tests/backend-tests/cmodule.txt @@ -0,0 +1,3 @@ +# importing some C-ish module ... +# make sure this doesn't crash in Python 2 or 3 +from datetime import datetime_CAPI From 6e26f9184c0fa010928252a39d1dee098ed44fd0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 2 Oct 2012 16:01:13 -0700 Subject: [PATCH 452/502] committed john's updates to generate_json_trace.py script --- v3/generate_json_trace.py | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/v3/generate_json_trace.py b/v3/generate_json_trace.py index 117eade81..af3c336fa 100644 --- a/v3/generate_json_trace.py +++ b/v3/generate_json_trace.py @@ -1,18 +1,7 @@ # Generates a JSON trace that is compatible with the js/pytutor.js frontend -import optparse - -CUMULATIVE_MODE = False - -COMPACT = False -if COMPACT: - INDENT_LEVEL=None -else: - INDENT_LEVEL=2 - - import sys, pg_logger, json - +from optparse import OptionParser # To make regression tests work consistently across platforms, # standardize display of floats to 3 significant figures @@ -21,27 +10,31 @@ # http://stackoverflow.com/questions/1447287/format-floats-with-standard-json-module json.encoder.FLOAT_REPR = lambda f: ('%.3f' % f) - def json_finalizer(input_code, output_trace): ret = dict(code=input_code, trace=output_trace) json_output = json.dumps(ret, indent=INDENT_LEVEL) print(json_output) - def js_var_finalizer(input_code, output_trace): global JS_VARNAME ret = dict(code=input_code, trace=output_trace) json_output = json.dumps(ret, indent=None) print("var %s = %s;" % (JS_VARNAME, json_output)) - -parser = optparse.OptionParser() +parser = OptionParser(usage="Generate JSON trace for pytutor") +parser.add_option('-c', '--cumulative', default=False, action='store_true', + help='output cumulative trace.') +parser.add_option('-o', '--compact', default=False, action='store_true', + help='output compact trace.') parser.add_option("--create_jsvar", dest="js_varname", help="Create a JavaScript variable out of the trace") (options, args) = parser.parse_args() +INDENT_LEVEL = None if options.compact else 2 + +fin = sys.stdin if args[0] == "-" else open(args[0]) if options.js_varname: JS_VARNAME = options.js_varname - pg_logger.exec_script_str(open(args[0]).read(), CUMULATIVE_MODE, js_var_finalizer) + pg_logger.exec_script_str(fin.read(), options.cumulative, js_var_finalizer) else: - pg_logger.exec_script_str(open(args[0]).read(), CUMULATIVE_MODE, json_finalizer) + pg_logger.exec_script_str(fin.read(), options.cumulative, json_finalizer) From 618bcef82c836e2896ddd4e9bf5dcb84b7dd1655 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 2 Oct 2012 16:30:17 -0700 Subject: [PATCH 453/502] beautiful further fix to show parent frames of functions nested within data structures (by John DeNero) --- .../closures/student-torture.golden_py3 | 4 +-- v3/pg_encoder.py | 19 ++++++---- v3/pg_logger.py | 36 +++++-------------- .../backend-tests/john-lambda-lambda.golden | 4 +-- .../john-lambda-lambda.golden_py3 | 4 +-- .../john-triple-nesting.golden_py3 | 4 +-- 6 files changed, 28 insertions(+), 43 deletions(-) diff --git a/v3/example-code/closures/student-torture.golden_py3 b/v3/example-code/closures/student-torture.golden_py3 index 1541a910c..b6d799315 100644 --- a/v3/example-code/closures/student-torture.golden_py3 +++ b/v3/example-code/closures/student-torture.golden_py3 @@ -460,7 +460,7 @@ "5": [ "FUNCTION", "()", - null + 2 ] }, "line": 10, @@ -699,7 +699,7 @@ "7": [ "FUNCTION", "()", - null + 1 ] }, "line": 12, diff --git a/v3/pg_encoder.py b/v3/pg_encoder.py index 1d8c57a7b..c47a05169 100644 --- a/v3/pg_encoder.py +++ b/v3/pg_encoder.py @@ -122,7 +122,8 @@ def set_function_parent_frame_ID(self, ref_obj, enclosing_frame_id): # return either a primitive object or an object reference; # and as a side effect, update encoded_heap_objects - def encode(self, dat): + def encode(self, dat, get_parent): + """Encode a data value DAT using the GET_PARENT function for parent ids.""" # primitive type if type(dat) in (int, long, float, str, bool, type(None)): if type(dat) is float: @@ -159,21 +160,21 @@ def encode(self, dat): if typ == list: new_obj.append('LIST') for e in dat: - new_obj.append(self.encode(e)) + new_obj.append(self.encode(e, get_parent)) elif typ == tuple: new_obj.append('TUPLE') for e in dat: - new_obj.append(self.encode(e)) + new_obj.append(self.encode(e, get_parent)) elif typ == set: new_obj.append('SET') for e in dat: - new_obj.append(self.encode(e)) + new_obj.append(self.encode(e, get_parent)) elif typ == dict: new_obj.append('DICT') for (k, v) in dat.items(): # don't display some built-in locals ... if k not in ('__module__', '__return__', '__locals__'): - new_obj.append([self.encode(k), self.encode(v)]) + new_obj.append([self.encode(k, get_parent), self.encode(v, get_parent)]) elif typ in (types.FunctionType, types.MethodType): if is_python3: argspec = inspect.getfullargspec(dat) @@ -195,7 +196,11 @@ def encode(self, dat): func_name = get_name(dat) pretty_name = func_name + '(' + ', '.join(printed_args) + ')' - new_obj.extend(['FUNCTION', pretty_name, None]) # the final element will be filled in later + encoded_val = ['FUNCTION', pretty_name, None] + if get_parent: + enclosing_frame_id = get_parent(dat) + encoded_val[2] = enclosing_frame_id + new_obj.extend(encoded_val) elif typ is types.BuiltinFunctionType: pretty_name = get_name(dat) + '(...)' new_obj.extend(['FUNCTION', pretty_name, None]) @@ -247,5 +252,5 @@ def encode_class_or_instance(self, dat, new_obj): user_attrs = [] for attr in user_attrs: - new_obj.append([self.encode(attr), self.encode(dat.__dict__[attr])]) + new_obj.append([self.encode(attr, None), self.encode(dat.__dict__[attr], None)]) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index 515e85fde..ce8a477d5 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -247,6 +247,12 @@ def __init__(self, cumulative_mode, finalizer_func): def get_frame_id(self, cur_frame): return self.frame_ordered_ids[cur_frame] + # Returns the (lexical) parent of a function value. + def get_parent_of_function(self, val): + if val not in self.closures: + return None + return self.get_frame_id(self.closures[val]) + # Returns the (lexical) parent frame of the function that was called # to create the stack frame 'frame'. @@ -467,20 +473,7 @@ def create_encoded_stack_entry(cur_frame): if k == '__module__': continue - encoded_val = self.encoder.encode(v) - - # UGH, this is SUPER ugly but needed for nested function defs - # - # NB: Known limitation -- this will work only for functions - # defined on the top level, not those that are nested within, - # say, tuples or lists - if type(v) in (types.FunctionType, types.MethodType): - try: - enclosing_frame = self.closures[v] - enclosing_frame_id = self.get_frame_id(enclosing_frame) - self.encoder.set_function_parent_frame_ID(encoded_val, enclosing_frame_id) - except KeyError: - pass + encoded_val = self.encoder.encode(v, self.get_parent_of_function) encoded_locals[k] = encoded_val @@ -590,20 +583,7 @@ def create_encoded_stack_entry(cur_frame): # effects of aliasing later down the line ... encoded_globals = {} for (k, v) in get_user_globals(tos[0]).items(): - encoded_val = self.encoder.encode(v) - - # UGH, this is SUPER ugly but needed for nested function defs - # - # NB: Known limitation -- this will work only for functions - # defined on the top level, not those that are nested within, - # say, tuples or lists - if type(v) in (types.FunctionType, types.MethodType): - try: - enclosing_frame = self.closures[v] - enclosing_frame_id = self.get_frame_id(enclosing_frame) - self.encoder.set_function_parent_frame_ID(encoded_val, enclosing_frame_id) - except KeyError: - pass + encoded_val = self.encoder.encode(v, self.get_parent_of_function) encoded_globals[k] = encoded_val if k not in self.all_globals_in_order: diff --git a/v3/tests/backend-tests/john-lambda-lambda.golden b/v3/tests/backend-tests/john-lambda-lambda.golden index 8cfb591a5..c1ddaf182 100644 --- a/v3/tests/backend-tests/john-lambda-lambda.golden +++ b/v3/tests/backend-tests/john-lambda-lambda.golden @@ -326,7 +326,7 @@ "4": [ "FUNCTION", "(b)", - null + 2 ] }, "line": 5, @@ -462,7 +462,7 @@ "4": [ "FUNCTION", "(b)", - null + 2 ] }, "line": 5, diff --git a/v3/tests/backend-tests/john-lambda-lambda.golden_py3 b/v3/tests/backend-tests/john-lambda-lambda.golden_py3 index 8cfb591a5..c1ddaf182 100644 --- a/v3/tests/backend-tests/john-lambda-lambda.golden_py3 +++ b/v3/tests/backend-tests/john-lambda-lambda.golden_py3 @@ -326,7 +326,7 @@ "4": [ "FUNCTION", "(b)", - null + 2 ] }, "line": 5, @@ -462,7 +462,7 @@ "4": [ "FUNCTION", "(b)", - null + 2 ] }, "line": 5, diff --git a/v3/tests/backend-tests/john-triple-nesting.golden_py3 b/v3/tests/backend-tests/john-triple-nesting.golden_py3 index e99b5bfae..8c9415e9b 100644 --- a/v3/tests/backend-tests/john-triple-nesting.golden_py3 +++ b/v3/tests/backend-tests/john-triple-nesting.golden_py3 @@ -460,7 +460,7 @@ "5": [ "FUNCTION", "()", - null + 2 ] }, "line": 7, @@ -699,7 +699,7 @@ "7": [ "FUNCTION", "()", - null + 1 ] }, "line": 9, From d1cb398711431364f502ad220198d9288d80f6dd Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 2 Oct 2012 22:00:42 -0700 Subject: [PATCH 454/502] added demo --- v3/commentary-bubbles-demo.html | 36 +++++++++++++++++++++++++++++++++ v3/commentary-bubbles-demo.js | 13 ++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 v3/commentary-bubbles-demo.html create mode 100644 v3/commentary-bubbles-demo.js diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html new file mode 100644 index 000000000..541dcddb5 --- /dev/null +++ b/v3/commentary-bubbles-demo.html @@ -0,0 +1,36 @@ + + + + + Online Python Tutor commentary bubbles demo + + + + + + + + + + + + + + + + + + + + + + + + + +

  • @@ -137,7 +133,6 @@

    Embed visualizations in digital textbooks

    -
    @@ -165,7 +160,6 @@

    Share visualizations online

    -

    More Details:

      @@ -191,8 +185,6 @@

      Share visualizations online

    - -
    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 12 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
  • + + + diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js new file mode 100644 index 000000000..3d9f69712 --- /dev/null +++ b/v3/commentary-bubbles-demo.js @@ -0,0 +1,13 @@ +// Run: +// python generate_json_trace.py --create_jsvar=listSumTrace tests/backend-tests/list_sum.txt +// and copy-and-paste the output line into here: +var listSumTrace = {"code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "return"}]}; + + +/* +$(document).ready(function() { + var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, + {embeddedMode: false, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); +}); +*/ From b8e26187c37b91c4c100a1c7d54a07f68ed2e506 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 3 Oct 2012 11:21:12 -0700 Subject: [PATCH 455/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index 6fd2e78b8..50b432db5 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -32,6 +32,14 @@ so that OPT visualizations (and the surrounding user interface) look good on dis ranging from smartphones to tablets to laptops to giant desktop monitors. +## Offline mode for use as a production debugger (medium) + +From a reader comment: "As a teaching tool it is invaluable, not only for teaching python, but for programming in general (what is going on in memory...). +I've actively used it to debug / trace short pieces of code. Any chance of having it offline (and without the limitations of an online tool like the inability to load all modules)? That would make a perfect pdb visualization tool." + +You could imagine running a webserver on localhost and using OPT as a graphical frontend for pdb; interesting idea! + + ## Optimize display of object-oriented programs (medium) This is a good project for an object-oriented programming enthusiast. From c0cdb4e785138cd3a1e4860ddaf3b959cdacaa79 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 4 Oct 2012 16:43:59 -0700 Subject: [PATCH 456/502] detach jsPlumb connectors from stack frame values when they disappear and prepare for jquery 1.8 migration --- .../jquery-ui-1.8.24.custom.css} | 64 +++++++++------- v3/js/jquery-1.8.2.min.js | 2 + v3/js/jquery-ui-1.8.24.custom.min.js | 21 +++++ v3/js/jquery.jsPlumb-1.3.15-all-min.js | 1 + v3/js/pytutor.js | 76 ++++++++++++------- 5 files changed, 108 insertions(+), 56 deletions(-) rename v3/css/{smoothness/jquery-ui-1.8.21.custom.css => ui-lightness/jquery-ui-1.8.24.custom.css} (80%) create mode 100644 v3/js/jquery-1.8.2.min.js create mode 100644 v3/js/jquery-ui-1.8.24.custom.min.js create mode 100644 v3/js/jquery.jsPlumb-1.3.15-all-min.js diff --git a/v3/css/smoothness/jquery-ui-1.8.21.custom.css b/v3/css/ui-lightness/jquery-ui-1.8.24.custom.css similarity index 80% rename from v3/css/smoothness/jquery-ui-1.8.21.custom.css rename to v3/css/ui-lightness/jquery-ui-1.8.24.custom.css index 737a94d4f..71156ca03 100644 --- a/v3/css/smoothness/jquery-ui-1.8.21.custom.css +++ b/v3/css/ui-lightness/jquery-ui-1.8.24.custom.css @@ -1,5 +1,5 @@ /*! - * jQuery UI CSS Framework 1.8.21 + * jQuery UI CSS Framework 1.8.24 * * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -39,7 +39,7 @@ /*! - * jQuery UI CSS Framework 1.8.21 + * jQuery UI CSS Framework 1.8.24 * * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -47,37 +47,43 @@ * * http://docs.jquery.com/UI/Theming/API * - * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=02_glass.png&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=02_glass.png&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=02_glass.png&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px + * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS,%20Tahoma,%20Verdana,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=12_gloss_wave.png&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=03_highlight_soft.png&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=02_glass.png&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=02_glass.png&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=03_highlight_soft.png&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=08_diagonals_thick.png&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=08_diagonals_thick.png&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=01_flat.png&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px */ /* Component containers ----------------------------------*/ -.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; } +.ui-widget { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1.1em; } .ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; } -.ui-widget-content a { color: #222222; } -.ui-widget-header { border: 1px solid #aaaaaa; background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; } -.ui-widget-header a { color: #222222; } +.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Trebuchet MS, Tahoma, Verdana, Arial, sans-serif; font-size: 1em; } +/* pgbovine - switch border from #dddddd to #ccc */ +.ui-widget-content { border: 1px solid #ccc; background: #eeeeee url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x; color: #333333; } +.ui-widget-content a { color: #333333; } +.ui-widget-header { border: 1px solid #e78f08; background: #f6a828 url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x; color: #ffffff; font-weight: bold; } +.ui-widget-header a { color: #ffffff; } /* Interaction states ----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } -.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } +.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #cccccc; background: #f6f6f6 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #1c94c4; } +.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #1c94c4; text-decoration: none; } + +/* pgbovine - eliminate hover colors */ +/* +.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #fbcb09; background: #fdf5ce url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #c77405; } +.ui-state-hover a, .ui-state-hover a:hover { color: #c77405; text-decoration: none; } +*/ + +.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #fbd850; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #eb8f00; } +.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #eb8f00; text-decoration: none; } .ui-widget :active { outline: none; } /* Interaction Cues ----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; } +.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fed22f; background: #ffe45c url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x; color: #363636; } .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; color: #cd0a0a; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } +.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #b81900 url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% repeat; color: #ffffff; } +.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #ffffff; } +.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #ffffff; } .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } @@ -88,12 +94,12 @@ /* states and images */ .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); } +.ui-widget-header .ui-icon {background-image: url(images/ui-icons_ffffff_256x240.png); } +.ui-state-default .ui-icon { background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-active .ui-icon {background-image: url(images/ui-icons_ef8c08_256x240.png); } +.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_228ef1_256x240.png); } +.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_ffd27a_256x240.png); } /* positioning */ .ui-icon-carat-1-n { background-position: 0 0; } @@ -283,9 +289,9 @@ .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; -khtml-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; } /* Overlays */ -.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); } -.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -khtml-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*! - * jQuery UI Slider 1.8.21 +.ui-widget-overlay { background: #666666 url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% repeat; opacity: .50;filter:Alpha(Opacity=50); } +.ui-widget-shadow { margin: -5px 0 0 -5px; padding: 5px; background: #000000 url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x; opacity: .20;filter:Alpha(Opacity=20); -moz-border-radius: 5px; -khtml-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; }/*! + * jQuery UI Slider 1.8.24 * * Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) * Dual licensed under the MIT or GPL Version 2 licenses. @@ -307,4 +313,4 @@ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } .ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; } \ No newline at end of file +.ui-slider-vertical .ui-slider-range-max { top: 0; } diff --git a/v3/js/jquery-1.8.2.min.js b/v3/js/jquery-1.8.2.min.js new file mode 100644 index 000000000..f65cf1dc4 --- /dev/null +++ b/v3/js/jquery-1.8.2.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.2 jquery.com | jquery.org/license */ +(function(a,b){function G(a){var b=F[a]={};return p.each(a.split(s),function(a,c){b[c]=!0}),b}function J(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(I,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:+d+""===d?+d:H.test(d)?p.parseJSON(d):d}catch(f){}p.data(a,c,d)}else d=b}return d}function K(a){var b;for(b in a){if(b==="data"&&p.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function ba(){return!1}function bb(){return!0}function bh(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function bi(a,b){do a=a[b];while(a&&a.nodeType!==1);return a}function bj(a,b,c){b=b||0;if(p.isFunction(b))return p.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return p.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=p.grep(a,function(a){return a.nodeType===1});if(be.test(b))return p.filter(b,d,!c);b=p.filter(b,d)}return p.grep(a,function(a,d){return p.inArray(a,b)>=0===c})}function bk(a){var b=bl.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function bC(a,b){return a.getElementsByTagName(b)[0]||a.appendChild(a.ownerDocument.createElement(b))}function bD(a,b){if(b.nodeType!==1||!p.hasData(a))return;var c,d,e,f=p._data(a),g=p._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;d").appendTo(e.body),c=b.css("display");b.remove();if(c==="none"||c===""){bI=e.body.appendChild(bI||p.extend(e.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!bJ||!bI.createElement)bJ=(bI.contentWindow||bI.contentDocument).document,bJ.write(""),bJ.close();b=bJ.body.appendChild(bJ.createElement(a)),c=bH(b,"display"),e.body.removeChild(bI)}return bS[a]=c,c}function ci(a,b,c,d){var e;if(p.isArray(b))p.each(b,function(b,e){c||ce.test(a)?d(a,e):ci(a+"["+(typeof e=="object"?b:"")+"]",e,c,d)});else if(!c&&p.type(b)==="object")for(e in b)ci(a+"["+e+"]",b[e],c,d);else d(a,b)}function cz(a){return function(b,c){typeof b!="string"&&(c=b,b="*");var d,e,f,g=b.toLowerCase().split(s),h=0,i=g.length;if(p.isFunction(c))for(;h)[^>]*$|#([\w\-]*)$)/,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,y=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,z=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,A=/^-ms-/,B=/-([\da-z])/gi,C=function(a,b){return(b+"").toUpperCase()},D=function(){e.addEventListener?(e.removeEventListener("DOMContentLoaded",D,!1),p.ready()):e.readyState==="complete"&&(e.detachEvent("onreadystatechange",D),p.ready())},E={};p.fn=p.prototype={constructor:p,init:function(a,c,d){var f,g,h,i;if(!a)return this;if(a.nodeType)return this.context=this[0]=a,this.length=1,this;if(typeof a=="string"){a.charAt(0)==="<"&&a.charAt(a.length-1)===">"&&a.length>=3?f=[null,a,null]:f=u.exec(a);if(f&&(f[1]||!c)){if(f[1])return c=c instanceof p?c[0]:c,i=c&&c.nodeType?c.ownerDocument||c:e,a=p.parseHTML(f[1],i,!0),v.test(f[1])&&p.isPlainObject(c)&&this.attr.call(a,c,!0),p.merge(this,a);g=e.getElementById(f[2]);if(g&&g.parentNode){if(g.id!==f[2])return d.find(a);this.length=1,this[0]=g}return this.context=e,this.selector=a,this}return!c||c.jquery?(c||d).find(a):this.constructor(c).find(a)}return p.isFunction(a)?d.ready(a):(a.selector!==b&&(this.selector=a.selector,this.context=a.context),p.makeArray(a,this))},selector:"",jquery:"1.8.2",length:0,size:function(){return this.length},toArray:function(){return k.call(this)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=p.merge(this.constructor(),a);return d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")"),d},each:function(a,b){return p.each(this,a,b)},ready:function(a){return p.ready.promise().done(a),this},eq:function(a){return a=+a,a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(k.apply(this,arguments),"slice",k.call(arguments).join(","))},map:function(a){return this.pushStack(p.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:j,sort:[].sort,splice:[].splice},p.fn.init.prototype=p.fn,p.extend=p.fn.extend=function(){var a,c,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;typeof h=="boolean"&&(k=h,h=arguments[1]||{},i=2),typeof h!="object"&&!p.isFunction(h)&&(h={}),j===i&&(h=this,--i);for(;i0)return;d.resolveWith(e,[p]),p.fn.trigger&&p(e).trigger("ready").off("ready")},isFunction:function(a){return p.type(a)==="function"},isArray:Array.isArray||function(a){return p.type(a)==="array"},isWindow:function(a){return a!=null&&a==a.window},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):E[m.call(a)]||"object"},isPlainObject:function(a){if(!a||p.type(a)!=="object"||a.nodeType||p.isWindow(a))return!1;try{if(a.constructor&&!n.call(a,"constructor")&&!n.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||n.call(a,d)},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},error:function(a){throw new Error(a)},parseHTML:function(a,b,c){var d;return!a||typeof a!="string"?null:(typeof b=="boolean"&&(c=b,b=0),b=b||e,(d=v.exec(a))?[b.createElement(d[1])]:(d=p.buildFragment([a],b,c?null:[]),p.merge([],(d.cacheable?p.clone(d.fragment):d.fragment).childNodes)))},parseJSON:function(b){if(!b||typeof b!="string")return null;b=p.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(w.test(b.replace(y,"@").replace(z,"]").replace(x,"")))return(new Function("return "+b))();p.error("Invalid JSON: "+b)},parseXML:function(c){var d,e;if(!c||typeof c!="string")return null;try{a.DOMParser?(e=new DOMParser,d=e.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(f){d=b}return(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&p.error("Invalid XML: "+c),d},noop:function(){},globalEval:function(b){b&&r.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(A,"ms-").replace(B,C)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,c,d){var e,f=0,g=a.length,h=g===b||p.isFunction(a);if(d){if(h){for(e in a)if(c.apply(a[e],d)===!1)break}else for(;f0&&a[0]&&a[i-1]||i===0||p.isArray(a));if(j)for(;h-1)i.splice(c,1),e&&(c<=g&&g--,c<=h&&h--)}),this},has:function(a){return p.inArray(a,i)>-1},empty:function(){return i=[],this},disable:function(){return i=j=c=b,this},disabled:function(){return!i},lock:function(){return j=b,c||l.disable(),this},locked:function(){return!j},fireWith:function(a,b){return b=b||[],b=[a,b.slice?b.slice():b],i&&(!d||j)&&(e?j.push(b):k(b)),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!d}};return l},p.extend({Deferred:function(a){var b=[["resolve","done",p.Callbacks("once memory"),"resolved"],["reject","fail",p.Callbacks("once memory"),"rejected"],["notify","progress",p.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return p.Deferred(function(c){p.each(b,function(b,d){var f=d[0],g=a[b];e[d[1]](p.isFunction(g)?function(){var a=g.apply(this,arguments);a&&p.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f+"With"](this===e?c:this,[a])}:c[f])}),a=null}).promise()},promise:function(a){return a!=null?p.extend(a,d):d}},e={};return d.pipe=d.then,p.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[a^1][2].disable,b[2][2].lock),e[f[0]]=g.fire,e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=k.call(arguments),d=c.length,e=d!==1||a&&p.isFunction(a.promise)?d:0,f=e===1?a:p.Deferred(),g=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?k.call(arguments):d,c===h?f.notifyWith(b,c):--e||f.resolveWith(b,c)}},h,i,j;if(d>1){h=new Array(d),i=new Array(d),j=new Array(d);for(;b
    a",c=n.getElementsByTagName("*"),d=n.getElementsByTagName("a")[0],d.style.cssText="top:1px;float:left;opacity:.5";if(!c||!c.length)return{};f=e.createElement("select"),g=f.appendChild(e.createElement("option")),h=n.getElementsByTagName("input")[0],b={leadingWhitespace:n.firstChild.nodeType===3,tbody:!n.getElementsByTagName("tbody").length,htmlSerialize:!!n.getElementsByTagName("link").length,style:/top/.test(d.getAttribute("style")),hrefNormalized:d.getAttribute("href")==="/a",opacity:/^0.5/.test(d.style.opacity),cssFloat:!!d.style.cssFloat,checkOn:h.value==="on",optSelected:g.selected,getSetAttribute:n.className!=="t",enctype:!!e.createElement("form").enctype,html5Clone:e.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:e.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},h.checked=!0,b.noCloneChecked=h.cloneNode(!0).checked,f.disabled=!0,b.optDisabled=!g.disabled;try{delete n.test}catch(o){b.deleteExpando=!1}!n.addEventListener&&n.attachEvent&&n.fireEvent&&(n.attachEvent("onclick",m=function(){b.noCloneEvent=!1}),n.cloneNode(!0).fireEvent("onclick"),n.detachEvent("onclick",m)),h=e.createElement("input"),h.value="t",h.setAttribute("type","radio"),b.radioValue=h.value==="t",h.setAttribute("checked","checked"),h.setAttribute("name","t"),n.appendChild(h),i=e.createDocumentFragment(),i.appendChild(n.lastChild),b.checkClone=i.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=h.checked,i.removeChild(h),i.appendChild(n);if(n.attachEvent)for(k in{submit:!0,change:!0,focusin:!0})j="on"+k,l=j in n,l||(n.setAttribute(j,"return;"),l=typeof n[j]=="function"),b[k+"Bubbles"]=l;return p(function(){var c,d,f,g,h="padding:0;margin:0;border:0;display:block;overflow:hidden;",i=e.getElementsByTagName("body")[0];if(!i)return;c=e.createElement("div"),c.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",i.insertBefore(c,i.firstChild),d=e.createElement("div"),c.appendChild(d),d.innerHTML="
    t
    ",f=d.getElementsByTagName("td"),f[0].style.cssText="padding:0;margin:0;border:0;display:none",l=f[0].offsetHeight===0,f[0].style.display="",f[1].style.display="none",b.reliableHiddenOffsets=l&&f[0].offsetHeight===0,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",b.boxSizing=d.offsetWidth===4,b.doesNotIncludeMarginInBodyOffset=i.offsetTop!==1,a.getComputedStyle&&(b.pixelPosition=(a.getComputedStyle(d,null)||{}).top!=="1%",b.boxSizingReliable=(a.getComputedStyle(d,null)||{width:"4px"}).width==="4px",g=e.createElement("div"),g.style.cssText=d.style.cssText=h,g.style.marginRight=g.style.width="0",d.style.width="1px",d.appendChild(g),b.reliableMarginRight=!parseFloat((a.getComputedStyle(g,null)||{}).marginRight)),typeof d.style.zoom!="undefined"&&(d.innerHTML="",d.style.cssText=h+"width:1px;padding:1px;display:inline;zoom:1",b.inlineBlockNeedsLayout=d.offsetWidth===3,d.style.display="block",d.style.overflow="visible",d.innerHTML="
    ",d.firstChild.style.width="5px",b.shrinkWrapBlocks=d.offsetWidth!==3,c.style.zoom=1),i.removeChild(c),c=d=f=g=null}),i.removeChild(n),c=d=f=g=h=i=n=null,b}();var H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,I=/([A-Z])/g;p.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(p.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){return a=a.nodeType?p.cache[a[p.expando]]:a[p.expando],!!a&&!K(a)},data:function(a,c,d,e){if(!p.acceptData(a))return;var f,g,h=p.expando,i=typeof c=="string",j=a.nodeType,k=j?p.cache:a,l=j?a[h]:a[h]&&h;if((!l||!k[l]||!e&&!k[l].data)&&i&&d===b)return;l||(j?a[h]=l=p.deletedIds.pop()||p.guid++:l=h),k[l]||(k[l]={},j||(k[l].toJSON=p.noop));if(typeof c=="object"||typeof c=="function")e?k[l]=p.extend(k[l],c):k[l].data=p.extend(k[l].data,c);return f=k[l],e||(f.data||(f.data={}),f=f.data),d!==b&&(f[p.camelCase(c)]=d),i?(g=f[c],g==null&&(g=f[p.camelCase(c)])):g=f,g},removeData:function(a,b,c){if(!p.acceptData(a))return;var d,e,f,g=a.nodeType,h=g?p.cache:a,i=g?a[p.expando]:p.expando;if(!h[i])return;if(b){d=c?h[i]:h[i].data;if(d){p.isArray(b)||(b in d?b=[b]:(b=p.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,f=b.length;e1,null,!1))},removeData:function(a){return this.each(function(){p.removeData(this,a)})}}),p.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=p._data(a,b),c&&(!d||p.isArray(c)?d=p._data(a,b,p.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=p.queue(a,b),d=c.length,e=c.shift(),f=p._queueHooks(a,b),g=function(){p.dequeue(a,b)};e==="inprogress"&&(e=c.shift(),d--),e&&(b==="fx"&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return p._data(a,c)||p._data(a,c,{empty:p.Callbacks("once memory").add(function(){p.removeData(a,b+"queue",!0),p.removeData(a,c,!0)})})}}),p.fn.extend({queue:function(a,c){var d=2;return typeof a!="string"&&(c=a,a="fx",d--),arguments.length1)},removeAttr:function(a){return this.each(function(){p.removeAttr(this,a)})},prop:function(a,b){return p.access(this,p.prop,a,b,arguments.length>1)},removeProp:function(a){return a=p.propFix[a]||a,this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,f,g,h;if(p.isFunction(a))return this.each(function(b){p(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(s);for(c=0,d=this.length;c=0)d=d.replace(" "+c[f]+" "," ");e.className=a?p.trim(d):""}}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";return p.isFunction(a)?this.each(function(c){p(this).toggleClass(a.call(this,c,this.className,b),b)}):this.each(function(){if(c==="string"){var e,f=0,g=p(this),h=b,i=a.split(s);while(e=i[f++])h=d?h:!g.hasClass(e),g[h?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&p._data(this,"__className__",this.className),this.className=this.className||a===!1?"":p._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c=0)return!0;return!1},val:function(a){var c,d,e,f=this[0];if(!arguments.length){if(f)return c=p.valHooks[f.type]||p.valHooks[f.nodeName.toLowerCase()],c&&"get"in c&&(d=c.get(f,"value"))!==b?d:(d=f.value,typeof d=="string"?d.replace(P,""):d==null?"":d);return}return e=p.isFunction(a),this.each(function(d){var f,g=p(this);if(this.nodeType!==1)return;e?f=a.call(this,d,g.val()):f=a,f==null?f="":typeof f=="number"?f+="":p.isArray(f)&&(f=p.map(f,function(a){return a==null?"":a+""})),c=p.valHooks[this.type]||p.valHooks[this.nodeName.toLowerCase()];if(!c||!("set"in c)||c.set(this,f,"value")===b)this.value=f})}}),p.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,f=a.selectedIndex,g=[],h=a.options,i=a.type==="select-one";if(f<0)return null;c=i?f:0,d=i?f+1:h.length;for(;c=0}),c.length||(a.selectedIndex=-1),c}}},attrFn:{},attr:function(a,c,d,e){var f,g,h,i=a.nodeType;if(!a||i===3||i===8||i===2)return;if(e&&p.isFunction(p.fn[c]))return p(a)[c](d);if(typeof a.getAttribute=="undefined")return p.prop(a,c,d);h=i!==1||!p.isXMLDoc(a),h&&(c=c.toLowerCase(),g=p.attrHooks[c]||(T.test(c)?M:L));if(d!==b){if(d===null){p.removeAttr(a,c);return}return g&&"set"in g&&h&&(f=g.set(a,d,c))!==b?f:(a.setAttribute(c,d+""),d)}return g&&"get"in g&&h&&(f=g.get(a,c))!==null?f:(f=a.getAttribute(c),f===null?b:f)},removeAttr:function(a,b){var c,d,e,f,g=0;if(b&&a.nodeType===1){d=b.split(s);for(;g=0}})});var V=/^(?:textarea|input|select)$/i,W=/^([^\.]*|)(?:\.(.+)|)$/,X=/(?:^|\s)hover(\.\S+|)\b/,Y=/^key/,Z=/^(?:mouse|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=function(a){return p.event.special.hover?a:a.replace(X,"mouseenter$1 mouseleave$1")};p.event={add:function(a,c,d,e,f){var g,h,i,j,k,l,m,n,o,q,r;if(a.nodeType===3||a.nodeType===8||!c||!d||!(g=p._data(a)))return;d.handler&&(o=d,d=o.handler,f=o.selector),d.guid||(d.guid=p.guid++),i=g.events,i||(g.events=i={}),h=g.handle,h||(g.handle=h=function(a){return typeof p!="undefined"&&(!a||p.event.triggered!==a.type)?p.event.dispatch.apply(h.elem,arguments):b},h.elem=a),c=p.trim(_(c)).split(" ");for(j=0;j=0&&(s=s.slice(0,-1),i=!0),s.indexOf(".")>=0&&(t=s.split("."),s=t.shift(),t.sort());if((!f||p.event.customEvent[s])&&!p.event.global[s])return;c=typeof c=="object"?c[p.expando]?c:new p.Event(s,c):new p.Event(s),c.type=s,c.isTrigger=!0,c.exclusive=i,c.namespace=t.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+t.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,m=s.indexOf(":")<0?"on"+s:"";if(!f){h=p.cache;for(j in h)h[j].events&&h[j].events[s]&&p.event.trigger(c,d,h[j].handle.elem,!0);return}c.result=b,c.target||(c.target=f),d=d!=null?p.makeArray(d):[],d.unshift(c),n=p.event.special[s]||{};if(n.trigger&&n.trigger.apply(f,d)===!1)return;q=[[f,n.bindType||s]];if(!g&&!n.noBubble&&!p.isWindow(f)){r=n.delegateType||s,k=$.test(r+s)?f:f.parentNode;for(l=f;k;k=k.parentNode)q.push([k,r]),l=k;l===(f.ownerDocument||e)&&q.push([l.defaultView||l.parentWindow||a,r])}for(j=0;j=0:p.find(m,this,null,[f]).length),h[m]&&j.push(l);j.length&&u.push({elem:f,matches:j})}o.length>q&&u.push({elem:this,matches:o.slice(q)});for(d=0;d0?this.on(b,null,a,c):this.trigger(b)},Y.test(b)&&(p.event.fixHooks[b]=p.event.keyHooks),Z.test(b)&&(p.event.fixHooks[b]=p.event.mouseHooks)}),function(a,b){function bc(a,b,c,d){c=c||[],b=b||r;var e,f,i,j,k=b.nodeType;if(!a||typeof a!="string")return c;if(k!==1&&k!==9)return[];i=g(b);if(!i&&!d)if(e=P.exec(a))if(j=e[1]){if(k===9){f=b.getElementById(j);if(!f||!f.parentNode)return c;if(f.id===j)return c.push(f),c}else if(b.ownerDocument&&(f=b.ownerDocument.getElementById(j))&&h(b,f)&&f.id===j)return c.push(f),c}else{if(e[2])return w.apply(c,x.call(b.getElementsByTagName(a),0)),c;if((j=e[3])&&_&&b.getElementsByClassName)return w.apply(c,x.call(b.getElementsByClassName(j),0)),c}return bp(a.replace(L,"$1"),b,c,d,i)}function bd(a){return function(b){var c=b.nodeName.toLowerCase();return c==="input"&&b.type===a}}function be(a){return function(b){var c=b.nodeName.toLowerCase();return(c==="input"||c==="button")&&b.type===a}}function bf(a){return z(function(b){return b=+b,z(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function bg(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}function bh(a,b){var c,d,f,g,h,i,j,k=C[o][a];if(k)return b?0:k.slice(0);h=a,i=[],j=e.preFilter;while(h){if(!c||(d=M.exec(h)))d&&(h=h.slice(d[0].length)),i.push(f=[]);c=!1;if(d=N.exec(h))f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=d[0].replace(L," ");for(g in e.filter)(d=W[g].exec(h))&&(!j[g]||(d=j[g](d,r,!0)))&&(f.push(c=new q(d.shift())),h=h.slice(c.length),c.type=g,c.matches=d);if(!c)break}return b?h.length:h?bc.error(a):C(a,i).slice(0)}function bi(a,b,d){var e=b.dir,f=d&&b.dir==="parentNode",g=u++;return b.first?function(b,c,d){while(b=b[e])if(f||b.nodeType===1)return a(b,c,d)}:function(b,d,h){if(!h){var i,j=t+" "+g+" ",k=j+c;while(b=b[e])if(f||b.nodeType===1){if((i=b[o])===k)return b.sizset;if(typeof i=="string"&&i.indexOf(j)===0){if(b.sizset)return b}else{b[o]=k;if(a(b,d,h))return b.sizset=!0,b;b.sizset=!1}}}else while(b=b[e])if(f||b.nodeType===1)if(a(b,d,h))return b}}function bj(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function bk(a,b,c,d,e){var f,g=[],h=0,i=a.length,j=b!=null;for(;h-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==l)||((b=c).nodeType?j(a,c,d):k(a,c,d))}];for(;i1&&bj(m),i>1&&a.slice(0,i-1).join("").replace(L,"$1"),c,i0,f=a.length>0,g=function(h,i,j,k,m){var n,o,p,q=[],s=0,u="0",x=h&&[],y=m!=null,z=l,A=h||f&&e.find.TAG("*",m&&i.parentNode||i),B=t+=z==null?1:Math.E;y&&(l=i!==r&&i,c=g.el);for(;(n=A[u])!=null;u++){if(f&&n){for(o=0;p=a[o];o++)if(p(n,i,j)){k.push(n);break}y&&(t=B,c=++g.el)}d&&((n=!p&&n)&&s--,h&&x.push(n))}s+=u;if(d&&u!==s){for(o=0;p=b[o];o++)p(x,q,i,j);if(h){if(s>0)while(u--)!x[u]&&!q[u]&&(q[u]=v.call(k));q=bk(q)}w.apply(k,q),y&&!h&&q.length>0&&s+b.length>1&&bc.uniqueSort(k)}return y&&(t=B,l=z),x};return g.el=0,d?z(g):g}function bo(a,b,c,d){var e=0,f=b.length;for(;e2&&(j=h[0]).type==="ID"&&b.nodeType===9&&!f&&e.relative[h[1].type]){b=e.find.ID(j.matches[0].replace(V,""),b,f)[0];if(!b)return c;a=a.slice(h.shift().length)}for(g=W.POS.test(a)?-1:h.length-1;g>=0;g--){j=h[g];if(e.relative[k=j.type])break;if(l=e.find[k])if(d=l(j.matches[0].replace(V,""),R.test(h[0].type)&&b.parentNode||b,f)){h.splice(g,1),a=d.length&&h.join("");if(!a)return w.apply(c,x.call(d,0)),c;break}}}return i(a,m)(d,b,f,c,R.test(a)),c}function bq(){}var c,d,e,f,g,h,i,j,k,l,m=!0,n="undefined",o=("sizcache"+Math.random()).replace(".",""),q=String,r=a.document,s=r.documentElement,t=0,u=0,v=[].pop,w=[].push,x=[].slice,y=[].indexOf||function(a){var b=0,c=this.length;for(;be.cacheLength&&delete a[b.shift()],a[c]=d},a)},B=A(),C=A(),D=A(),E="[\\x20\\t\\r\\n\\f]",F="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",G=F.replace("w","w#"),H="([*^$|!~]?=)",I="\\["+E+"*("+F+")"+E+"*(?:"+H+E+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+G+")|)|)"+E+"*\\]",J=":("+F+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+I+")|[^:]|\\\\.)*|.*))\\)|)",K=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+E+"*((?:-\\d)?\\d*)"+E+"*\\)|)(?=[^-]|$)",L=new RegExp("^"+E+"+|((?:^|[^\\\\])(?:\\\\.)*)"+E+"+$","g"),M=new RegExp("^"+E+"*,"+E+"*"),N=new RegExp("^"+E+"*([\\x20\\t\\r\\n\\f>+~])"+E+"*"),O=new RegExp(J),P=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,Q=/^:not/,R=/[\x20\t\r\n\f]*[+~]/,S=/:not\($/,T=/h\d/i,U=/input|select|textarea|button/i,V=/\\(?!\\)/g,W={ID:new RegExp("^#("+F+")"),CLASS:new RegExp("^\\.("+F+")"),NAME:new RegExp("^\\[name=['\"]?("+F+")['\"]?\\]"),TAG:new RegExp("^("+F.replace("w","w*")+")"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+J),POS:new RegExp(K,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+E+"*(even|odd|(([+-]|)(\\d*)n|)"+E+"*(?:([+-]|)"+E+"*(\\d+)|))"+E+"*\\)|)","i"),needsContext:new RegExp("^"+E+"*[>+~]|"+K,"i")},X=function(a){var b=r.createElement("div");try{return a(b)}catch(c){return!1}finally{b=null}},Y=X(function(a){return a.appendChild(r.createComment("")),!a.getElementsByTagName("*").length}),Z=X(function(a){return a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!==n&&a.firstChild.getAttribute("href")==="#"}),$=X(function(a){a.innerHTML="";var b=typeof a.lastChild.getAttribute("multiple");return b!=="boolean"&&b!=="string"}),_=X(function(a){return a.innerHTML="",!a.getElementsByClassName||!a.getElementsByClassName("e").length?!1:(a.lastChild.className="e",a.getElementsByClassName("e").length===2)}),ba=X(function(a){a.id=o+0,a.innerHTML="
    ",s.insertBefore(a,s.firstChild);var b=r.getElementsByName&&r.getElementsByName(o).length===2+r.getElementsByName(o+0).length;return d=!r.getElementById(o),s.removeChild(a),b});try{x.call(s.childNodes,0)[0].nodeType}catch(bb){x=function(a){var b,c=[];for(;b=this[a];a++)c.push(b);return c}}bc.matches=function(a,b){return bc(a,null,null,b)},bc.matchesSelector=function(a,b){return bc(b,null,null,[a]).length>0},f=bc.getText=function(a){var b,c="",d=0,e=a.nodeType;if(e){if(e===1||e===9||e===11){if(typeof a.textContent=="string")return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=f(a)}else if(e===3||e===4)return a.nodeValue}else for(;b=a[d];d++)c+=f(b);return c},g=bc.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?b.nodeName!=="HTML":!1},h=bc.contains=s.contains?function(a,b){var c=a.nodeType===9?a.documentElement:a,d=b&&b.parentNode;return a===d||!!(d&&d.nodeType===1&&c.contains&&c.contains(d))}:s.compareDocumentPosition?function(a,b){return b&&!!(a.compareDocumentPosition(b)&16)}:function(a,b){while(b=b.parentNode)if(b===a)return!0;return!1},bc.attr=function(a,b){var c,d=g(a);return d||(b=b.toLowerCase()),(c=e.attrHandle[b])?c(a):d||$?a.getAttribute(b):(c=a.getAttributeNode(b),c?typeof a[b]=="boolean"?a[b]?b:null:c.specified?c.value:null:null)},e=bc.selectors={cacheLength:50,createPseudo:z,match:W,attrHandle:Z?{}:{href:function(a){return a.getAttribute("href",2)},type:function(a){return a.getAttribute("type")}},find:{ID:d?function(a,b,c){if(typeof b.getElementById!==n&&!c){var d=b.getElementById(a);return d&&d.parentNode?[d]:[]}}:function(a,c,d){if(typeof c.getElementById!==n&&!d){var e=c.getElementById(a);return e?e.id===a||typeof e.getAttributeNode!==n&&e.getAttributeNode("id").value===a?[e]:b:[]}},TAG:Y?function(a,b){if(typeof b.getElementsByTagName!==n)return b.getElementsByTagName(a)}:function(a,b){var c=b.getElementsByTagName(a);if(a==="*"){var d,e=[],f=0;for(;d=c[f];f++)d.nodeType===1&&e.push(d);return e}return c},NAME:ba&&function(a,b){if(typeof b.getElementsByName!==n)return b.getElementsByName(name)},CLASS:_&&function(a,b,c){if(typeof b.getElementsByClassName!==n&&!c)return b.getElementsByClassName(a)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(V,""),a[3]=(a[4]||a[5]||"").replace(V,""),a[2]==="~="&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),a[1]==="nth"?(a[2]||bc.error(a[0]),a[3]=+(a[3]?a[4]+(a[5]||1):2*(a[2]==="even"||a[2]==="odd")),a[4]=+(a[6]+a[7]||a[2]==="odd")):a[2]&&bc.error(a[0]),a},PSEUDO:function(a){var b,c;if(W.CHILD.test(a[0]))return null;if(a[3])a[2]=a[3];else if(b=a[4])O.test(b)&&(c=bh(b,!0))&&(c=b.indexOf(")",b.length-c)-b.length)&&(b=b.slice(0,c),a[0]=a[0].slice(0,c)),a[2]=b;return a.slice(0,3)}},filter:{ID:d?function(a){return a=a.replace(V,""),function(b){return b.getAttribute("id")===a}}:function(a){return a=a.replace(V,""),function(b){var c=typeof b.getAttributeNode!==n&&b.getAttributeNode("id");return c&&c.value===a}},TAG:function(a){return a==="*"?function(){return!0}:(a=a.replace(V,"").toLowerCase(),function(b){return b.nodeName&&b.nodeName.toLowerCase()===a})},CLASS:function(a){var b=B[o][a];return b||(b=B(a,new RegExp("(^|"+E+")"+a+"("+E+"|$)"))),function(a){return b.test(a.className||typeof a.getAttribute!==n&&a.getAttribute("class")||"")}},ATTR:function(a,b,c){return function(d,e){var f=bc.attr(d,a);return f==null?b==="!=":b?(f+="",b==="="?f===c:b==="!="?f!==c:b==="^="?c&&f.indexOf(c)===0:b==="*="?c&&f.indexOf(c)>-1:b==="$="?c&&f.substr(f.length-c.length)===c:b==="~="?(" "+f+" ").indexOf(c)>-1:b==="|="?f===c||f.substr(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d){return a==="nth"?function(a){var b,e,f=a.parentNode;if(c===1&&d===0)return!0;if(f){e=0;for(b=f.firstChild;b;b=b.nextSibling)if(b.nodeType===1){e++;if(a===b)break}}return e-=d,e===c||e%c===0&&e/c>=0}:function(b){var c=b;switch(a){case"only":case"first":while(c=c.previousSibling)if(c.nodeType===1)return!1;if(a==="first")return!0;c=b;case"last":while(c=c.nextSibling)if(c.nodeType===1)return!1;return!0}}},PSEUDO:function(a,b){var c,d=e.pseudos[a]||e.setFilters[a.toLowerCase()]||bc.error("unsupported pseudo: "+a);return d[o]?d(b):d.length>1?(c=[a,a,"",b],e.setFilters.hasOwnProperty(a.toLowerCase())?z(function(a,c){var e,f=d(a,b),g=f.length;while(g--)e=y.call(a,f[g]),a[e]=!(c[e]=f[g])}):function(a){return d(a,0,c)}):d}},pseudos:{not:z(function(a){var b=[],c=[],d=i(a.replace(L,"$1"));return d[o]?z(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)if(f=g[h])a[h]=!(b[h]=f)}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:z(function(a){return function(b){return bc(a,b).length>0}}),contains:z(function(a){return function(b){return(b.textContent||b.innerText||f(b)).indexOf(a)>-1}}),enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&!!a.checked||b==="option"&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},parent:function(a){return!e.pseudos.empty(a)},empty:function(a){var b;a=a.firstChild;while(a){if(a.nodeName>"@"||(b=a.nodeType)===3||b===4)return!1;a=a.nextSibling}return!0},header:function(a){return T.test(a.nodeName)},text:function(a){var b,c;return a.nodeName.toLowerCase()==="input"&&(b=a.type)==="text"&&((c=a.getAttribute("type"))==null||c.toLowerCase()===b)},radio:bd("radio"),checkbox:bd("checkbox"),file:bd("file"),password:bd("password"),image:bd("image"),submit:be("submit"),reset:be("reset"),button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&a.type==="button"||b==="button"},input:function(a){return U.test(a.nodeName)},focus:function(a){var b=a.ownerDocument;return a===b.activeElement&&(!b.hasFocus||b.hasFocus())&&(!!a.type||!!a.href)},active:function(a){return a===a.ownerDocument.activeElement},first:bf(function(a,b,c){return[0]}),last:bf(function(a,b,c){return[b-1]}),eq:bf(function(a,b,c){return[c<0?c+b:c]}),even:bf(function(a,b,c){for(var d=0;d=0;)a.push(d);return a}),gt:bf(function(a,b,c){for(var d=c<0?c+b:c;++d",a.querySelectorAll("[selected]").length||e.push("\\["+E+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),a.querySelectorAll(":checked").length||e.push(":checked")}),X(function(a){a.innerHTML="

    ",a.querySelectorAll("[test^='']").length&&e.push("[*^$]="+E+"*(?:\"\"|'')"),a.innerHTML="",a.querySelectorAll(":enabled").length||e.push(":enabled",":disabled")}),e=new RegExp(e.join("|")),bp=function(a,d,f,g,h){if(!g&&!h&&(!e||!e.test(a))){var i,j,k=!0,l=o,m=d,n=d.nodeType===9&&a;if(d.nodeType===1&&d.nodeName.toLowerCase()!=="object"){i=bh(a),(k=d.getAttribute("id"))?l=k.replace(c,"\\$&"):d.setAttribute("id",l),l="[id='"+l+"'] ",j=i.length;while(j--)i[j]=l+i[j].join("");m=R.test(a)&&d.parentNode||d,n=i.join(",")}if(n)try{return w.apply(f,x.call(m.querySelectorAll(n),0)),f}catch(p){}finally{k||d.removeAttribute("id")}}return b(a,d,f,g,h)},h&&(X(function(b){a=h.call(b,"div");try{h.call(b,"[test!='']:sizzle"),f.push("!=",J)}catch(c){}}),f=new RegExp(f.join("|")),bc.matchesSelector=function(b,c){c=c.replace(d,"='$1']");if(!g(b)&&!f.test(c)&&(!e||!e.test(c)))try{var i=h.call(b,c);if(i||a||b.document&&b.document.nodeType!==11)return i}catch(j){}return bc(c,null,null,[b]).length>0})}(),e.pseudos.nth=e.pseudos.eq,e.filters=bq.prototype=e.pseudos,e.setFilters=new bq,bc.attr=p.attr,p.find=bc,p.expr=bc.selectors,p.expr[":"]=p.expr.pseudos,p.unique=bc.uniqueSort,p.text=bc.getText,p.isXMLDoc=bc.isXML,p.contains=bc.contains}(a);var bc=/Until$/,bd=/^(?:parents|prev(?:Until|All))/,be=/^.[^:#\[\.,]*$/,bf=p.expr.match.needsContext,bg={children:!0,contents:!0,next:!0,prev:!0};p.fn.extend({find:function(a){var b,c,d,e,f,g,h=this;if(typeof a!="string")return p(a).filter(function(){for(b=0,c=h.length;b0)for(e=d;e=0:p.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c,d=0,e=this.length,f=[],g=bf.test(a)||typeof a!="string"?p(a,b||this.context):0;for(;d-1:p.find.matchesSelector(c,a)){f.push(c);break}c=c.parentNode}}return f=f.length>1?p.unique(f):f,this.pushStack(f,"closest",a)},index:function(a){return a?typeof a=="string"?p.inArray(this[0],p(a)):p.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(a,b){var c=typeof a=="string"?p(a,b):p.makeArray(a&&a.nodeType?[a]:a),d=p.merge(this.get(),c);return this.pushStack(bh(c[0])||bh(d[0])?d:p.unique(d))},addBack:function(a){return this.add(a==null?this.prevObject:this.prevObject.filter(a))}}),p.fn.andSelf=p.fn.addBack,p.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return p.dir(a,"parentNode")},parentsUntil:function(a,b,c){return p.dir(a,"parentNode",c)},next:function(a){return bi(a,"nextSibling")},prev:function(a){return bi(a,"previousSibling")},nextAll:function(a){return p.dir(a,"nextSibling")},prevAll:function(a){return p.dir(a,"previousSibling")},nextUntil:function(a,b,c){return p.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return p.dir(a,"previousSibling",c)},siblings:function(a){return p.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return p.sibling(a.firstChild)},contents:function(a){return p.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:p.merge([],a.childNodes)}},function(a,b){p.fn[a]=function(c,d){var e=p.map(this,b,c);return bc.test(a)||(d=c),d&&typeof d=="string"&&(e=p.filter(d,e)),e=this.length>1&&!bg[a]?p.unique(e):e,this.length>1&&bd.test(a)&&(e=e.reverse()),this.pushStack(e,a,k.call(arguments).join(","))}}),p.extend({filter:function(a,b,c){return c&&(a=":not("+a+")"),b.length===1?p.find.matchesSelector(b[0],a)?[b[0]]:[]:p.find.matches(a,b)},dir:function(a,c,d){var e=[],f=a[c];while(f&&f.nodeType!==9&&(d===b||f.nodeType!==1||!p(f).is(d)))f.nodeType===1&&e.push(f),f=f[c];return e},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var bl="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",bm=/ jQuery\d+="(?:null|\d+)"/g,bn=/^\s+/,bo=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bp=/<([\w:]+)/,bq=/]","i"),bv=/^(?:checkbox|radio)$/,bw=/checked\s*(?:[^=]|=\s*.checked.)/i,bx=/\/(java|ecma)script/i,by=/^\s*\s*$/g,bz={option:[1,""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]},bA=bk(e),bB=bA.appendChild(e.createElement("div"));bz.optgroup=bz.option,bz.tbody=bz.tfoot=bz.colgroup=bz.caption=bz.thead,bz.th=bz.td,p.support.htmlSerialize||(bz._default=[1,"X
    ","
    "]),p.fn.extend({text:function(a){return p.access(this,function(a){return a===b?p.text(this):this.empty().append((this[0]&&this[0].ownerDocument||e).createTextNode(a))},null,a,arguments.length)},wrapAll:function(a){if(p.isFunction(a))return this.each(function(b){p(this).wrapAll(a.call(this,b))});if(this[0]){var b=p(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return p.isFunction(a)?this.each(function(b){p(this).wrapInner(a.call(this,b))}):this.each(function(){var b=p(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=p.isFunction(a);return this.each(function(c){p(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){p.nodeName(this,"body")||p(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(a,this.firstChild)})},before:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(a,this),"before",this.selector)}},after:function(){if(!bh(this[0]))return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=p.clean(arguments);return this.pushStack(p.merge(this,a),"after",this.selector)}},remove:function(a,b){var c,d=0;for(;(c=this[d])!=null;d++)if(!a||p.filter(a,[c]).length)!b&&c.nodeType===1&&(p.cleanData(c.getElementsByTagName("*")),p.cleanData([c])),c.parentNode&&c.parentNode.removeChild(c);return this},empty:function(){var a,b=0;for(;(a=this[b])!=null;b++){a.nodeType===1&&p.cleanData(a.getElementsByTagName("*"));while(a.firstChild)a.removeChild(a.firstChild)}return this},clone:function(a,b){return a=a==null?!1:a,b=b==null?a:b,this.map(function(){return p.clone(this,a,b)})},html:function(a){return p.access(this,function(a){var c=this[0]||{},d=0,e=this.length;if(a===b)return c.nodeType===1?c.innerHTML.replace(bm,""):b;if(typeof a=="string"&&!bs.test(a)&&(p.support.htmlSerialize||!bu.test(a))&&(p.support.leadingWhitespace||!bn.test(a))&&!bz[(bp.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(bo,"<$1>");try{for(;d1&&typeof j=="string"&&bw.test(j))return this.each(function(){p(this).domManip(a,c,d)});if(p.isFunction(j))return this.each(function(e){var f=p(this);a[0]=j.call(this,e,c?f.html():b),f.domManip(a,c,d)});if(this[0]){e=p.buildFragment(a,this,k),g=e.fragment,f=g.firstChild,g.childNodes.length===1&&(g=f);if(f){c=c&&p.nodeName(f,"tr");for(h=e.cacheable||l-1;i0?this.clone(!0):this).get(),p(g[e])[b](d),f=f.concat(d);return this.pushStack(f,a,g.selector)}}),p.extend({clone:function(a,b,c){var d,e,f,g;p.support.html5Clone||p.isXMLDoc(a)||!bu.test("<"+a.nodeName+">")?g=a.cloneNode(!0):(bB.innerHTML=a.outerHTML,bB.removeChild(g=bB.firstChild));if((!p.support.noCloneEvent||!p.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!p.isXMLDoc(a)){bE(a,g),d=bF(a),e=bF(g);for(f=0;d[f];++f)e[f]&&bE(d[f],e[f])}if(b){bD(a,g);if(c){d=bF(a),e=bF(g);for(f=0;d[f];++f)bD(d[f],e[f])}}return d=e=null,g},clean:function(a,b,c,d){var f,g,h,i,j,k,l,m,n,o,q,r,s=b===e&&bA,t=[];if(!b||typeof b.createDocumentFragment=="undefined")b=e;for(f=0;(h=a[f])!=null;f++){typeof h=="number"&&(h+="");if(!h)continue;if(typeof h=="string")if(!br.test(h))h=b.createTextNode(h);else{s=s||bk(b),l=b.createElement("div"),s.appendChild(l),h=h.replace(bo,"<$1>"),i=(bp.exec(h)||["",""])[1].toLowerCase(),j=bz[i]||bz._default,k=j[0],l.innerHTML=j[1]+h+j[2];while(k--)l=l.lastChild;if(!p.support.tbody){m=bq.test(h),n=i==="table"&&!m?l.firstChild&&l.firstChild.childNodes:j[1]===""&&!m?l.childNodes:[];for(g=n.length-1;g>=0;--g)p.nodeName(n[g],"tbody")&&!n[g].childNodes.length&&n[g].parentNode.removeChild(n[g])}!p.support.leadingWhitespace&&bn.test(h)&&l.insertBefore(b.createTextNode(bn.exec(h)[0]),l.firstChild),h=l.childNodes,l.parentNode.removeChild(l)}h.nodeType?t.push(h):p.merge(t,h)}l&&(h=l=s=null);if(!p.support.appendChecked)for(f=0;(h=t[f])!=null;f++)p.nodeName(h,"input")?bG(h):typeof h.getElementsByTagName!="undefined"&&p.grep(h.getElementsByTagName("input"),bG);if(c){q=function(a){if(!a.type||bx.test(a.type))return d?d.push(a.parentNode?a.parentNode.removeChild(a):a):c.appendChild(a)};for(f=0;(h=t[f])!=null;f++)if(!p.nodeName(h,"script")||!q(h))c.appendChild(h),typeof h.getElementsByTagName!="undefined"&&(r=p.grep(p.merge([],h.getElementsByTagName("script")),q),t.splice.apply(t,[f+1,0].concat(r)),f+=r.length)}return t},cleanData:function(a,b){var c,d,e,f,g=0,h=p.expando,i=p.cache,j=p.support.deleteExpando,k=p.event.special;for(;(e=a[g])!=null;g++)if(b||p.acceptData(e)){d=e[h],c=d&&i[d];if(c){if(c.events)for(f in c.events)k[f]?p.event.remove(e,f):p.removeEvent(e,f,c.handle);i[d]&&(delete i[d],j?delete e[h]:e.removeAttribute?e.removeAttribute(h):e[h]=null,p.deletedIds.push(d))}}}}),function(){var a,b;p.uaMatch=function(a){a=a.toLowerCase();var b=/(chrome)[ \/]([\w.]+)/.exec(a)||/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||a.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},a=p.uaMatch(g.userAgent),b={},a.browser&&(b[a.browser]=!0,b.version=a.version),b.chrome?b.webkit=!0:b.webkit&&(b.safari=!0),p.browser=b,p.sub=function(){function a(b,c){return new a.fn.init(b,c)}p.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function c(c,d){return d&&d instanceof p&&!(d instanceof a)&&(d=a(d)),p.fn.init.call(this,c,d,b)},a.fn.init.prototype=a.fn;var b=a(e);return a}}();var bH,bI,bJ,bK=/alpha\([^)]*\)/i,bL=/opacity=([^)]*)/,bM=/^(top|right|bottom|left)$/,bN=/^(none|table(?!-c[ea]).+)/,bO=/^margin/,bP=new RegExp("^("+q+")(.*)$","i"),bQ=new RegExp("^("+q+")(?!px)[a-z%]+$","i"),bR=new RegExp("^([-+])=("+q+")","i"),bS={},bT={position:"absolute",visibility:"hidden",display:"block"},bU={letterSpacing:0,fontWeight:400},bV=["Top","Right","Bottom","Left"],bW=["Webkit","O","Moz","ms"],bX=p.fn.toggle;p.fn.extend({css:function(a,c){return p.access(this,function(a,c,d){return d!==b?p.style(a,c,d):p.css(a,c)},a,c,arguments.length>1)},show:function(){return b$(this,!0)},hide:function(){return b$(this)},toggle:function(a,b){var c=typeof a=="boolean";return p.isFunction(a)&&p.isFunction(b)?bX.apply(this,arguments):this.each(function(){(c?a:bZ(this))?p(this).show():p(this).hide()})}}),p.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bH(a,"opacity");return c===""?"1":c}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":p.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!a||a.nodeType===3||a.nodeType===8||!a.style)return;var f,g,h,i=p.camelCase(c),j=a.style;c=p.cssProps[i]||(p.cssProps[i]=bY(j,i)),h=p.cssHooks[c]||p.cssHooks[i];if(d===b)return h&&"get"in h&&(f=h.get(a,!1,e))!==b?f:j[c];g=typeof d,g==="string"&&(f=bR.exec(d))&&(d=(f[1]+1)*f[2]+parseFloat(p.css(a,c)),g="number");if(d==null||g==="number"&&isNaN(d))return;g==="number"&&!p.cssNumber[i]&&(d+="px");if(!h||!("set"in h)||(d=h.set(a,d,e))!==b)try{j[c]=d}catch(k){}},css:function(a,c,d,e){var f,g,h,i=p.camelCase(c);return c=p.cssProps[i]||(p.cssProps[i]=bY(a.style,i)),h=p.cssHooks[c]||p.cssHooks[i],h&&"get"in h&&(f=h.get(a,!0,e)),f===b&&(f=bH(a,c)),f==="normal"&&c in bU&&(f=bU[c]),d||e!==b?(g=parseFloat(f),d||p.isNumeric(g)?g||0:f):f},swap:function(a,b,c){var d,e,f={};for(e in b)f[e]=a.style[e],a.style[e]=b[e];d=c.call(a);for(e in b)a.style[e]=f[e];return d}}),a.getComputedStyle?bH=function(b,c){var d,e,f,g,h=a.getComputedStyle(b,null),i=b.style;return h&&(d=h[c],d===""&&!p.contains(b.ownerDocument,b)&&(d=p.style(b,c)),bQ.test(d)&&bO.test(c)&&(e=i.width,f=i.minWidth,g=i.maxWidth,i.minWidth=i.maxWidth=i.width=d,d=h.width,i.width=e,i.minWidth=f,i.maxWidth=g)),d}:e.documentElement.currentStyle&&(bH=function(a,b){var c,d,e=a.currentStyle&&a.currentStyle[b],f=a.style;return e==null&&f&&f[b]&&(e=f[b]),bQ.test(e)&&!bM.test(b)&&(c=f.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":e,e=f.pixelLeft+"px",f.left=c,d&&(a.runtimeStyle.left=d)),e===""?"auto":e}),p.each(["height","width"],function(a,b){p.cssHooks[b]={get:function(a,c,d){if(c)return a.offsetWidth===0&&bN.test(bH(a,"display"))?p.swap(a,bT,function(){return cb(a,b,d)}):cb(a,b,d)},set:function(a,c,d){return b_(a,c,d?ca(a,b,d,p.support.boxSizing&&p.css(a,"boxSizing")==="border-box"):0)}}}),p.support.opacity||(p.cssHooks.opacity={get:function(a,b){return bL.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=p.isNumeric(b)?"alpha(opacity="+b*100+")":"",f=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&p.trim(f.replace(bK,""))===""&&c.removeAttribute){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bK.test(f)?f.replace(bK,e):f+" "+e}}),p(function(){p.support.reliableMarginRight||(p.cssHooks.marginRight={get:function(a,b){return p.swap(a,{display:"inline-block"},function(){if(b)return bH(a,"marginRight")})}}),!p.support.pixelPosition&&p.fn.position&&p.each(["top","left"],function(a,b){p.cssHooks[b]={get:function(a,c){if(c){var d=bH(a,b);return bQ.test(d)?p(a).position()[b]+"px":d}}}})}),p.expr&&p.expr.filters&&(p.expr.filters.hidden=function(a){return a.offsetWidth===0&&a.offsetHeight===0||!p.support.reliableHiddenOffsets&&(a.style&&a.style.display||bH(a,"display"))==="none"},p.expr.filters.visible=function(a){return!p.expr.filters.hidden(a)}),p.each({margin:"",padding:"",border:"Width"},function(a,b){p.cssHooks[a+b]={expand:function(c){var d,e=typeof c=="string"?c.split(" "):[c],f={};for(d=0;d<4;d++)f[a+bV[d]+b]=e[d]||e[d-2]||e[0];return f}},bO.test(a)||(p.cssHooks[a+b].set=b_)});var cd=/%20/g,ce=/\[\]$/,cf=/\r?\n/g,cg=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ch=/^(?:select|textarea)/i;p.fn.extend({serialize:function(){return p.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?p.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ch.test(this.nodeName)||cg.test(this.type))}).map(function(a,b){var c=p(this).val();return c==null?null:p.isArray(c)?p.map(c,function(a,c){return{name:b.name,value:a.replace(cf,"\r\n")}}):{name:b.name,value:c.replace(cf,"\r\n")}}).get()}}),p.param=function(a,c){var d,e=[],f=function(a,b){b=p.isFunction(b)?b():b==null?"":b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=p.ajaxSettings&&p.ajaxSettings.traditional);if(p.isArray(a)||a.jquery&&!p.isPlainObject(a))p.each(a,function(){f(this.name,this.value)});else for(d in a)ci(d,a[d],c,f);return e.join("&").replace(cd,"+")};var cj,ck,cl=/#.*$/,cm=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,cn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,co=/^(?:GET|HEAD)$/,cp=/^\/\//,cq=/\?/,cr=/)<[^<]*)*<\/script>/gi,cs=/([?&])_=[^&]*/,ct=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,cu=p.fn.load,cv={},cw={},cx=["*/"]+["*"];try{ck=f.href}catch(cy){ck=e.createElement("a"),ck.href="",ck=ck.href}cj=ct.exec(ck.toLowerCase())||[],p.fn.load=function(a,c,d){if(typeof a!="string"&&cu)return cu.apply(this,arguments);if(!this.length)return this;var e,f,g,h=this,i=a.indexOf(" ");return i>=0&&(e=a.slice(i,a.length),a=a.slice(0,i)),p.isFunction(c)?(d=c,c=b):c&&typeof c=="object"&&(f="POST"),p.ajax({url:a,type:f,dataType:"html",data:c,complete:function(a,b){d&&h.each(d,g||[a.responseText,b,a])}}).done(function(a){g=arguments,h.html(e?p("
    ").append(a.replace(cr,"")).find(e):a)}),this},p.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){p.fn[b]=function(a){return this.on(b,a)}}),p.each(["get","post"],function(a,c){p[c]=function(a,d,e,f){return p.isFunction(d)&&(f=f||e,e=d,d=b),p.ajax({type:c,url:a,data:d,success:e,dataType:f})}}),p.extend({getScript:function(a,c){return p.get(a,b,c,"script")},getJSON:function(a,b,c){return p.get(a,b,c,"json")},ajaxSetup:function(a,b){return b?cB(a,p.ajaxSettings):(b=a,a=p.ajaxSettings),cB(a,b),a},ajaxSettings:{url:ck,isLocal:cn.test(cj[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":cx},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":p.parseJSON,"text xml":p.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:cz(cv),ajaxTransport:cz(cw),ajax:function(a,c){function y(a,c,f,i){var k,s,t,u,w,y=c;if(v===2)return;v=2,h&&clearTimeout(h),g=b,e=i||"",x.readyState=a>0?4:0,f&&(u=cC(l,x,f));if(a>=200&&a<300||a===304)l.ifModified&&(w=x.getResponseHeader("Last-Modified"),w&&(p.lastModified[d]=w),w=x.getResponseHeader("Etag"),w&&(p.etag[d]=w)),a===304?(y="notmodified",k=!0):(k=cD(l,u),y=k.state,s=k.data,t=k.error,k=!t);else{t=y;if(!y||a)y="error",a<0&&(a=0)}x.status=a,x.statusText=(c||y)+"",k?o.resolveWith(m,[s,y,x]):o.rejectWith(m,[x,y,t]),x.statusCode(r),r=b,j&&n.trigger("ajax"+(k?"Success":"Error"),[x,l,k?s:t]),q.fireWith(m,[x,y]),j&&(n.trigger("ajaxComplete",[x,l]),--p.active||p.event.trigger("ajaxStop"))}typeof a=="object"&&(c=a,a=b),c=c||{};var d,e,f,g,h,i,j,k,l=p.ajaxSetup({},c),m=l.context||l,n=m!==l&&(m.nodeType||m instanceof p)?p(m):p.event,o=p.Deferred(),q=p.Callbacks("once memory"),r=l.statusCode||{},t={},u={},v=0,w="canceled",x={readyState:0,setRequestHeader:function(a,b){if(!v){var c=a.toLowerCase();a=u[c]=u[c]||a,t[a]=b}return this},getAllResponseHeaders:function(){return v===2?e:null},getResponseHeader:function(a){var c;if(v===2){if(!f){f={};while(c=cm.exec(e))f[c[1].toLowerCase()]=c[2]}c=f[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){return v||(l.mimeType=a),this},abort:function(a){return a=a||w,g&&g.abort(a),y(0,a),this}};o.promise(x),x.success=x.done,x.error=x.fail,x.complete=q.add,x.statusCode=function(a){if(a){var b;if(v<2)for(b in a)r[b]=[r[b],a[b]];else b=a[x.status],x.always(b)}return this},l.url=((a||l.url)+"").replace(cl,"").replace(cp,cj[1]+"//"),l.dataTypes=p.trim(l.dataType||"*").toLowerCase().split(s),l.crossDomain==null&&(i=ct.exec(l.url.toLowerCase())||!1,l.crossDomain=i&&i.join(":")+(i[3]?"":i[1]==="http:"?80:443)!==cj.join(":")+(cj[3]?"":cj[1]==="http:"?80:443)),l.data&&l.processData&&typeof l.data!="string"&&(l.data=p.param(l.data,l.traditional)),cA(cv,l,c,x);if(v===2)return x;j=l.global,l.type=l.type.toUpperCase(),l.hasContent=!co.test(l.type),j&&p.active++===0&&p.event.trigger("ajaxStart");if(!l.hasContent){l.data&&(l.url+=(cq.test(l.url)?"&":"?")+l.data,delete l.data),d=l.url;if(l.cache===!1){var z=p.now(),A=l.url.replace(cs,"$1_="+z);l.url=A+(A===l.url?(cq.test(l.url)?"&":"?")+"_="+z:"")}}(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&x.setRequestHeader("Content-Type",l.contentType),l.ifModified&&(d=d||l.url,p.lastModified[d]&&x.setRequestHeader("If-Modified-Since",p.lastModified[d]),p.etag[d]&&x.setRequestHeader("If-None-Match",p.etag[d])),x.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+(l.dataTypes[0]!=="*"?", "+cx+"; q=0.01":""):l.accepts["*"]);for(k in l.headers)x.setRequestHeader(k,l.headers[k]);if(!l.beforeSend||l.beforeSend.call(m,x,l)!==!1&&v!==2){w="abort";for(k in{success:1,error:1,complete:1})x[k](l[k]);g=cA(cw,l,c,x);if(!g)y(-1,"No Transport");else{x.readyState=1,j&&n.trigger("ajaxSend",[x,l]),l.async&&l.timeout>0&&(h=setTimeout(function(){x.abort("timeout")},l.timeout));try{v=1,g.send(t,y)}catch(B){if(v<2)y(-1,B);else throw B}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var cE=[],cF=/\?/,cG=/(=)\?(?=&|$)|\?\?/,cH=p.now();p.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=cE.pop()||p.expando+"_"+cH++;return this[a]=!0,a}}),p.ajaxPrefilter("json jsonp",function(c,d,e){var f,g,h,i=c.data,j=c.url,k=c.jsonp!==!1,l=k&&cG.test(j),m=k&&!l&&typeof i=="string"&&!(c.contentType||"").indexOf("application/x-www-form-urlencoded")&&cG.test(i);if(c.dataTypes[0]==="jsonp"||l||m)return f=c.jsonpCallback=p.isFunction(c.jsonpCallback)?c.jsonpCallback():c.jsonpCallback,g=a[f],l?c.url=j.replace(cG,"$1"+f):m?c.data=i.replace(cG,"$1"+f):k&&(c.url+=(cF.test(j)?"&":"?")+c.jsonp+"="+f),c.converters["script json"]=function(){return h||p.error(f+" was not called"),h[0]},c.dataTypes[0]="json",a[f]=function(){h=arguments},e.always(function(){a[f]=g,c[f]&&(c.jsonpCallback=d.jsonpCallback,cE.push(f)),h&&p.isFunction(g)&&g(h[0]),h=g=b}),"script"}),p.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){return p.globalEval(a),a}}}),p.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),p.ajaxTransport("script",function(a){if(a.crossDomain){var c,d=e.head||e.getElementsByTagName("head")[0]||e.documentElement;return{send:function(f,g){c=e.createElement("script"),c.async="async",a.scriptCharset&&(c.charset=a.scriptCharset),c.src=a.url,c.onload=c.onreadystatechange=function(a,e){if(e||!c.readyState||/loaded|complete/.test(c.readyState))c.onload=c.onreadystatechange=null,d&&c.parentNode&&d.removeChild(c),c=b,e||g(200,"success")},d.insertBefore(c,d.firstChild)},abort:function(){c&&c.onload(0,1)}}}});var cI,cJ=a.ActiveXObject?function(){for(var a in cI)cI[a](0,1)}:!1,cK=0;p.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&cL()||cM()}:cL,function(a){p.extend(p.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(p.ajaxSettings.xhr()),p.support.ajax&&p.ajaxTransport(function(c){if(!c.crossDomain||p.support.cors){var d;return{send:function(e,f){var g,h,i=c.xhr();c.username?i.open(c.type,c.url,c.async,c.username,c.password):i.open(c.type,c.url,c.async);if(c.xhrFields)for(h in c.xhrFields)i[h]=c.xhrFields[h];c.mimeType&&i.overrideMimeType&&i.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(h in e)i.setRequestHeader(h,e[h])}catch(j){}i.send(c.hasContent&&c.data||null),d=function(a,e){var h,j,k,l,m;try{if(d&&(e||i.readyState===4)){d=b,g&&(i.onreadystatechange=p.noop,cJ&&delete cI[g]);if(e)i.readyState!==4&&i.abort();else{h=i.status,k=i.getAllResponseHeaders(),l={},m=i.responseXML,m&&m.documentElement&&(l.xml=m);try{l.text=i.responseText}catch(a){}try{j=i.statusText}catch(n){j=""}!h&&c.isLocal&&!c.crossDomain?h=l.text?200:404:h===1223&&(h=204)}}}catch(o){e||f(-1,o)}l&&f(h,j,l,k)},c.async?i.readyState===4?setTimeout(d,0):(g=++cK,cJ&&(cI||(cI={},p(a).unload(cJ)),cI[g]=d),i.onreadystatechange=d):d()},abort:function(){d&&d(0,1)}}}});var cN,cO,cP=/^(?:toggle|show|hide)$/,cQ=new RegExp("^(?:([-+])=|)("+q+")([a-z%]*)$","i"),cR=/queueHooks$/,cS=[cY],cT={"*":[function(a,b){var c,d,e=this.createTween(a,b),f=cQ.exec(b),g=e.cur(),h=+g||0,i=1,j=20;if(f){c=+f[2],d=f[3]||(p.cssNumber[a]?"":"px");if(d!=="px"&&h){h=p.css(e.elem,a,!0)||c||1;do i=i||".5",h=h/i,p.style(e.elem,a,h+d);while(i!==(i=e.cur()/g)&&i!==1&&--j)}e.unit=d,e.start=h,e.end=f[1]?h+(f[1]+1)*c:c}return e}]};p.Animation=p.extend(cW,{tweener:function(a,b){p.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");var c,d=0,e=a.length;for(;d-1,j={},k={},l,m;i?(k=e.position(),l=k.top,m=k.left):(l=parseFloat(g)||0,m=parseFloat(h)||0),p.isFunction(b)&&(b=b.call(a,c,f)),b.top!=null&&(j.top=b.top-f.top+l),b.left!=null&&(j.left=b.left-f.left+m),"using"in b?b.using.call(a,j):e.css(j)}},p.fn.extend({position:function(){if(!this[0])return;var a=this[0],b=this.offsetParent(),c=this.offset(),d=c_.test(b[0].nodeName)?{top:0,left:0}:b.offset();return c.top-=parseFloat(p.css(a,"marginTop"))||0,c.left-=parseFloat(p.css(a,"marginLeft"))||0,d.top+=parseFloat(p.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(p.css(b[0],"borderLeftWidth"))||0,{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||e.body;while(a&&!c_.test(a.nodeName)&&p.css(a,"position")==="static")a=a.offsetParent;return a||e.body})}}),p.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,c){var d=/Y/.test(c);p.fn[a]=function(e){return p.access(this,function(a,e,f){var g=da(a);if(f===b)return g?c in g?g[c]:g.document.documentElement[e]:a[e];g?g.scrollTo(d?p(g).scrollLeft():f,d?f:p(g).scrollTop()):a[e]=f},a,e,arguments.length,null)}}),p.each({Height:"height",Width:"width"},function(a,c){p.each({padding:"inner"+a,content:c,"":"outer"+a},function(d,e){p.fn[e]=function(e,f){var g=arguments.length&&(d||typeof e!="boolean"),h=d||(e===!0||f===!0?"margin":"border");return p.access(this,function(c,d,e){var f;return p.isWindow(c)?c.document.documentElement["client"+a]:c.nodeType===9?(f=c.documentElement,Math.max(c.body["scroll"+a],f["scroll"+a],c.body["offset"+a],f["offset"+a],f["client"+a])):e===b?p.css(c,d,e,h):p.style(c,d,e,h)},c,g?e:b,g,null)}})}),a.jQuery=a.$=p,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return p})})(window); \ No newline at end of file diff --git a/v3/js/jquery-ui-1.8.24.custom.min.js b/v3/js/jquery-ui-1.8.24.custom.min.js new file mode 100644 index 000000000..081901945 --- /dev/null +++ b/v3/js/jquery-ui-1.8.24.custom.min.js @@ -0,0 +1,21 @@ +/*! jQuery UI - v1.8.24 - 2012-09-28 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.core.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.24",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a("").outerWidth(1).jquery||a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:a.expr.createPseudo?a.expr.createPseudo(function(b){return function(c){return!!a.data(c,b)}}):function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.curCSS||(a.curCSS=a.css),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a=9||!!b.button?this._mouseStarted?(this._mouseDrag(b),b.preventDefault()):(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b)),!this._mouseStarted):this._mouseUp(b)},_mouseUp:function(b){return a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b)),!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery);;/*! jQuery UI - v1.8.24 - 2012-09-28 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.position.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){a.ui=a.ui||{};var c=/left|center|right/,d=/top|center|bottom/,e="center",f={},g=a.fn.position,h=a.fn.offset;a.fn.position=function(b){if(!b||!b.of)return g.apply(this,arguments);b=a.extend({},b);var h=a(b.of),i=h[0],j=(b.collision||"flip").split(" "),k=b.offset?b.offset.split(" "):[0,0],l,m,n;return i.nodeType===9?(l=h.width(),m=h.height(),n={top:0,left:0}):i.setTimeout?(l=h.width(),m=h.height(),n={top:h.scrollTop(),left:h.scrollLeft()}):i.preventDefault?(b.at="left top",l=m=0,n={top:b.of.pageY,left:b.of.pageX}):(l=h.outerWidth(),m=h.outerHeight(),n=h.offset()),a.each(["my","at"],function(){var a=(b[this]||"").split(" ");a.length===1&&(a=c.test(a[0])?a.concat([e]):d.test(a[0])?[e].concat(a):[e,e]),a[0]=c.test(a[0])?a[0]:e,a[1]=d.test(a[1])?a[1]:e,b[this]=a}),j.length===1&&(j[1]=j[0]),k[0]=parseInt(k[0],10)||0,k.length===1&&(k[1]=k[0]),k[1]=parseInt(k[1],10)||0,b.at[0]==="right"?n.left+=l:b.at[0]===e&&(n.left+=l/2),b.at[1]==="bottom"?n.top+=m:b.at[1]===e&&(n.top+=m/2),n.left+=k[0],n.top+=k[1],this.each(function(){var c=a(this),d=c.outerWidth(),g=c.outerHeight(),h=parseInt(a.curCSS(this,"marginLeft",!0))||0,i=parseInt(a.curCSS(this,"marginTop",!0))||0,o=d+h+(parseInt(a.curCSS(this,"marginRight",!0))||0),p=g+i+(parseInt(a.curCSS(this,"marginBottom",!0))||0),q=a.extend({},n),r;b.my[0]==="right"?q.left-=d:b.my[0]===e&&(q.left-=d/2),b.my[1]==="bottom"?q.top-=g:b.my[1]===e&&(q.top-=g/2),f.fractions||(q.left=Math.round(q.left),q.top=Math.round(q.top)),r={left:q.left-h,top:q.top-i},a.each(["left","top"],function(c,e){a.ui.position[j[c]]&&a.ui.position[j[c]][e](q,{targetWidth:l,targetHeight:m,elemWidth:d,elemHeight:g,collisionPosition:r,collisionWidth:o,collisionHeight:p,offset:k,my:b.my,at:b.at})}),a.fn.bgiframe&&c.bgiframe(),c.offset(a.extend(q,{using:b.using}))})},a.ui.position={fit:{left:function(b,c){var d=a(window),e=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft();b.left=e>0?b.left-e:Math.max(b.left-c.collisionPosition.left,b.left)},top:function(b,c){var d=a(window),e=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop();b.top=e>0?b.top-e:Math.max(b.top-c.collisionPosition.top,b.top)}},flip:{left:function(b,c){if(c.at[0]===e)return;var d=a(window),f=c.collisionPosition.left+c.collisionWidth-d.width()-d.scrollLeft(),g=c.my[0]==="left"?-c.elemWidth:c.my[0]==="right"?c.elemWidth:0,h=c.at[0]==="left"?c.targetWidth:-c.targetWidth,i=-2*c.offset[0];b.left+=c.collisionPosition.left<0?g+h+i:f>0?g+h+i:0},top:function(b,c){if(c.at[1]===e)return;var d=a(window),f=c.collisionPosition.top+c.collisionHeight-d.height()-d.scrollTop(),g=c.my[1]==="top"?-c.elemHeight:c.my[1]==="bottom"?c.elemHeight:0,h=c.at[1]==="top"?c.targetHeight:-c.targetHeight,i=-2*c.offset[1];b.top+=c.collisionPosition.top<0?g+h+i:f>0?g+h+i:0}}},a.offset.setOffset||(a.offset.setOffset=function(b,c){/static/.test(a.curCSS(b,"position"))&&(b.style.position="relative");var d=a(b),e=d.offset(),f=parseInt(a.curCSS(b,"top",!0),10)||0,g=parseInt(a.curCSS(b,"left",!0),10)||0,h={top:c.top-e.top+f,left:c.left-e.left+g};"using"in c?c.using.call(b,h):d.css(h)},a.fn.offset=function(b){var c=this[0];return!c||!c.ownerDocument?null:b?a.isFunction(b)?this.each(function(c){a(this).offset(b.call(this,c,a(this).offset()))}):this.each(function(){a.offset.setOffset(this,b)}):h.call(this)}),a.curCSS||(a.curCSS=a.css),function(){var b=document.getElementsByTagName("body")[0],c=document.createElement("div"),d,e,g,h,i;d=document.createElement(b?"div":"body"),g={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},b&&a.extend(g,{position:"absolute",left:"-1000px",top:"-1000px"});for(var j in g)d.style[j]=g[j];d.appendChild(c),e=b||document.documentElement,e.insertBefore(d,e.firstChild),c.style.cssText="position: absolute; left: 10.7432222px; top: 10.432325px; height: 30px; width: 201px;",h=a(c).offset(function(a,b){return b}).offset(),d.innerHTML="",e.removeChild(d),i=h.top+h.left+(b?2e3:0),f.fractions=i>21&&i<22}()})(jQuery);;/*! jQuery UI - v1.8.24 - 2012-09-28 +* https://github.com/jquery/jquery-ui +* Includes: jquery.ui.slider.js +* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ +(function(a,b){var c=5;a.widget("ui.slider",a.ui.mouse,{widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null},_create:function(){var b=this,d=this.options,e=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),f="",g=d.values&&d.values.length||1,h=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"+(d.disabled?" ui-slider-disabled ui-disabled":"")),this.range=a([]),d.range&&(d.range===!0&&(d.values||(d.values=[this._valueMin(),this._valueMin()]),d.values.length&&d.values.length!==2&&(d.values=[d.values[0],d.values[0]])),this.range=a("
    ").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(d.range==="min"||d.range==="max"?" ui-slider-range-"+d.range:"")));for(var i=e.length;ic&&(f=c,g=a(this),i=b)}),c.range===!0&&this.values(1)===c.min&&(i+=1,g=a(this.handles[i])),j=this._start(b,i),j===!1?!1:(this._mouseSliding=!0,h._handleIndex=i,g.addClass("ui-state-active").focus(),k=g.offset(),l=!a(b.target).parents().andSelf().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:b.pageX-k.left-g.width()/2,top:b.pageY-k.top-g.height()/2-(parseInt(g.css("borderTopWidth"),10)||0)-(parseInt(g.css("borderBottomWidth"),10)||0)+(parseInt(g.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(b,i,e),this._animateOff=!0,!0))},_mouseStart:function(a){return!0},_mouseDrag:function(a){var b={x:a.pageX,y:a.pageY},c=this._normValueFromMouse(b);return this._slide(a,this._handleIndex,c),!1},_mouseStop:function(a){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(a,this._handleIndex),this._change(a,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b,c,d,e,f;return this.orientation==="horizontal"?(b=this.elementSize.width,c=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(b=this.elementSize.height,c=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),d=c/b,d>1&&(d=1),d<0&&(d=0),this.orientation==="vertical"&&(d=1-d),e=this._valueMax()-this._valueMin(),f=this._valueMin()+d*e,this._trimAlignValue(f)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};return this.options.values&&this.options.values.length&&(c.value=this.values(b),c.values=this.values()),this._trigger("start",a,c)},_slide:function(a,b,c){var d,e,f;this.options.values&&this.options.values.length?(d=this.values(b?0:1),this.options.values.length===2&&this.options.range===!0&&(b===0&&c>d||b===1&&c1){this.options.values[b]=this._trimAlignValue(c),this._refreshValue(),this._change(null,b);return}if(!arguments.length)return this._values();if(!a.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(b):this.value();d=this.options.values,e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b,d=a-c;return Math.abs(c)*2>=b&&(d+=c>0?b:-b),parseFloat(d.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var b=this.options.range,c=this.options,d=this,e=this._animateOff?!1:c.animate,f,g={},h,i,j,k;this.options.values&&this.options.values.length?this.handles.each(function(b,i){f=(d.values(b)-d._valueMin())/(d._valueMax()-d._valueMin())*100,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",a(this).stop(1,1)[e?"animate":"css"](g,c.animate),d.options.range===!0&&(d.orientation==="horizontal"?(b===0&&d.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({width:f-h+"%"},{queue:!1,duration:c.animate})):(b===0&&d.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},c.animate),b===1&&d.range[e?"animate":"css"]({height:f-h+"%"},{queue:!1,duration:c.animate}))),h=f}):(i=this.value(),j=this._valueMin(),k=this._valueMax(),f=k!==j?(i-j)/(k-j)*100:0,g[d.orientation==="horizontal"?"left":"bottom"]=f+"%",this.handle.stop(1,1)[e?"animate":"css"](g,c.animate),b==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[e?"animate":"css"]({width:f+"%"},c.animate),b==="max"&&this.orientation==="horizontal"&&this.range[e?"animate":"css"]({width:100-f+"%"},{queue:!1,duration:c.animate}),b==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},c.animate),b==="max"&&this.orientation==="vertical"&&this.range[e?"animate":"css"]({height:100-f+"%"},{queue:!1,duration:c.animate}))}}),a.extend(a.ui.slider,{version:"1.8.24"})})(jQuery);; \ No newline at end of file diff --git a/v3/js/jquery.jsPlumb-1.3.15-all-min.js b/v3/js/jquery.jsPlumb-1.3.15-all-min.js new file mode 100644 index 000000000..3abdf47c9 --- /dev/null +++ b/v3/js/jquery.jsPlumb-1.3.15-all-min.js @@ -0,0 +1 @@ +jsPlumbUtil={isArray:function(b){return Object.prototype.toString.call(b)==="[object Array]"},isString:function(a){return typeof a==="string"},isBoolean:function(a){return typeof a==="boolean"},isObject:function(a){return Object.prototype.toString.call(a)==="[object Object]"},isDate:function(a){return Object.prototype.toString.call(a)==="[object Date]"},isFunction:function(a){return Object.prototype.toString.call(a)==="[object Function]"},clone:function(d){if(this.isString(d)){return new String(d)}else{if(this.isBoolean(d)){return new Boolean(d)}else{if(this.isDate(d)){return new Date(d.getTime())}else{if(this.isFunction(d)){return d}else{if(this.isArray(d)){var c=[];for(var e=0;eb[0]){return(a[1]>b[1])?2:1}else{return(a[1]>b[1])?3:4}},intersects:function(f,e){var c=f.x,a=f.x+f.w,k=f.y,h=f.y+f.h,d=e.x,b=e.x+e.w,i=e.y,g=e.y+e.h;return((c<=d&&d<=a)&&(k<=i&&i<=h))||((c<=b&&b<=a)&&(k<=i&&i<=h))||((c<=d&&d<=a)&&(k<=g&&g<=h))||((c<=b&&d<=a)&&(k<=g&&g<=h))||((d<=c&&c<=b)&&(i<=k&&k<=g))||((d<=a&&a<=b)&&(i<=k&&k<=g))||((d<=c&&c<=b)&&(i<=h&&h<=g))||((d<=a&&c<=b)&&(i<=h&&h<=g))},segmentMultipliers:[null,[1,-1],[1,1],[-1,1],[-1,-1]],inverseSegmentMultipliers:[null,[-1,-1],[-1,1],[1,1],[1,-1]],pointOnLine:function(a,e,b){var d=jsPlumbUtil.gradient(a,e),i=jsPlumbUtil.segment(a,e),h=b>0?jsPlumbUtil.segmentMultipliers[i]:jsPlumbUtil.inverseSegmentMultipliers[i],c=Math.atan(d),f=Math.abs(b*Math.sin(c))*h[1],g=Math.abs(b*Math.cos(c))*h[0];return{x:a.x+g,y:a.y+f}},perpendicularLineTo:function(c,d,e){var b=jsPlumbUtil.gradient(c,d),f=Math.atan(-1/b),g=e/2*Math.sin(f),a=e/2*Math.cos(f);return[{x:d.x+a,y:d.y+g},{x:d.x-a,y:d.y-g}]},findWithFunction:function(b,d){if(b){for(var c=0;c-1){c.splice(b,1)}return b!=-1},remove:function(b,c){var a=jsPlumbUtil.indexOf(b,c);if(a>-1){b.splice(a,1)}return a!=-1},addWithFunction:function(c,b,a){if(jsPlumbUtil.findWithFunction(c,a)==-1){c.push(b)}},addToList:function(d,b,c){var a=d[b];if(a==null){a=[],d[b]=a}a.push(c);return a},EventGenerator:function(){var c={},b=this;var a=["ready"];this.bind=function(d,e){jsPlumbUtil.addToList(c,d,e);return b};this.fire=function(g,h,d){if(c[g]){for(var f=0;f';var e=f.firstChild;e.style.behavior="url(#default#VML)";d.vml=e?typeof e.adj=="object":true;f.parentNode.removeChild(f)}return d.vml};var c=function(i){var h={},g=[],f={},e={};this.register=function(n){var m=jsPlumb.CurrentLibrary;n=m.getElementObject(n);var p=i.getId(n),l=m.getDOMElement(n),k=m.getOffset(n);if(!h[p]){h[p]=n;g.push(n);f[p]={}}var o=function(u,q){if(u){for(var r=0;r0){var s=m.getOffset(t);f[p][v]={id:v,offset:{left:s.left-k.left,top:s.top-k.top}}}o(u.childNodes[r])}}}};o(l)};this.endpointAdded=function(m){var r=jsPlumb.CurrentLibrary,u=document.body,k=i.getId(m),t=r.getDOMElement(m),l=t.parentNode,o=l==u;e[k]=e[k]?e[k]+1:1;while(l!=u){var q=i.getId(l,null,true);if(q&&h[q]){var w=-1,s=r.getElementObject(l),n=r.getOffset(s);if(f[q][k]==null){var v=jsPlumb.CurrentLibrary.getOffset(m);f[q][k]={id:k,offset:{left:v.left-n.left,top:v.top-n.top}}}break}l=l.parentNode}};this.endpointDeleted=function(l){if(e[l.elementId]){e[l.elementId]--;if(e[l.elementId]<=0){for(var k in f){delete f[k][l.elementId]}}}};this.getElementsForDraggable=function(k){return f[k]};this.reset=function(){h={};g=[];f={};e={}}};if(!window.console){window.console={time:function(){},timeEnd:function(){},group:function(){},groupEnd:function(){},log:function(){}}}window.jsPlumbAdapter={headless:false,appendToRoot:function(e){document.body.appendChild(e)},getRenderModes:function(){return["canvas","svg","vml"]},isRenderModeAvailable:function(e){return{canvas:b,svg:a,vml:d()}[e]},getDragManager:function(e){return new c(e)},setRenderMode:function(i){var h;if(i){i=i.toLowerCase();var f=this.isRenderModeAvailable("canvas"),e=this.isRenderModeAvailable("svg"),g=this.isRenderModeAvailable("vml");if(i==="svg"){if(e){h="svg"}else{if(f){h="canvas"}else{if(g){h="vml"}}}}else{if(i==="canvas"&&f){h="canvas"}else{if(g){h="vml"}}}}return h}}})();(function(){var g=jsPlumbUtil.findWithFunction,G=jsPlumbUtil.indexOf,A=jsPlumbUtil.removeWithFunction,k=jsPlumbUtil.remove,r=jsPlumbUtil.addWithFunction,i=jsPlumbUtil.addToList,l=jsPlumbUtil.isArray,z=jsPlumbUtil.isString,u=jsPlumbUtil.isObject;var v=null,c=function(H,I){return n.CurrentLibrary.getAttribute(C(H),I)},d=function(I,J,H){n.CurrentLibrary.setAttribute(C(I),J,H)},y=function(I,H){n.CurrentLibrary.addClass(C(I),H)},h=function(I,H){return n.CurrentLibrary.hasClass(C(I),H)},m=function(I,H){n.CurrentLibrary.removeClass(C(I),H)},C=function(H){return n.CurrentLibrary.getElementObject(H)},s=function(I,H){var K=n.CurrentLibrary.getOffset(C(I));if(H!=null){var J=H.getZoom();return{left:K.left/J,top:K.top/J}}else{return K}},a=function(H){return n.CurrentLibrary.getSize(C(H))},o=jsPlumbUtil.log,F=jsPlumbUtil.group,f=jsPlumbUtil.groupEnd,E=jsPlumbUtil.time,t=jsPlumbUtil.timeEnd,p=function(){return""+(new Date()).getTime()},B=function(aa){var U=this,ab=arguments,S=false,M=aa.parameters||{},K=U.idPrefix,X=K+(new Date()).getTime(),W=null,ac=null;U._jsPlumb=aa._jsPlumb;U.getId=function(){return X};U.tooltip=aa.tooltip;U.hoverClass=aa.hoverClass||U._jsPlumb.Defaults.HoverClass||n.Defaults.HoverClass;jsPlumbUtil.EventGenerator.apply(this);this.clone=function(){var ad=new Object();U.constructor.apply(ad,ab);return ad};this.getParameter=function(ad){return M[ad]},this.getParameters=function(){return M},this.setParameter=function(ad,ae){M[ad]=ae},this.setParameters=function(ad){M=ad},this.overlayPlacements=[];var L=aa.beforeDetach;this.isDetachAllowed=function(ad){var ae=U._jsPlumb.checkCondition("beforeDetach",ad);if(L){try{ae=L(ad)}catch(af){o("jsPlumb: beforeDetach callback failed",af)}}return ae};var O=aa.beforeDrop;this.isDropAllowed=function(ai,af,ag,ad,ae){var ah=U._jsPlumb.checkCondition("beforeDrop",{sourceId:ai,targetId:af,scope:ag,connection:ad,dropEndpoint:ae});if(O){try{ah=O({sourceId:ai,targetId:af,scope:ag,connection:ad,dropEndpoint:ae})}catch(aj){o("jsPlumb: beforeDrop callback failed",aj)}}return ah};var Y=function(){if(W&&ac){var ad={};n.extend(ad,W);n.extend(ad,ac);delete U.hoverPaintStyle;if(ad.gradient&&W.fillStyle){delete ad.gradient}ac=ad}};this.setPaintStyle=function(ad,ae){W=ad;U.paintStyleInUse=W;Y();if(!ae){U.repaint()}};this.getPaintStyle=function(){return W};this.setHoverPaintStyle=function(ad,ae){ac=ad;Y();if(!ae){U.repaint()}};this.getHoverPaintStyle=function(){return ac};this.setHover=function(ad,af,ae){if(!U._jsPlumb.currentlyDragging&&!U._jsPlumb.isHoverSuspended()){S=ad;if(U.hoverClass!=null&&U.canvas!=null){if(ad){J.addClass(U.canvas,U.hoverClass)}else{J.removeClass(U.canvas,U.hoverClass)}}if(ac!=null){U.paintStyleInUse=ad?ac:W;ae=ae||p();U.repaint({timestamp:ae,recalc:false})}if(U.getAttachedElements&&!af){Z(ad,p(),U)}}};this.isHover=function(){return S};var V=null;this.setZIndex=function(ad){V=ad};this.getZIndex=function(){return V};var J=n.CurrentLibrary,I=["click","dblclick","mouseenter","mouseout","mousemove","mousedown","mouseup","contextmenu"],T={mouseout:"mouseexit"},N=function(af,ag,ae){var ad=T[ae]||ae;J.bind(af,ae,function(ah){ag.fire(ad,ag,ah)})},R=function(af,ae){var ad=T[ae]||ae;J.unbind(af,ae)};this.attachListeners=function(ae,af){for(var ad=0;ad1){for(var ad=0;ad=0?S.overlays[T]:null};this.getOverlays=function(){return S.overlays};this.hideOverlay=function(U){var T=S.getOverlay(U);if(T){T.hide()}};this.hideOverlays=function(){for(var T=0;T0){try{for(var bA=0;bA0?G(bB,bA)!=-1:!bz};this.getConnections=function(bI,bA){if(!bI){bI={}}else{if(bI.constructor==String){bI={scope:bI}}}var bH=bI.scope||br.getDefaultScope(),bG=bv(bH,true),bz=bv(bI.source),bE=bv(bI.target),bD=(!bA&&bG.length>1)?{}:[],bJ=function(bL,bM){if(!bA&&bG.length>1){var bK=bD[bL];if(bK==null){bK=[];bD[bL]=bK}bK.push(bM)}else{bD.push(bM)}};for(var bC in a0){if(aI(bG,bC)){for(var bB=0;bB0&&!bL.isSource),bG=(bC&&bJ.length>0&&!bL.isTarget);if(bN||bG){continue inner}bP.push(bL)}}}}return bf(bP)};this.getAllConnections=function(){return a0};this.getDefaultScope=function(){return R};this.getEndpoint=ax;this.getEndpoints=function(bz){return aV[H(bz)]};this.getId=H;this.getOffset=function(bA){var bz=aj[bA];return X({elId:bA})};this.getSelector=function(bz){return n.CurrentLibrary.getSelector(bz)};this.getSize=function(bA){var bz=ag[bA];if(!bz){X({elId:bA})}return ag[bA]};this.appendElement=aX;var aU=false;this.isHoverSuspended=function(){return aU};this.setHoverSuspended=function(bz){aU=bz};var aY=function(bz){return function(){return jsPlumbAdapter.isRenderModeAvailable(bz)}};this.isCanvasAvailable=aY("canvas");this.isSVGAvailable=aY("svg");this.isVMLAvailable=aY("vml");this.hide=function(bz,bA){a7(bz,"none",bA)};this.idstamp=an;this.init=function(){if(!K){br.setRenderMode(br.Defaults.RenderMode);var bz=function(bA){n.CurrentLibrary.bind(document,bA,function(bG){if(!br.currentlyDragging&&Y==n.CANVAS){for(var bF in a0){var bH=a0[bF];for(var bD=0;bD=4)?[bE[2],bE[3]]:[0,0],offsets:(bE.length==6)?[bE[4],bE[5]]:[0,0],elementId:bB};bC=new ab(bD);bC.clone=function(){return new ab(bD)}}}}}if(!bC.id){bC.id="anchor_"+an()}return bC};this.makeAnchors=function(bC,bA,bz){var bD=[];for(var bB=0;bB0&&bT>=at[bM]){if(bz){bz({element:bO,connection:bY},bR)}return false}bQ.anchor.locked=false;if(b1){bH.setDragScope(b3,b1)}var bW=proxyComponent.isDropAllowed(bY.sourceId,H(bO),bY.scope,bY,null);if(bY.endpointsToDeleteOnDetach){if(bQ===bY.endpointsToDeleteOnDetach[0]){bY.endpointsToDeleteOnDetach[0]=null}else{if(bQ===bY.endpointsToDeleteOnDetach[1]){bY.endpointsToDeleteOnDetach[1]=null}}}if(bY.suspendedEndpoint){bY.targetId=bY.suspendedEndpoint.elementId;bY.target=bH.getElementObject(bY.suspendedEndpoint.elementId);bY.endpoints[1]=bY.suspendedEndpoint}if(bW){bQ.detach(bY,false,true,false);var b2=aK[bM]||br.addEndpoint(bO,bA);if(bA.uniqueEndpoint){aK[bM]=b2}b2._makeTargetCreator=true;if(b2.anchor.positionFinder!=null){var bZ=bH.getUIPosition(arguments,br.getZoom()),bV=s(bO,br),b0=a(bO),bU=b2.anchor.positionFinder(bZ,bV,b0,b2.anchor.constructorParams);b2.anchor.x=bU[0];b2.anchor.y=bU[1]}var bX=br.connect({source:bQ,target:b2,scope:b1,previousConnection:bY,container:bY.parent,deleteEndpointsOnDetach:bE,doNotFireConnectionEvent:bQ.endpointWillMoveAfterConnection});if(bY.endpoints[1]._makeTargetCreator&&bY.endpoints[1].connections.length<2){br.deleteEndpoint(bY.endpoints[1])}if(bE){bX.endpointsToDeleteOnDetach=[bQ,b2]}bX.repaint()}else{if(bY.suspendedEndpoint){if(bY.isReattach()){bY.setHover(false);bY.floatingAnchorIndex=null;bY.suspendedEndpoint.addConnection(bY);br.repaint(bQ.elementId)}else{bQ.detach(bY,false,true,true,bR)}}}};var bN=bH.dragEvents.drop;bL.scope=bL.scope||bI;bL[bN]=ap(bL[bN],bK);bH.initDroppable(bO,bL,true)};bC=aL(bC);var bG=bC.length&&bC.constructor!=String?bC:[bC];for(var bF=0;bF=0&&bX>=N[bJ]){if(bA){bA({element:bQ,maxConnections:bC},bZ)}return false}if(bE.filter){var bV=bE.filter(bH.getOriginalEvent(bZ),bQ);if(bV===false){return}}var b3=X({elId:bK});var b2=((bZ.pageX||bZ.page.x)-b3.left)/b3.width,b1=((bZ.pageY||bZ.page.y)-b3.top)/b3.height,b7=b2,b6=b1;if(bB.parent){var b0=bH.getElementObject(bB.parent),bY=H(b0);b3=X({elId:bY});b7=((bZ.pageX||bZ.page.x)-b3.left)/b3.width,b6=((bZ.pageY||bZ.page.y)-b3.top)/b3.height}var b5={};n.extend(b5,bB);b5.isSource=true;b5.anchor=[b2,b1,0,0];b5.parentAnchor=[b7,b6,0,0];b5.dragOptions=bS;if(bB.parent){var bW=b5.container||br.Defaults.Container||n.Defaults.Container;if(bW){b5.container=bW}else{b5.container=n.CurrentLibrary.getParent(bB.parent)}}bU=br.addEndpoint(bK,b5);bO=true;bU.endpointWillMoveAfterConnection=bB.parent!=null;bU.endpointWillMoveTo=bB.parent?bH.getElementObject(bB.parent):null;var b4=function(){if(bO){br.deleteEndpoint(bU)}};br.registerListener(bU.canvas,"mouseup",b4);br.registerListener(bQ,"mouseup",b4);bH.trigger(bU.canvas,"mousedown",bZ)};br.registerListener(bQ,"mousedown",bM);J[bK]=bM};bD=aL(bD);var bG=bD.length&&bD.constructor!=String?bD:[bD];for(var bF=0;bF0?bJ[0]:null,bE=bJ.length>0?0:-1,bI=this,bD=function(bM,bK,bQ,bP,bL){var bO=bP[0]+(bM.x*bL[0]),bN=bP[1]+(bM.y*bL[1]);return Math.sqrt(Math.pow(bK-bO,2)+Math.pow(bQ-bN,2))},bz=bA||function(bU,bL,bM,bN,bK){var bP=bM[0]+(bN[0]/2),bO=bM[1]+(bN[1]/2);var bR=-1,bT=Infinity;for(var bQ=0;bQ=bC.left)||(bF.left<=bC.right&&bF.right>=bC.right)||(bF.left<=bC.left&&bF.right>=bC.right)||(bC.left<=bF.left&&bC.right>=bF.right)),bK=((bF.top<=bC.top&&bF.bottom>=bC.top)||(bF.top<=bC.bottom&&bF.bottom>=bC.bottom)||(bF.top<=bC.top&&bF.bottom>=bC.bottom)||(bC.top<=bF.top&&bC.bottom>=bF.bottom));if(!(bE||bK)){var bH=null,bB=false,bz=false,bG=null;if(bC.left>bF.left&&bC.top>bF.top){bH=["right","top"]}else{if(bC.left>bF.left&&bF.top>bC.top){bH=["top","left"]}else{if(bC.leftbF.top){bH=["left","top"]}}}}return{orientation:U.DIAGONAL,a:bH,theta:bA,theta2:bD}}else{if(bE){return{orientation:U.HORIZONTAL,a:bF.topbz[0]?1:-1},aa=function(bz){return function(bB,bA){var bC=true;if(bz){if(bB[0][0]bA[0][1]}}else{if(bB[0][0]>bA[0][0]){bC=true}else{bC=bB[0][1]>bA[0][1]}}return bC===false?-1:1}},M=function(bA,bz){var bC=bA[0][0]<0?-Math.PI-bA[0][0]:Math.PI-bA[0][0],bB=bz[0][0]<0?-Math.PI-bz[0][0]:Math.PI-bz[0][0];if(bC>bB){return 1}else{return bA[0][1]>bz[0][1]?1:-1}},a2={top:bb,right:aa(true),bottom:aa(true),left:M},ar=function(bz,bA){return bz.sort(bA)},ao=function(bA,bz){var bC=ag[bA],bD=aj[bA],bB=function(bK,bR,bG,bJ,bP,bO,bF){if(bJ.length>0){var bN=ar(bJ,a2[bK]),bL=bK==="right"||bK==="top",bE=a5(bK,bR,bG,bN,bP,bO,bL);var bS=function(bV,bU){var bT=bs([bU[0],bU[1]],bV.canvas);ak[bV.id]=[bT[0],bT[1],bU[2],bU[3]];aM[bV.id]=bF};for(var bH=0;bH0){bS.connections[0].setHover(b7,false)}else{bS.setHover(b7)}};D(bS.endpoint,bS,b6);this.setPaintStyle(b5.paintStyle||b5.style||br.Defaults.EndpointStyle||n.Defaults.EndpointStyle,true);this.setHoverPaintStyle(b5.hoverPaintStyle||br.Defaults.EndpointHoverStyle||n.Defaults.EndpointHoverStyle,true);this.paintStyleInUse=this.getPaintStyle();var bN=this.getPaintStyle();this.connectorStyle=b5.connectorStyle;this.connectorHoverStyle=b5.connectorHoverStyle;this.connectorOverlays=b5.connectorOverlays;this.connector=b5.connector;this.connectorTooltip=b5.connectorTooltip;this.connectorClass=b5.connectorClass;this.connectorHoverClass=b5.connectorHoverClass;this.isSource=b5.isSource||false;this.isTarget=b5.isTarget||false;var bY=b5.maxConnections||br.Defaults.MaxConnections;this.getAttachedElements=function(){return bS.connections};this.canvas=this.endpoint.canvas;this.connections=b5.connections||[];this.scope=b5.scope||R;this.connectionType=b5.connectionType;this.timestamp=null;bS.reattachConnections=b5.reattach||br.Defaults.ReattachConnections;bS.connectionsDetachable=br.Defaults.ConnectionsDetachable;if(b5.connectionsDetachable===false||b5.detachable===false){bS.connectionsDetachable=false}var bM=b5.dragAllowedWhenFull||true;if(b5.onMaxConnections){bS.bind("maxConnections",b5.onMaxConnections)}this.computeAnchor=function(b7){return bS.anchor.compute(b7)};this.addConnection=function(b7){bS.connections.push(b7)};this.detach=function(b8,cd,b9,cg,b7){var cf=g(bS.connections,function(ci){return ci.id==b8.id}),ce=false;cg=(cg!==false);if(cf>=0){if(b9||b8._forceDetach||b8.isDetachable()||b8.isDetachAllowed(b8)){var ch=b8.endpoints[0]==bS?b8.endpoints[1]:b8.endpoints[0];if(b9||b8._forceDetach||(bS.isDetachAllowed(b8))){bS.connections.splice(cf,1);if(!cd){ch.detach(b8,true,b9);if(b8.endpointsToDeleteOnDetach){for(var cc=0;cc0){bS.detach(bS.connections[0],false,true,b8,b7)}};this.detachFrom=function(ca,b9,b7){var cb=[];for(var b8=0;b8=0){bS.connections.splice(b7,1)}};this.getElement=function(){return bR};this.setElement=function(ca,b7){var cc=H(ca);A(aV[bS.elementId],function(cd){return cd.id==bS.id});bR=C(ca);bJ=H(bR);bS.elementId=bJ;var cb=ay({source:cc,container:b7}),b9=bD.getParent(bS.canvas);bD.removeElement(bS.canvas,b9);bD.appendElement(bS.canvas,cb);for(var b8=0;b80){var cj=bO(ca.elementWithPrecedence),cl=cj.endpoints[0]==bS?1:0,cc=cl==0?cj.sourceId:cj.targetId,ci=aj[cc],ck=ag[cc];b9.txy=[ci.left,ci.top];b9.twh=ck;b9.tElement=cj.endpoints[cl]}cd=bS.anchor.compute(b9)}var ch=bP.compute(cd,bS.anchor.getOrientation(bS),bS.paintStyleInUse,cb||bS.paintStyleInUse);bP.paint(ch,bS.paintStyleInUse,bS.anchor);bS.timestamp=cg;for(var ce=0;ce0?u:n+u:u*n;return jsPlumbUtil.pointOnLine({x:i,y:h},{x:e,y:d},t)}}};this.gradientAtPoint=function(t){return f};this.pointAlongPathFrom=function(t,x,w){var v=s.pointOnPath(t,w),u=t==1?{x:i+((e-i)*10),y:h+((h-d)*10)}:{x:e,y:d};return jsPlumbUtil.pointOnLine(v,u,x)}};jsPlumb.Connectors.Bezier=function(w){var q=this;w=w||{};this.majorAnchor=w.curviness||150;this.minorAnchor=10;var u=null;this.type="Bezier";this._findControlPoint=function(I,x,D,y,B,G,z){var F=G.getOrientation(y),H=z.getOrientation(B),C=F[0]!=H[0]||F[1]==H[1],A=[],J=q.majorAnchor,E=q.minorAnchor;if(!C){if(F[0]==0){A.push(x[0]v){v=D}if(G<0){t+=G;var I=Math.abs(G);v+=I;r[0]+=I;g+=I;p+=I;m[0]+=I}var Q=Math.min(f,o),O=Math.min(r[1],m[1]),C=Math.min(Q,O),H=Math.max(f,o),F=Math.max(r[1],m[1]),z=Math.max(H,F);if(z>e){e=z}if(C<0){s+=C;var E=Math.abs(C);e+=E;r[1]+=E;f+=E;o+=E;m[1]+=E}if(M&&v0?0:1,x)}return x};this.pointOnPath=function(x,z){var y=d();x=n(y,x,z);return jsBezier.pointOnCurve(y,x)};this.gradientAtPoint=function(x,z){var y=d();x=n(y,x,z);return jsBezier.gradientAtPoint(y,x)};this.pointAlongPathFrom=function(x,A,z){var y=d();x=n(y,x,z);return jsBezier.pointAlongCurveFrom(y,x,A)}};jsPlumb.Connectors.Flowchart=function(z){this.type="Flowchart";z=z||{};var r=this,e=z.stub||z.minStubLength||30,i=jsPlumbUtil.isArray(e)?e[0]:e,o=jsPlumbUtil.isArray(e)?e[1]:e,t=z.gap||0,u=[],m=0,g=[],q=[],v=[],s,p,y=-Infinity,w=-Infinity,A=Infinity,x=Infinity,d=z.grid,f=function(G,C){var F=G%C,D=Math.floor(G/C),E=F>(C/2)?1:0;return(D+E)*C},n=function(C,F,E,D){return[E||d==null?C:f(C,d[0]),D||d==null?F:f(F,d[1])]},B=function(D,C,H,G){var F=0;for(var E=0;E0?E/m:(m+E)/m}var C=g.length-1,D=1;for(var F=0;F=E){C=F;D=(E-g[F][0])/q[F];break}}return{segment:u[C],proportion:D,index:C}};this.compute=function(Z,an,C,T,ay,N,X,S,at,ap){u=[];g=[];m=0;q=[];y=w=-Infinity;A=x=Infinity;r.lineWidth=X;s=an[0]ax?0:1,ah=[1,0][af];Q=[];az=[];Q[af]=Z[af]>an[af]?-1:1;az[af]=Z[af]>an[af]?1:-1;Q[ah]=0;az[ah]=0}var L=s?(ao-E)+(t*Q[0]):H+(t*Q[0]),K=p?(ax-D)+(t*Q[1]):G+(t*Q[1]),av=s?H+(t*az[0]):(ao-E)+(t*az[0]),au=p?G+(t*az[1]):(ax-D)+(t*az[1]),ac=L+(Q[0]*i),ab=K+(Q[1]*i),O=av+(az[0]*o),M=au+(az[1]*o),Y=Math.abs(L-av)>(i+o),aa=Math.abs(K-au)>(i+o),ak=ac+((O-ac)/2),ai=ab+((M-ab)/2),R=((Q[0]*az[0])+(Q[1]*az[1])),ae=R==-1,ag=R==0,F=R==1;am-=H;al-=G;v=[am,al,ao,ax,L,K,av,au];var ar=[];var V=Q[0]==0?"y":"x",P=ae?"opposite":F?"orthogonal":"perpendicular",I=jsPlumbUtil.segment([L,K],[av,au]),aj=Q[V=="x"?0:1]==-1,U={x:[null,4,3,2,1],y:[null,2,1,4,3]};if(aj){I=U[V][I]}k(ac,ab,L,K,av,au);var W=function(aD,aC,aA,aB){return aD+(aC*((1-aA)*aB)+Math.max(i,o))},J={oppositex:function(){if(C.elementId==T.elementId){var aA=ab+((1-ay.y)*at.height)+Math.max(i,o);return[[ac,aA],[O,aA]]}else{if(Y&&(I==1||I==2)){return[[ak,K],[ak,au]]}else{return[[ac,ai],[O,ai]]}}},orthogonalx:function(){if(I==1||I==2){return[[O,ab]]}else{return[[ac,M]]}},perpendicularx:function(){var aA=(au+K)/2;if((I==1&&az[1]==1)||(I==2&&az[1]==-1)){if(Math.abs(av-L)>Math.max(i,o)){return[[O,ab]]}else{return[[ac,ab],[ac,aA],[O,aA]]}}else{if((I==3&&az[1]==-1)||(I==4&&az[1]==1)){return[[ac,aA],[O,aA]]}else{if((I==3&&az[1]==1)||(I==4&&az[1]==-1)){return[[ac,M]]}else{if((I==1&&az[1]==-1)||(I==2&&az[1]==1)){if(Math.abs(av-L)>Math.max(i,o)){return[[ak,ab],[ak,M]]}else{return[[ac,M]]}}}}}},oppositey:function(){if(C.elementId==T.elementId){var aA=ac+((1-ay.x)*at.width)+Math.max(i,o);return[[aA,ab],[aA,M]]}else{if(aa&&(I==2||I==3)){return[[L,ai],[av,ai]]}else{return[[ak,ab],[ak,M]]}}},orthogonaly:function(){if(I==2||I==3){return[[ac,M]]}else{return[[O,ab]]}},perpendiculary:function(){var aA=(av+L)/2;if((I==2&&az[0]==-1)||(I==3&&az[0]==1)){if(Math.abs(av-L)>Math.max(i,o)){return[[ac,M]]}else{return[[ac,ai],[O,ai]]}}else{if((I==1&&az[0]==-1)||(I==4&&az[0]==1)){var aA=(av+L)/2;return[[aA,ab],[aA,M]]}else{if((I==1&&az[0]==1)||(I==4&&az[0]==-1)){return[[O,ab]]}else{if((I==2&&az[0]==1)||(I==3&&az[0]==-1)){if(Math.abs(au-K)>Math.max(i,o)){return[[ac,ai],[O,ai]]}else{return[[O,ab]]}}}}}}};var aq=J[P+V]();if(aq){for(var aw=0;awv[3]){v[3]=w+(X*2)}if(y>v[2]){v[2]=y+(X*2)}return v};this.pointOnPath=function(C,D){return r.pointAlongPathFrom(C,0,D)};this.gradientAtPoint=function(C,D){return u[h(C,D)["index"]][4]};this.pointAlongPathFrom=function(J,C,I){var K=h(J,I),G=K.segment,D=K.proportion,F=u[K.index][5],E=u[K.index][4];var H={x:E==Infinity?G[2]:G[2]>G[0]?G[0]+((1-D)*F)-C:G[2]+(D*F)+C,y:E==0?G[3]:G[3]>G[1]?G[1]+((1-D)*F)-C:G[3]+(D*F)+C,segmentInfo:K};return H}};jsPlumb.Endpoints.Dot=function(e){this.type="Dot";var d=this;e=e||{};this.radius=e.radius||10;this.defaultOffset=0.5*this.radius;this.defaultInnerRadius=this.radius/3;this.compute=function(k,g,m,i){var h=m.radius||d.radius,f=k[0]-h,l=k[1]-h;return[f,l,h*2,h*2,h]}};jsPlumb.Endpoints.Rectangle=function(e){this.type="Rectangle";var d=this;e=e||{};this.width=e.width||20;this.height=e.height||20;this.compute=function(l,h,n,k){var i=n.width||d.width,g=n.height||d.height,f=l[0]-(i/2),m=l[1]-(g/2);return[f,m,i,g]}};var b=function(f){jsPlumb.DOMElementComponent.apply(this,arguments);var d=this;var e=[];this.getDisplayElements=function(){return e};this.appendDisplayElement=function(g){e.push(g)}};jsPlumb.Endpoints.Image=function(i){this.type="Image";b.apply(this,arguments);var n=this,h=false,g=false,f=i.width,e=i.height,l=null,d=i.endpoint;this.img=new Image();n.ready=false;this.img.onload=function(){n.ready=true;f=f||n.img.width;e=e||n.img.height;if(l){l(n)}};d.setImage=function(o,q){var p=o.constructor==String?o:o.src;l=q;n.img.src=o;if(n.canvas!=null){n.canvas.setAttribute("src",o)}};d.setImage(i.src||i.url,i.onload);this.compute=function(q,o,r,p){n.anchorPoint=q;if(n.ready){return[q[0]-f/2,q[1]-e/2,f,e]}else{return[0,0,0,0]}};n.canvas=document.createElement("img"),h=false;n.canvas.style.margin=0;n.canvas.style.padding=0;n.canvas.style.outline=0;n.canvas.style.position="absolute";var k=i.cssClass?" "+i.cssClass:"";n.canvas.className=jsPlumb.endpointClass+k;if(f){n.canvas.setAttribute("width",f)}if(e){n.canvas.setAttribute("height",e)}jsPlumb.appendElement(n.canvas,i.parent);n.attachListeners(n.canvas,n);n.cleanup=function(){g=true};var m=function(r,q,p){if(!g){if(!h){n.canvas.setAttribute("src",n.img.src);n.appendDisplayElement(n.canvas);h=true}var o=n.anchorPoint[0]-(f/2),s=n.anchorPoint[1]-(e/2);jsPlumb.sizeCanvas(n.canvas,o,s,f,e)}};this.paint=function(q,p,o){if(n.ready){m(q,p,o)}else{window.setTimeout(function(){n.paint(q,p,o)},200)}}};jsPlumb.Endpoints.Blank=function(e){var d=this;this.type="Blank";b.apply(this,arguments);this.compute=function(h,f,i,g){return[h[0],h[1],10,0]};d.canvas=document.createElement("div");d.canvas.style.display="block";d.canvas.style.width="1px";d.canvas.style.height="1px";d.canvas.style.background="transparent";d.canvas.style.position="absolute";d.canvas.className=d._jsPlumb.endpointClass;jsPlumb.appendElement(d.canvas,e.parent);this.paint=function(h,g,f){jsPlumb.sizeCanvas(d.canvas,h[0],h[1],h[2],h[3])}};jsPlumb.Endpoints.Triangle=function(d){this.type="Triangle";d=d||{};d.width=d.width||55;d.height=d.height||55;this.width=d.width;this.height=d.height;this.compute=function(k,g,m,i){var h=m.width||self.width,f=m.height||self.height,e=k[0]-(h/2),l=k[1]-(f/2);return[e,l,h,f]}};var c=function(f){var e=true,d=this;this.isAppendedAtTopLevel=true;this.component=f.component;this.loc=f.location==null?0.5:f.location;this.endpointLoc=f.endpointLocation==null?[0.5,0.5]:f.endpointLocation;this.setVisible=function(g){e=g;d.component.repaint()};this.isVisible=function(){return e};this.hide=function(){d.setVisible(false)};this.show=function(){d.setVisible(true)};this.incrementLocation=function(g){d.loc+=g;d.component.repaint()};this.setLocation=function(g){d.loc=g;d.component.repaint()};this.getLocation=function(){return d.loc}};jsPlumb.Overlays.Arrow=function(h){this.type="Arrow";c.apply(this,arguments);this.isAppendedAtTopLevel=false;h=h||{};var e=this;this.length=h.length||20;this.width=h.width||20;this.id=h.id;var g=(h.direction||1)<0?-1:1,f=h.paintStyle||{lineWidth:1},d=h.foldback||0.623;this.computeMaxSize=function(){return e.width*1.5};this.cleanup=function(){};this.draw=function(m,A,v){var p,w,i,q,o;if(m.pointAlongPathFrom){if(jsPlumbUtil.isString(e.loc)||e.loc>1||e.loc<0){var k=parseInt(e.loc);p=m.pointAlongPathFrom(k,g*e.length/2,true),w=m.pointOnPath(k,true),i=jsPlumbUtil.pointOnLine(p,w,e.length)}else{if(e.loc==1){p=m.pointOnPath(e.loc);w=m.pointAlongPathFrom(e.loc,-1);i=jsPlumbUtil.pointOnLine(p,w,e.length)}else{if(e.loc==0){i=m.pointOnPath(e.loc);w=m.pointAlongPathFrom(e.loc,1);p=jsPlumbUtil.pointOnLine(i,w,e.length)}else{p=m.pointAlongPathFrom(e.loc,g*e.length/2),w=m.pointOnPath(e.loc),i=jsPlumbUtil.pointOnLine(p,w,e.length)}}}q=jsPlumbUtil.perpendicularLineTo(p,i,e.width);o=jsPlumbUtil.pointOnLine(p,i,d*e.length);var z=Math.min(p.x,q[0].x,q[1].x),t=Math.max(p.x,q[0].x,q[1].x),y=Math.min(p.y,q[0].y,q[1].y),s=Math.max(p.y,q[0].y,q[1].y);var r={hxy:p,tail:q,cxy:o},u=f.strokeStyle||A.strokeStyle,x=f.fillStyle||A.strokeStyle,n=f.lineWidth||A.lineWidth;e.paint(m,r,n,u,x,v);return[z,t,y,s]}else{return[0,0,0,0]}}};jsPlumb.Overlays.PlainArrow=function(e){e=e||{};var d=jsPlumb.extend(e,{foldback:1});jsPlumb.Overlays.Arrow.call(this,d);this.type="PlainArrow"};jsPlumb.Overlays.Diamond=function(f){f=f||{};var d=f.length||40,e=jsPlumb.extend(f,{length:d/2,foldback:2});jsPlumb.Overlays.Arrow.call(this,e);this.type="Diamond"};var a=function(i){jsPlumb.DOMElementComponent.apply(this,arguments);c.apply(this,arguments);var d=this,e=false;i=i||{};this.id=i.id;var l;var h=function(){l=i.create(i.component);l=jsPlumb.CurrentLibrary.getDOMElement(l);l.style.position="absolute";var m=i._jsPlumb.overlayClass+" "+(d.cssClass?d.cssClass:i.cssClass?i.cssClass:"");l.className=m;jsPlumb.appendElement(l,i.component.parent);i._jsPlumb.getId(l);d.attachListeners(l,d);d.canvas=l};this.getElement=function(){if(l==null){h()}return l};this.getDimensions=function(){return jsPlumb.CurrentLibrary.getSize(jsPlumb.CurrentLibrary.getElementObject(d.getElement()))};var f=null,k=function(m){if(f==null){f=d.getDimensions()}return f};this.clearCachedDimensions=function(){f=null};this.computeMaxSize=function(){var m=k();return Math.max(m[0],m[1])};var g=d.setVisible;d.setVisible=function(m){g(m);l.style.display=m?"block":"none"};this.cleanup=function(){if(l!=null){jsPlumb.CurrentLibrary.removeElement(l)}};this.paint=function(m,o,n){if(!e){d.getElement();m.appendDisplayElement(l);d.attachListeners(l,m);e=true}l.style.left=(n[0]+o.minx)+"px";l.style.top=(n[1]+o.miny)+"px"};this.draw=function(n,o,p){var t=k();if(t!=null&&t.length==2){var q={x:0,y:0};if(n.pointOnPath){var r=d.loc,s=false;if(jsPlumbUtil.isString(d.loc)||d.loc<0||d.loc>1){r=parseInt(d.loc);s=true}q=n.pointOnPath(r,s)}else{var m=d.loc.constructor==Array?d.loc:d.endpointLoc;q={x:m[0]*p[2],y:m[1]*p[3]}}minx=q.x-(t[0]/2),miny=q.y-(t[1]/2);d.paint(n,{minx:minx,miny:miny,td:t,cxy:q},p);return[minx,minx+t[0],miny,miny+t[1]]}else{return[0,0,0,0]}};this.reattachListeners=function(m){if(l){d.reattachListenersForElement(l,d,m)}}};jsPlumb.Overlays.Custom=function(d){this.type="Custom";a.apply(this,arguments)};jsPlumb.Overlays.Label=function(h){var d=this;this.labelStyle=h.labelStyle||jsPlumb.Defaults.LabelStyle;this.cssClass=this.labelStyle!=null?this.labelStyle.cssClass:null;h.create=function(){return document.createElement("div")};jsPlumb.Overlays.Custom.apply(this,arguments);this.type="Label";var f=h.label||"",d=this,g=null;this.setLabel=function(k){f=k;g=null;d.clearCachedDimensions();e();d.component.repaint()};var e=function(){if(typeof f=="function"){var k=f(d);d.getElement().innerHTML=k.replace(/\r\n/g,"
    ")}else{if(g==null){g=f;d.getElement().innerHTML=g.replace(/\r\n/g,"
    ")}}};this.getLabel=function(){return f};var i=this.getDimensions;this.getDimensions=function(){e();return i()}}})();(function(){var c=function(e,g,d,f){this.m=(f-g)/(d-e);this.b=-1*((this.m*e)-g);this.rectIntersect=function(q,p,s,o){var n=[];var k=(p-this.b)/this.m;if(k>=q&&k<=(q+s)){n.push([k,(this.m*k)+this.b])}var t=(this.m*(q+s))+this.b;if(t>=p&&t<=(p+o)){n.push([(t-this.b)/this.m,t])}var k=((p+o)-this.b)/this.m;if(k>=q&&k<=(q+s)){n.push([k,(this.m*k)+this.b])}var t=(this.m*q)+this.b;if(t>=p&&t<=(p+o)){n.push([(t-this.b)/this.m,t])}if(n.length==2){var m=(n[0][0]+n[1][0])/2,l=(n[0][1]+n[1][1])/2;n.push([m,l]);var i=m<=q+(s/2)?-1:1,r=l<=p+(o/2)?-1:1;n.push([i,r]);return n}return null}},a=function(e,g,d,f){if(e<=d&&f<=g){return 1}else{if(e<=d&&g<=f){return 2}else{if(d<=e&&f>=g){return 3}}}return 4},b=function(g,f,i,e,h,m,l,d,k){if(d<=k){return[g,f]}if(i==1){if(e[3]<=0&&h[3]>=1){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]>=1&&h[2]<=0){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(-1*m),f+(-1*l)]}}}else{if(i==2){if(e[3]>=1&&h[3]<=0){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]>=1&&h[2]<=0){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(1*m),f+(-1*l)]}}}else{if(i==3){if(e[3]>=1&&h[3]<=0){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]<=0&&h[2]>=1){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(-1*m),f+(-1*l)]}}}else{if(i==4){if(e[3]<=0&&h[3]>=1){return[g+(e[2]<0.5?-1*m:m),f]}else{if(e[2]<=0&&h[2]>=1){return[g,f+(e[3]<0.5?-1*l:l)]}else{return[g+(1*m),f+(-1*l)]}}}}}}};jsPlumb.Connectors.StateMachine=function(l){var u=this,n=null,o,m,g,e,p=[],d=l.curviness||10,k=l.margin||5,q=l.proximityLimit||80,f=l.orientation&&l.orientation=="clockwise",i=l.loopbackRadius||25,h=false,t=l.showLoopback!==false;this.type="StateMachine";l=l||{};this.compute=function(ad,H,W,I,ac,z,v,U){var Q=Math.abs(ad[0]-H[0]),Y=Math.abs(ad[1]-H[1]),S=0.45*Q,ab=0.45*Y;Q*=1.9;Y*=1.9;v=v||1;var O=Math.min(ad[0],H[0])-S,M=Math.min(ad[1],H[1])-ab;if(!t||(W.elementId!=I.elementId)){h=false;o=ad[0]0?0:1,v)}return v};this.pointOnPath=function(x,B){if(h){if(B){var y=Math.PI*2*i;x=x/y}if(x>0&&x<1){x=1-x}var z=(x*2*Math.PI)+(Math.PI/2),w=n[4]+(n[6]*Math.cos(z)),v=n[5]+(n[6]*Math.sin(z));return{x:w,y:v}}else{var A=r();x=s(A,x,B);return jsBezier.pointOnCurve(A,x)}};this.gradientAtPoint=function(v,y){if(h){if(y){var w=Math.PI*2*i;v=v/w}return Math.atan(v*2*Math.PI)}else{var x=r();v=s(x,v,y);return jsBezier.gradientAtPoint(x,v)}};this.pointAlongPathFrom=function(D,v,C){if(h){if(C){var B=Math.PI*2*i;D=D/B}if(D>0&&D<1){D=1-D}var B=2*Math.PI*n[6],w=v/B*2*Math.PI,z=(D*2*Math.PI)-w+(Math.PI/2),y=n[4]+(n[6]*Math.cos(z)),x=n[5]+(n[6]*Math.sin(z));return{x:y,y:x}}else{var A=r();D=s(A,D,C);return jsBezier.pointAlongCurveFrom(A,D,v)}}};jsPlumb.Connectors.canvas.StateMachine=function(f){f=f||{};var d=this,g=f.drawGuideline||true,e=f.avoidSelector;jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.CanvasConnector.apply(this,arguments);this._paint=function(l){if(l.length==10){d.ctx.beginPath();d.ctx.moveTo(l[4],l[5]);d.ctx.bezierCurveTo(l[8],l[9],l[8],l[9],l[6],l[7]);d.ctx.stroke()}else{d.ctx.save();d.ctx.beginPath();var k=0,i=2*Math.PI,h=l[7];d.ctx.arc(l[4],l[5],l[6],0,i,h);d.ctx.stroke();d.ctx.closePath();d.ctx.restore()}};this.createGradient=function(i,h){return h.createLinearGradient(i[4],i[5],i[6],i[7])}};jsPlumb.Connectors.svg.StateMachine=function(){var d=this;jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.SvgConnector.apply(this,arguments);this.getPath=function(e){if(e.length==10){return"M "+e[4]+" "+e[5]+" C "+e[8]+" "+e[9]+" "+e[8]+" "+e[9]+" "+e[6]+" "+e[7]}else{return"M"+(e[8]+4)+" "+e[9]+" A "+e[6]+" "+e[6]+" 0 1,0 "+(e[8]-4)+" "+e[9]}}};jsPlumb.Connectors.vml.StateMachine=function(){jsPlumb.Connectors.StateMachine.apply(this,arguments);jsPlumb.VmlConnector.apply(this,arguments);var d=jsPlumb.vml.convertValue;this.getPath=function(k){if(k.length==10){return"m"+d(k[4])+","+d(k[5])+" c"+d(k[8])+","+d(k[9])+","+d(k[8])+","+d(k[9])+","+d(k[6])+","+d(k[7])+" e"}else{var h=d(k[8]-k[6]),g=d(k[9]-(2*k[6])),f=h+d(2*k[6]),e=g+d(2*k[6]),l=h+","+g+","+f+","+e;var i="ar "+l+","+d(k[8])+","+d(k[9])+","+d(k[8])+","+d(k[9])+" e";return i}}}})();(function(){var h={"stroke-linejoin":"joinstyle",joinstyle:"joinstyle",endcap:"endcap",miterlimit:"miterlimit"},c=null;if(document.createStyleSheet&&document.namespaces){var m=[".jsplumb_vml","jsplumb\\:textbox","jsplumb\\:oval","jsplumb\\:rect","jsplumb\\:stroke","jsplumb\\:shape","jsplumb\\:group"],g="behavior:url(#default#VML);position:absolute;";c=document.createStyleSheet();for(var r=0;rF?1:-1:0,K=N?Q>P?1:-1:0,O=D.lineWidth/2;G=G+" L "+H+" "+Q;G=G+" L "+(H+(L*O))+" "+(Q+(K*O));J=H;I=Q;G=G+" M "+H+" "+Q}G=G+" L "+E[6]+","+E[7];return G}};var y=window.SvgEndpoint=function(E){var D=this;s.apply(this,[{cssClass:E._jsPlumb.endpointClass,originalArgs:arguments,pointerEventsSpec:"all",useDivWrapper:true,_jsPlumb:E._jsPlumb}]);this._paint=function(H,G){var F=jsPlumb.extend({},G);if(F.outlineColor){F.strokeWidth=F.outlineWidth;F.strokeStyle=jsPlumbUtil.convertStyle(F.outlineColor,true)}if(D.node==null){D.node=D.makeNode(H,F);D.svg.appendChild(D.node);D.attachListeners(D.node,D)}x(D.svg,D.node,F,H,D);n(D.node,H)};this.reattachListeners=function(){if(D.node){D.reattachListenersForElement(D.node,D)}}};jsPlumb.Endpoints.svg.Dot=function(){jsPlumb.Endpoints.Dot.apply(this,arguments);y.apply(this,arguments);this.makeNode=function(E,D){return f("circle",{cx:E[2]/2,cy:E[3]/2,r:E[2]/2})}};jsPlumb.Endpoints.svg.Rectangle=function(){jsPlumb.Endpoints.Rectangle.apply(this,arguments);y.apply(this,arguments);this.makeNode=function(E,D){return f("rect",{width:E[2],height:E[3]})}};jsPlumb.Endpoints.svg.Image=jsPlumb.Endpoints.Image;jsPlumb.Endpoints.svg.Blank=jsPlumb.Endpoints.Blank;jsPlumb.Overlays.svg.Label=jsPlumb.Overlays.Label;jsPlumb.Overlays.svg.Custom=jsPlumb.Overlays.Custom;var p=function(H,F){H.apply(this,F);jsPlumb.jsPlumbUIComponent.apply(this,F);this.isAppendedAtTopLevel=false;var D=this,G=null;this.paint=function(J,M,I,N,K){if(G==null){G=f("path",{"pointer-events":"all"});J.svg.appendChild(G);D.attachListeners(G,J);D.attachListeners(G,D)}var L=F&&(F.length==1)?(F[0].cssClass||""):"";g(G,{d:E(M),"class":L,stroke:N?N:null,fill:K?K:null})};var E=function(I){return"M"+I.hxy.x+","+I.hxy.y+" L"+I.tail[0].x+","+I.tail[0].y+" L"+I.cxy.x+","+I.cxy.y+" L"+I.tail[1].x+","+I.tail[1].y+" L"+I.hxy.x+","+I.hxy.y};this.reattachListeners=function(){if(G){D.reattachListenersForElement(G,D)}};this.cleanup=function(){if(G!=null){jsPlumb.CurrentLibrary.removeElement(G)}}};jsPlumb.Overlays.svg.Arrow=function(){p.apply(this,[jsPlumb.Overlays.Arrow,arguments])};jsPlumb.Overlays.svg.PlainArrow=function(){p.apply(this,[jsPlumb.Overlays.PlainArrow,arguments])};jsPlumb.Overlays.svg.Diamond=function(){p.apply(this,[jsPlumb.Overlays.Diamond,arguments])};jsPlumb.Overlays.svg.GuideLines=function(){var I=null,D=this,H=null,G,F;jsPlumb.Overlays.GuideLines.apply(this,arguments);this.paint=function(K,M,J,N,L){if(I==null){I=f("path");K.svg.appendChild(I);D.attachListeners(I,K);D.attachListeners(I,D);G=f("path");K.svg.appendChild(G);D.attachListeners(G,K);D.attachListeners(G,D);F=f("path");K.svg.appendChild(F);D.attachListeners(F,K);D.attachListeners(F,D)}g(I,{d:E(M[0],M[1]),stroke:"red",fill:null});g(G,{d:E(M[2][0],M[2][1]),stroke:"blue",fill:null});g(F,{d:E(M[3][0],M[3][1]),stroke:"green",fill:null})};var E=function(K,J){return"M "+K.x+","+K.y+" L"+J.x+","+J.y}}})();(function(){var d=null,i=function(p,o){return jsPlumb.CurrentLibrary.hasClass(a(p),o)},a=function(o){return jsPlumb.CurrentLibrary.getElementObject(o)},m=function(o){return jsPlumb.CurrentLibrary.getOffset(a(o))},n=function(o){return jsPlumb.CurrentLibrary.getPageXY(o)},f=function(o){return jsPlumb.CurrentLibrary.getClientXY(o)};var k=function(){var q=this;q.overlayPlacements=[];jsPlumb.jsPlumbUIComponent.apply(this,arguments);jsPlumbUtil.EventGenerator.apply(this,arguments);this._over=function(z){var B=m(a(q.canvas)),D=n(z),u=D[0]-B.left,C=D[1]-B.top;if(u>0&&C>0&&u=u&&w[2]<=C&&w[3]>=C)){return true}}var A=q.canvas.getContext("2d").getImageData(parseInt(u),parseInt(C),1,1);return A.data[0]!=0||A.data[1]!=0||A.data[2]!=0||A.data[3]!=0}return false};var p=false,o=false,t=null,s=false,r=function(v,u){return v!=null&&i(v,u)};this.mousemove=function(x){var z=n(x),w=f(x),v=document.elementFromPoint(w[0],w[1]),y=r(v,"_jsPlumb_overlay");var u=d==null&&(r(v,"_jsPlumb_endpoint")||r(v,"_jsPlumb_connector"));if(!p&&u&&q._over(x)){p=true;q.fire("mouseenter",q,x);return true}else{if(p&&(!q._over(x)||!u)&&!y){p=false;q.fire("mouseexit",q,x)}}q.fire("mousemove",q,x)};this.click=function(u){if(p&&q._over(u)&&!s){q.fire("click",q,u)}s=false};this.dblclick=function(u){if(p&&q._over(u)&&!s){q.fire("dblclick",q,u)}s=false};this.mousedown=function(u){if(q._over(u)&&!o){o=true;t=m(a(q.canvas));q.fire("mousedown",q,u)}};this.mouseup=function(u){o=false;q.fire("mouseup",q,u)};this.contextmenu=function(u){if(p&&q._over(u)&&!s){q.fire("contextmenu",q,u)}s=false}};var c=function(p){var o=document.createElement("canvas");p._jsPlumb.appendElement(o,p.parent);o.style.position="absolute";if(p["class"]){o.className=p["class"]}p._jsPlumb.getId(o,p.uuid);if(p.tooltip){o.setAttribute("title",p.tooltip)}return o};var l=function(p){k.apply(this,arguments);var o=[];this.getDisplayElements=function(){return o};this.appendDisplayElement=function(q){o.push(q)}};var h=jsPlumb.CanvasConnector=function(r){l.apply(this,arguments);var o=function(v,t){p.ctx.save();jsPlumb.extend(p.ctx,t);if(t.gradient){var u=p.createGradient(v,p.ctx);for(var s=0;s0?c[0].tagName:null},getUIPosition:function(c,d){d=d||1;if(c.length==1){ret={left:c[0].pageX,top:c[0].pageY}}else{var e=c[1],b=e.offset;ret=b||e.absolutePosition;e.position.left/=d;e.position.top/=d}return{left:ret.left/d,top:ret.top/d}},hasClass:function(c,b){return c.hasClass(b)},initDraggable:function(c,b,d){b=b||{};b.helper=null;if(d){b.scope=b.scope||jsPlumb.Defaults.Scope}c.draggable(b)},initDroppable:function(c,b){b.scope=b.scope||jsPlumb.Defaults.Scope;c.droppable(b)},isAlreadyDraggable:function(b){b=jsPlumb.CurrentLibrary.getElementObject(b);return b.hasClass("ui-draggable")},isDragSupported:function(c,b){return c.draggable},isDropSupported:function(c,b){return c.droppable},removeClass:function(c,b){c=jsPlumb.CurrentLibrary.getElementObject(c);try{if(c[0].className.constructor==SVGAnimatedString){jsPlumbUtil.svg.removeClass(c[0],b)}}catch(d){}c.removeClass(b)},removeElement:function(b,c){jsPlumb.CurrentLibrary.getElementObject(b).remove()},setAttribute:function(c,d,b){c.attr(d,b)},setDraggable:function(c,b){c.draggable("option","disabled",!b)},setDragScope:function(c,b){c.draggable("option","scope",b)},setOffset:function(b,c){jsPlumb.CurrentLibrary.getElementObject(b).offset(c)},trigger:function(d,e,b){var c=jQuery._data(jsPlumb.CurrentLibrary.getElementObject(d)[0],"handle");c(b)},unbind:function(b,c,d){b=jsPlumb.CurrentLibrary.getElementObject(b);b.unbind(c,d)}};a(document).ready(jsPlumb.init)})(jQuery);(function(){"undefined"==typeof Math.sgn&&(Math.sgn=function(l){return 0==l?0:0=64){x[0]=(C[0].x+C[B].x)/2;return 1}var p,u=C[0].y-C[B].y;y=C[B].x-C[0].x;q=C[0].x*C[B].y-C[B].x*C[0].y;s=max_distance_below=0;for(p=1;ps?s=r:r0?1:-1,r=null;n1){l.location=1}if(l.location<0){l.location=0}return i(m,l.location)},nearestPointOnCurve:function(m,l){var n=h(m,l);return{point:k(l,l.length-1,n.location,null,null),location:n.location}},pointOnCurve:c,pointAlongCurveFrom:function(m,l,n){return b(m,l,n).point},perpendicularToCurveAt:function(m,l,n,o){l=b(m,l,o==null?0:o);m=i(m,l.location);o=Math.atan(-1/m);m=n/2*Math.sin(o);n=n/2*Math.cos(o);return[{x:l.point.x+n,y:l.point.y+m},{x:l.point.x-n,y:l.point.y-m}]},locationAlongCurveFrom:function(m,l,n){return b(m,l,n).location}}})(); \ No newline at end of file diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 9bfa9f887..117c5ad32 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -1726,8 +1726,8 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // render all global variables IN THE ORDER they were created by the program, // in order to ensure continuity: - // Derive a list where each element contains a pair of - // [varname, value] as long as value is NOT undefined. + // Derive a list where each element contains varname + // as long as value is NOT undefined. // (Sometimes entries in curEntry.ordered_globals are undefined, // so filter those out.) var realGlobalsLst = []; @@ -1736,41 +1736,43 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { // (use '!==' to do an EXACT match against undefined) if (val !== undefined) { // might not be defined at this line, which is OKAY! - realGlobalsLst.push([varname, varname]); /* purposely map varname down both columns */ + realGlobalsLst.push(varname); } }); var globalsID = myViz.generateID('globals'); var globalTblID = myViz.generateID('global_table'); - var globalsD3 = myViz.domRootD3.select('#' + globalTblID) + var globalVarTable = myViz.domRootD3.select('#' + globalTblID) .selectAll('tr') - .data(realGlobalsLst, function(d) { - return d[0]; // use variable name as key - }); - + .data(realGlobalsLst, + function(d) {return d;} // use variable name as key + ); - // ENTER - globalsD3.enter() - .append('tr') - .selectAll('td.stackFrameVar,td.stackFrameValue') - .data(function(d, i){return d;}) /* map varname down both columns */ + globalVarTable .enter() + .append('tr'); + + + var globalVarTableCells = globalVarTable + .selectAll('td.stackFrameVar,td.stackFrameValue') + .data(function(d, i){return [d, d];}) /* map varname down both columns */ + + globalVarTableCells.enter() .append('td') - .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}) - .html(function(d, i) { - return (i == 0) ? d : '' /* initialize in each() later */; - }) + .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}); + // remember that the enter selection is added to the update // selection so that we can process it later ... // UPDATE - globalsD3 + globalVarTableCells .order() // VERY IMPORTANT to put in the order corresponding to data elements - .selectAll('td') - .data(function(d, i){return d;}) /* map varname down both columns */ .each(function(varname, i) { - if (i == 1) { + if (i == 0) { + $(this).html(varname); + } + else { var val = curEntry.globals[varname]; // include type in repr to prevent conflating integer 5 with string "5" @@ -1818,8 +1820,16 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { }); - // EXIT - globalsD3.exit() + + globalVarTableCells.exit().remove(); + + globalVarTable.exit() + .each(function(d, i) { + // detach all stack_pointer connectors for divs that are being removed + $(this).find('.stack_pointer').each(function(i, sp) { + myViz.jsPlumbInstance.detachAllConnections($(sp).attr('id')); + }); + }) .remove(); @@ -1902,11 +1912,11 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var stackVarTableCells = stackVarTable .selectAll('td.stackFrameVar,td.stackFrameValue') - .data(function(d, i) {return [d, d] /* map identical data down both columns */;}) + .data(function(d, i) {return [d, d] /* map identical data down both columns */;}); stackVarTableCells.enter() .append('td') - .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}) + .attr('class', function(d, i) {return (i == 0) ? 'stackFrameVar' : 'stackFrameValue';}); stackVarTableCells .order() // VERY IMPORTANT to put in the order corresponding to data elements @@ -1971,10 +1981,22 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTableCells.exit().remove(); - stackVarTable.exit().remove(); + stackVarTable.exit() + .each(function(d, i) { + $(this).find('.stack_pointer').each(function(i, sp) { + // detach all stack_pointer connectors for divs that are being removed + myViz.jsPlumbInstance.detachAllConnections($(sp).attr('id')); + }); + }) + .remove(); stackFrameDiv.exit() - //.each(function(frame, i) {console.log('DEL STACK FRAME', frame.unique_hash, i);}) + .each(function(frame, i) { + $(this).find('.stack_pointer').each(function(i, sp) { + // detach all stack_pointer connectors for divs that are being removed + myViz.jsPlumbInstance.detachAllConnections($(sp).attr('id')); + }); + }) .remove(); From 8c2a2f2b955a040b3b40db0fbaf2072b7fa5d660 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 4 Oct 2012 16:59:51 -0700 Subject: [PATCH 457/502] upgraded from jquery 1.6 to 1.8.2 (fingers crossed!) --- v3/commentary-bubbles-demo.html | 9 +++++---- v3/embedding-demo.html | 9 +++++---- v3/index.html | 9 +++++---- v3/js/pytutor.js | 9 +++++---- v3/visualize.html | 9 +++++---- 5 files changed, 25 insertions(+), 20 deletions(-) diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html index 541dcddb5..14ecc7583 100644 --- a/v3/commentary-bubbles-demo.html +++ b/v3/commentary-bubbles-demo.html @@ -6,11 +6,12 @@ - + - - - + + + diff --git a/v3/embedding-demo.html b/v3/embedding-demo.html index bb89143d5..3d4f385b3 100644 --- a/v3/embedding-demo.html +++ b/v3/embedding-demo.html @@ -6,11 +6,12 @@ - + - - - + + + diff --git a/v3/index.html b/v3/index.html index ed6ce82ed..632afe8e5 100644 --- a/v3/index.html +++ b/v3/index.html @@ -36,11 +36,12 @@ - + - - - + + + diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 117c5ad32..4c27b63fc 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -31,11 +31,12 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - + - - - + + + diff --git a/v3/visualize.html b/v3/visualize.html index 3f5f27863..6279ecb10 100644 --- a/v3/visualize.html +++ b/v3/visualize.html @@ -34,11 +34,12 @@ - + - - - + + + From ace8b32ffc9cfede38a1759eb27fac3004b1762b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 5 Oct 2012 11:40:25 -0700 Subject: [PATCH 458/502] started playing around with qTip2 for commentary bubbles --- v3/commentary-bubbles-demo.html | 7 +- v3/commentary-bubbles-demo.js | 26 +- v3/css/jquery.qtip.css | 573 ++++++++++++++++++++++++++++++++ v3/js/jquery.qtip.min.js | 2 + 4 files changed, 603 insertions(+), 5 deletions(-) create mode 100644 v3/css/jquery.qtip.css create mode 100644 v3/js/jquery.qtip.min.js diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html index 14ecc7583..c75a213c5 100644 --- a/v3/commentary-bubbles-demo.html +++ b/v3/commentary-bubbles-demo.html @@ -19,11 +19,12 @@ - + + + + diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 3d9f69712..e7a8daf21 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -4,10 +4,32 @@ var listSumTrace = {"code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "return"}]}; -/* $(document).ready(function() { + /* var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, {embeddedMode: false, editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); + */ + + $('#v1__heap_object_4').qtip({ + content: 'This is the final element of our linked list. Its car is 3 and cdr is None', + id: 'v1__heap_object_4', + position: { + my: 'bottom left', + at: 'top center', + adjust: {x: 0, y: 0}, + }, + show: { + ready: true, // show on document.ready instead of on mouseenter + //delay: 0, + event: null, + }, + hide: { + fixed: true, + event: null, + }, + style: { + classes: 'ui-tooltip-bootstrap', + }, + }); }); -*/ diff --git a/v3/css/jquery.qtip.css b/v3/css/jquery.qtip.css new file mode 100644 index 000000000..fb7fe24b6 --- /dev/null +++ b/v3/css/jquery.qtip.css @@ -0,0 +1,573 @@ +/*! qTip2 - Pretty powerful tooltips - v2.0.0 - 2012-09-10 +* http://craigsworks.com/projects/qtip2/ +* Copyright (c) 2012 Craig Michael Thompson; Licensed MIT, GPL */ + +/* Fluid class for determining actual width in IE */ +#qtip-rcontainer{ + position: absolute; + left: -28000px; + top: -28000px; + display: block; + visibility: hidden; +} + + /* Fluid class for determining actual width in IE */ + #qtip-rcontainer .ui-tooltip{ + display: block !important; + visibility: hidden !important; + position: static !important; + float: left !important; + } + +/* Core qTip styles */ +.ui-tooltip, .qtip{ + position: absolute; + left: -28000px; + top: -28000px; + display: none; + + max-width: 280px; + min-width: 50px; + + font-size: 10.5px; + line-height: 12px; +} + + .ui-tooltip-content{ + position: relative; + padding: 5px 9px; + overflow: hidden; + + text-align: left; + word-wrap: break-word; + } + + .ui-tooltip-titlebar{ + position: relative; + min-height: 14px; + padding: 5px 35px 5px 10px; + overflow: hidden; + + border-width: 0 0 1px; + font-weight: bold; + } + + .ui-tooltip-titlebar + .ui-tooltip-content{ border-top-width: 0 !important; } + + /* Default close button class */ + .ui-tooltip-titlebar .ui-state-default{ + position: absolute; + right: 4px; + top: 50%; + margin-top: -9px; + + cursor: pointer; + outline: medium none; + + border-width: 1px; + border-style: solid; + } + + * html .ui-tooltip-titlebar .ui-state-default{ top: 16px; } /* IE fix */ + + .ui-tooltip-titlebar .ui-icon, + .ui-tooltip-icon .ui-icon{ + display: block; + text-indent: -1000em; + direction: ltr; + } + + .ui-tooltip-icon, .ui-tooltip-icon .ui-icon{ + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + text-decoration: none; + } + + .ui-tooltip-icon .ui-icon{ + width: 18px; + height: 14px; + + text-align: center; + text-indent: 0; + font: normal bold 10px/13px Tahoma,sans-serif; + + color: inherit; + background: transparent none no-repeat -100em -100em; + } + + +/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */ +.ui-tooltip-focus{} + +/* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */ +.ui-tooltip-hover{} + +/* Default tooltip style */ +.ui-tooltip-default{ + border-width: 1px; + border-style: solid; + border-color: #F1D031; + + background-color: #FFFFA3; + color: #555; +} + + .ui-tooltip-default .ui-tooltip-titlebar{ + background-color: #FFEF93; + } + + .ui-tooltip-default .ui-tooltip-icon{ + border-color: #CCC; + background: #F1F1F1; + color: #777; + } + + .ui-tooltip-default .ui-tooltip-titlebar .ui-state-hover{ + border-color: #AAA; + color: #111; + } + + +/*! Light tooltip style */ +.ui-tooltip-light{ + background-color: white; + border-color: #E2E2E2; + color: #454545; +} + + .ui-tooltip-light .ui-tooltip-titlebar{ + background-color: #f1f1f1; + } + + +/*! Dark tooltip style */ +.ui-tooltip-dark{ + background-color: #505050; + border-color: #303030; + color: #f3f3f3; +} + + .ui-tooltip-dark .ui-tooltip-titlebar{ + background-color: #404040; + } + + .ui-tooltip-dark .ui-tooltip-icon{ + border-color: #444; + } + + .ui-tooltip-dark .ui-tooltip-titlebar .ui-state-hover{ + border-color: #303030; + } + + +/*! Cream tooltip style */ +.ui-tooltip-cream{ + background-color: #FBF7AA; + border-color: #F9E98E; + color: #A27D35; +} + + .ui-tooltip-cream .ui-tooltip-titlebar{ + background-color: #F0DE7D; + } + + .ui-tooltip-cream .ui-state-default .ui-tooltip-icon{ + background-position: -82px 0; + } + + +/*! Red tooltip style */ +.ui-tooltip-red{ + background-color: #F78B83; + border-color: #D95252; + color: #912323; +} + + .ui-tooltip-red .ui-tooltip-titlebar{ + background-color: #F06D65; + } + + .ui-tooltip-red .ui-state-default .ui-tooltip-icon{ + background-position: -102px 0; + } + + .ui-tooltip-red .ui-tooltip-icon{ + border-color: #D95252; + } + + .ui-tooltip-red .ui-tooltip-titlebar .ui-state-hover{ + border-color: #D95252; + } + + +/*! Green tooltip style */ +.ui-tooltip-green{ + background-color: #CAED9E; + border-color: #90D93F; + color: #3F6219; +} + + .ui-tooltip-green .ui-tooltip-titlebar{ + background-color: #B0DE78; + } + + .ui-tooltip-green .ui-state-default .ui-tooltip-icon{ + background-position: -42px 0; + } + + +/*! Blue tooltip style */ +.ui-tooltip-blue{ + background-color: #E5F6FE; + border-color: #ADD9ED; + color: #5E99BD; +} + + .ui-tooltip-blue .ui-tooltip-titlebar{ + background-color: #D0E9F5; + } + + .ui-tooltip-blue .ui-state-default .ui-tooltip-icon{ + background-position: -2px 0; + } + + +/* Add shadows to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ +.ui-tooltip-shadow{ + -webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); + box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); +} + +/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ +.ui-tooltip-rounded, +.ui-tooltip-tipsy, +.ui-tooltip-bootstrap{ + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +/* Youtube tooltip style */ +.ui-tooltip-youtube{ + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + + -webkit-box-shadow: 0 0 3px #333; + -moz-box-shadow: 0 0 3px #333; + box-shadow: 0 0 3px #333; + + color: white; + border-width: 0; + + background: #4A4A4A; + background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black)); + background-image: -webkit-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -moz-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -ms-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -o-linear-gradient(top,#4A4A4A 0,black 100%); +} + + .ui-tooltip-youtube .ui-tooltip-titlebar{ + background-color: #4A4A4A; + background-color: rgba(0,0,0,0); + } + + .ui-tooltip-youtube .ui-tooltip-content{ + padding: .75em; + font: 12px arial,sans-serif; + + filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000); + -ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"; + } + + .ui-tooltip-youtube .ui-tooltip-icon{ + border-color: #222; + } + + .ui-tooltip-youtube .ui-tooltip-titlebar .ui-state-hover{ + border-color: #303030; + } + + +/* jQuery TOOLS Tooltip style */ +.ui-tooltip-jtools{ + background: #232323; + background: rgba(0, 0, 0, 0.7); + background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323)); + background-image: -moz-linear-gradient(top, #717171, #232323); + background-image: -webkit-linear-gradient(top, #717171, #232323); + background-image: -ms-linear-gradient(top, #717171, #232323); + background-image: -o-linear-gradient(top, #717171, #232323); + + border: 2px solid #ddd; + border: 2px solid rgba(241,241,241,1); + + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + + -webkit-box-shadow: 0 0 12px #333; + -moz-box-shadow: 0 0 12px #333; + box-shadow: 0 0 12px #333; +} + + /* IE Specific */ + .ui-tooltip-jtools .ui-tooltip-titlebar{ + background-color: transparent; + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"; + } + .ui-tooltip-jtools .ui-tooltip-content{ + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"; + } + + .ui-tooltip-jtools .ui-tooltip-titlebar, + .ui-tooltip-jtools .ui-tooltip-content{ + background: transparent; + color: white; + border: 0 dashed transparent; + } + + .ui-tooltip-jtools .ui-tooltip-icon{ + border-color: #555; + } + + .ui-tooltip-jtools .ui-tooltip-titlebar .ui-state-hover{ + border-color: #333; + } + + +/* Cluetip style */ +.ui-tooltip-cluetip{ + -webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + + background-color: #D9D9C2; + color: #111; + border: 0 dashed transparent; +} + + .ui-tooltip-cluetip .ui-tooltip-titlebar{ + background-color: #87876A; + color: white; + border: 0 dashed transparent; + } + + .ui-tooltip-cluetip .ui-tooltip-icon{ + border-color: #808064; + } + + .ui-tooltip-cluetip .ui-tooltip-titlebar .ui-state-hover{ + border-color: #696952; + color: #696952; + } + + +/* Tipsy style */ +.ui-tooltip-tipsy{ + background: black; + background: rgba(0, 0, 0, .87); + + color: white; + border: 0 solid transparent; + + font-size: 11px; + font-family: 'Lucida Grande', sans-serif; + font-weight: bold; + line-height: 16px; + text-shadow: 0 1px black; +} + + .ui-tooltip-tipsy .ui-tooltip-titlebar{ + padding: 6px 35px 0 10; + background-color: transparent; + } + + .ui-tooltip-tipsy .ui-tooltip-content{ + padding: 6px 10; + } + + .ui-tooltip-tipsy .ui-tooltip-icon{ + border-color: #222; + text-shadow: none; + } + + .ui-tooltip-tipsy .ui-tooltip-titlebar .ui-state-hover{ + border-color: #303030; + } + + +/* Tipped style */ +.ui-tooltip-tipped{ + border: 3px solid #959FA9; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + background-color: #F9F9F9; + color: #454545; + + font-weight: normal; + font-family: serif; +} + + .ui-tooltip-tipped .ui-tooltip-titlebar{ + border-bottom-width: 0; + + color: white; + background: #3A79B8; + background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D)); + background-image: -webkit-linear-gradient(top, #3A79B8, #2E629D); + background-image: -moz-linear-gradient(top, #3A79B8, #2E629D); + background-image: -ms-linear-gradient(top, #3A79B8, #2E629D); + background-image: -o-linear-gradient(top, #3A79B8, #2E629D); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"; + } + + .ui-tooltip-tipped .ui-tooltip-icon{ + border: 2px solid #285589; + background: #285589; + } + + .ui-tooltip-tipped .ui-tooltip-icon .ui-icon{ + background-color: #FBFBFB; + color: #555; + } + + +/** + * Twitter Bootstrap style. + * + * Tested with IE 8, IE 9, Chrome 18, Firefox 9, Opera 11. + * Does not work with IE 7. + */ +.ui-tooltip-bootstrap{ + font-size: 13px; + line-height: 18px; + + color: #333333; + background-color: #ffffff; + + + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + + *border-right-width: 2px; + *border-bottom-width: 2px; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + + .ui-tooltip-bootstrap .ui-tooltip-titlebar{ + font-size: 18px; + line-height: 22px; + + border-bottom: 1px solid #ccc; + background-color: transparent; + } + + .ui-tooltip-bootstrap .ui-tooltip-titlebar .ui-state-default{ + right: 9px; top: 49%; + border-style: none; + } + + .ui-tooltip-bootstrap .ui-tooltip-icon{ + background: white; + } + + .ui-tooltip-bootstrap .ui-tooltip-icon .ui-icon{ + width: auto; + height: auto; + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); + } + + .ui-tooltip-bootstrap .ui-tooltip-icon .ui-icon:hover{ + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); + } + + +/* IE9 fix - removes all filters */ +.ui-tooltip:not(.ie9haxors) div.ui-tooltip-content, +.ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{ + filter: none; + -ms-filter: none; +} + + +/* Tips plugin */ +.ui-tooltip .ui-tooltip-tip{ + margin: 0 auto; + overflow: hidden; + z-index: 10; +} + + .ui-tooltip .ui-tooltip-tip, + .ui-tooltip .ui-tooltip-tip .qtip-vml{ + position: absolute; + + line-height: 0.1px !important; + font-size: 0.1px !important; + color: #123456; + + background: transparent; + border: 0 dashed transparent; + } + + .ui-tooltip .ui-tooltip-tip canvas{ top: 0; left: 0; } + + .ui-tooltip .ui-tooltip-tip .qtip-vml{ + behavior: url(#default#VML); + display: inline-block; + visibility: visible; + } +/* Modal plugin */ +#qtip-overlay{ + position: fixed; + left: -10000em; + top: -10000em; +} + + /* Applied to modals with show.modal.blur set to true */ + #qtip-overlay.blurs{ cursor: pointer; } + + /* Change opacity of overlay here */ + #qtip-overlay div{ + position: absolute; + left: 0; top: 0; + width: 100%; height: 100%; + + background-color: black; + + opacity: 0.7; + filter:alpha(opacity=70); + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + } + diff --git a/v3/js/jquery.qtip.min.js b/v3/js/jquery.qtip.min.js new file mode 100644 index 000000000..3971f6df5 --- /dev/null +++ b/v3/js/jquery.qtip.min.js @@ -0,0 +1,2 @@ +/*! qTip2 v2.0.0 | http://craigsworks.com/projects/qtip2/ | Licensed MIT, GPL */ +(function(a,b,c){(function(a){"use strict",typeof define=="function"&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)})(function(d){function I(a){var b=function(a){return a===g||"object"!=typeof a},c=function(a){return!d.isFunction(a)&&(!a&&!a.attr||a.length<1||"object"==typeof a&&!a.jquery)};if(!a||"object"!=typeof a)return f;b(a.metadata)&&(a.metadata={type:a.metadata});if("content"in a){if(b(a.content)||a.content.jquery)a.content={text:a.content};c(a.content.text||f)&&(a.content.text=f),"title"in a.content&&(b(a.content.title)&&(a.content.title={text:a.content.title}),c(a.content.title.text||f)&&(a.content.title.text=f))}return"position"in a&&b(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&b(a.show)&&(a.show=a.show.jquery?{target:a.show}:{event:a.show}),"hide"in a&&b(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&b(a.style)&&(a.style={classes:a.style}),d.each(u,function(){this.sanitize&&this.sanitize(a)}),a}function J(h,i,q,r){function Q(a){var b=0,c,d=i,e=a.split(".");while(d=d[e[b++]])b",{"class":"ui-state-default ui-tooltip-close "+(i.style.widget?"":x+"-icon"),title:c,"aria-label":c}).prepend(d("",{"class":"ui-icon ui-icon-close",html:"×"})),O.button.appendTo(O.titlebar).attr("role","button").click(function(a){return M.hasClass(z)||s.hide(a),f}),s.redraw()}function V(){var a=J+"-title";O.titlebar&&T(),O.titlebar=d("
    ",{"class":x+"-titlebar "+(i.style.widget?"ui-widget-header":"")}).append(O.title=d("
    ",{id:a,"class":x+"-title","aria-atomic":e})).insertBefore(O.content).delegate(".ui-tooltip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus",a.type.substr(-4)==="down")}).delegate(".ui-tooltip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover",a.type==="mouseover")}),i.content.title.button?U():s.rendered&&s.redraw()}function W(a){var b=O.button,c=O.title;if(!s.rendered)return f;a?(c||V(),U()):b.remove()}function X(a,b){var c=O.title;if(!s.rendered||!a)return f;d.isFunction(a)&&(a=a.call(h,P.event,s));if(a===f||!a&&a!=="")return T(f);a.jquery&&a.length>0?c.empty().append(a.css({display:"block"})):c.html(a),s.redraw(),b!==f&&s.rendered&&M[0].offsetWidth>0&&s.reposition(P.event)}function Y(a,b){function g(a){function i(c){c&&(delete h[c.src],clearTimeout(s.timers.img[c.src]),d(c).unbind(N)),d.isEmptyObject(h)&&(s.redraw(),b!==f&&s.reposition(P.event),a())}var g,h={};if((g=e.find("img[src]:not([height]):not([width])")).length===0)return i();g.each(function(a,b){if(h[b.src]!==c)return;var e=0,f=3;(function g(){if(b.height||b.width||e>f)return i(b);e+=1,s.timers.img[b.src]=setTimeout(g,700)})(),d(b).bind("error"+N+" load"+N,function(){i(this)}),h[b.src]=b})}var e=O.content;return!s.rendered||!a?f:(d.isFunction(a)&&(a=a.call(h,P.event,s)||""),a.jquery&&a.length>0?e.empty().append(a.css({display:"block"})):e.html(a),s.rendered<0?M.queue("fx",g):(L=0,g(d.noop)),s)}function Z(){function l(a){if(M.hasClass(z))return f;clearTimeout(s.timers.show),clearTimeout(s.timers.hide);var b=function(){s.toggle(e,a)};i.show.delay>0?s.timers.show=setTimeout(b,i.show.delay):b()}function m(a){if(M.hasClass(z)||K||L)return f;var b=d(a.relatedTarget||a.target),e=b.closest(A)[0]===M[0],h=b[0]===g.show[0];clearTimeout(s.timers.show),clearTimeout(s.timers.hide);if(c.target==="mouse"&&e||i.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(e||h)){try{a.preventDefault(),a.stopImmediatePropagation()}catch(j){}return}i.hide.delay>0?s.timers.hide=setTimeout(function(){s.hide(a)},i.hide.delay):s.hide(a)}function n(a){if(M.hasClass(z))return f;clearTimeout(s.timers.inactive),s.timers.inactive=setTimeout(function(){s.hide(a)},i.hide.inactive)}function o(a){s.rendered&&M[0].offsetWidth>0&&s.reposition(a)}var c=i.position,g={show:i.show.target,hide:i.hide.target,viewport:d(c.viewport),document:d(b),body:d(b.body),window:d(a)},j={show:d.trim(""+i.show.event).split(" "),hide:d.trim(""+i.hide.event).split(" ")},k=d.browser.msie&&parseInt(d.browser.version,10)===6;M.bind("mouseenter"+N+" mouseleave"+N,function(a){var b=a.type==="mouseenter";b&&s.focus(a),M.toggleClass(D,b)}),/mouse(out|leave)/i.test(i.hide.event)&&i.hide.leave==="window"&&g.window.bind("mouseout"+N+" blur"+N,function(a){!/select|option/.test(a.target.nodeName)&&!a.relatedTarget&&s.hide(a)}),i.hide.fixed?(g.hide=g.hide.add(M),M.bind("mouseover"+N,function(){M.hasClass(z)||clearTimeout(s.timers.hide)})):/mouse(over|enter)/i.test(i.show.event)&&g.hide.bind("mouseleave"+N,function(a){clearTimeout(s.timers.show)}),(""+i.hide.event).indexOf("unfocus")>-1&&c.container.closest("html").bind("mousedown"+N,function(a){var b=d(a.target),c=s.rendered&&!M.hasClass(z)&&M[0].offsetWidth>0,e=b.parents(A).filter(M[0]).length>0;b[0]!==h[0]&&b[0]!==M[0]&&!e&&!h.has(b[0]).length&&!b.attr("disabled")&&s.hide(a)}),"number"==typeof i.hide.inactive&&(g.show.bind("qtip-"+q+"-inactive",n),d.each(t.inactiveEvents,function(a,b){g.hide.add(O.tooltip).bind(b+N+"-inactive",n)})),d.each(j.hide,function(a,b){var c=d.inArray(b,j.show),e=d(g.hide);c>-1&&e.add(g.show).length===e.length||b==="unfocus"?(g.show.bind(b+N,function(a){M[0].offsetWidth>0?m(a):l(a)}),delete j.show[c]):g.hide.bind(b+N,m)}),d.each(j.show,function(a,b){g.show.bind(b+N,l)}),"number"==typeof i.hide.distance&&g.show.add(M).bind("mousemove"+N,function(a){var b=P.origin||{},c=i.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&s.hide(a)}),c.target==="mouse"&&(g.show.bind("mousemove"+N,function(a){v={pageX:a.pageX,pageY:a.pageY,type:"mousemove"}}),c.adjust.mouse&&(i.hide.event&&(M.bind("mouseleave"+N,function(a){(a.relatedTarget||a.target)!==g.show[0]&&s.hide(a)}),O.target.bind("mouseenter"+N+" mouseleave"+N,function(a){P.onTarget=a.type==="mouseenter"})),g.document.bind("mousemove"+N,function(a){s.rendered&&P.onTarget&&!M.hasClass(z)&&M[0].offsetWidth>0&&s.reposition(a||v)}))),(c.adjust.resize||g.viewport.length)&&(d.event.special.resize?g.viewport:g.window).bind("resize"+N,o),(g.viewport.length||k&&M.css("position")==="fixed")&&g.viewport.bind("scroll"+N,o)}function _(){var c=[i.show.target[0],i.hide.target[0],s.rendered&&O.tooltip[0],i.position.container[0],i.position.viewport[0],i.position.container.closest("html")[0],a,b];s.rendered?d([]).pushStack(d.grep(c,function(a){return typeof a=="object"})).unbind(N):i.show.target.unbind(N+"-create")}var s=this,E=b.body,J=x+"-"+q,K=0,L=0,M=d(),N=".qtip-"+q,O,P;s.id=q,s.rendered=f,s.destroyed=f,s.elements=O={target:h},s.timers={img:{}},s.options=i,s.checks={},s.plugins={},s.cache=P={event:{},target:d(),disabled:f,attr:r,onTarget:f,lastClass:""},s.checks.builtin={"^id$":function(a,b,c){var g=c===e?t.nextid:c,h=x+"-"+g;g!==f&&g.length>0&&!d("#"+h).length&&(M[0].id=h,O.content[0].id=h+"-content",O.title[0].id=h+"-title")},"^content.text$":function(a,b,c){Y(c)},"^content.title.text$":function(a,b,c){if(!c)return T();!O.title&&c&&V(),X(c)},"^content.title.button$":function(a,b,c){W(c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new u.Corner(c))},"^position.container$":function(a,b,c){s.rendered&&M.appendTo(c)},"^show.ready$":function(){s.rendered?s.toggle(e):s.render(1)},"^style.classes$":function(a,b,c){M.attr("class",x+" qtip "+c)},"^style.widget|content.title":S,"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){M[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){var a=i.position;M.attr("tracking",a.target==="mouse"&&a.adjust.mouse),_(),Z()}},d.extend(s,{render:function(a){if(s.rendered)return s;var b=i.content.text,c=i.content.title.text,g=i.position;return d.attr(h[0],"aria-describedby",J),M=O.tooltip=d("
    ",{id:J,"class":x+" qtip "+B+" "+i.style.classes+" "+x+"-pos-"+i.position.my.abbrev(),width:i.style.width||"",height:i.style.height||"",tracking:g.target==="mouse"&&g.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":f,"aria-describedby":J+"-content","aria-hidden":e}).toggleClass(z,P.disabled).data("qtip",s).appendTo(i.position.container).append(O.content=d("
    ",{"class":x+"-content",id:J+"-content","aria-atomic":e})),s.rendered=-1,L=1,K=1,c&&(V(),d.isFunction(c)||X(c,f)),d.isFunction(b)||Y(b,f),s.rendered=e,S(),d.each(i.events,function(a,b){d.isFunction(b)&&M.bind(a==="toggle"?"tooltipshow tooltiphide":"tooltip"+a,b)}),d.each(u,function(){this.initialize==="render"&&this(s)}),Z(),M.queue("fx",function(b){R("render"),L=0,K=0,s.redraw(),(i.show.ready||a)&&s.toggle(e,P.event,f),b()}),s},get:function(a){var b,c;switch(a.toLowerCase()){case"dimensions":b={height:M.outerHeight(),width:M.outerWidth()};break;case"offset":b=u.offset(M,i.position.container);break;default:c=Q(a.toLowerCase()),b=c[0][c[1]],b=b.precedance?b.string():b}return b},set:function(a,b){function n(a,b){var c,d,e;for(c in l)for(d in l[c])if(e=(new RegExp(d,"i")).exec(a))b.push(e),l[c][d].apply(s,b)}var c=/^position\.(my|at|adjust|target|container)|style|content|show\.ready/i,h=/^content\.(title|attr)|style/i,j=f,k=f,l=s.checks,m;return"string"==typeof a?(m=a,a={},a[m]=b):a=d.extend(e,{},a),d.each(a,function(b,e){var f=Q(b.toLowerCase()),g;g=f[0][f[1]],f[0][f[1]]="object"==typeof e&&e.nodeType?d(e):e,a[b]=[f[0],f[1],e,g],j=c.test(b)||j,k=h.test(b)||k}),I(i),K=L=1,d.each(a,n),K=L=0,s.rendered&&M[0].offsetWidth>0&&(j&&s.reposition(i.position.target==="mouse"?g:P.event),k&&s.redraw()),s},toggle:function(a,c){function t(){a?(d.browser.msie&&M[0].style.removeAttribute("filter"),M.css("overflow",""),"string"==typeof h.autofocus&&d(h.autofocus,M).focus(),h.target.trigger("qtip-"+q+"-inactive")):M.css({display:"",visibility:"",opacity:"",left:"",top:""}),R(a?"visible":"hidden")}if(!s.rendered)return a?s.render(1):s;var g=a?"show":"hide",h=i[g],j=i[a?"hide":"show"],k=i.position,l=i.content,m=M[0].offsetWidth>0,n=a||h.target.length===1,o=!c||h.target.length<2||P.target[0]===c.target,p,r;(typeof a).search("boolean|number")&&(a=!m);if(!M.is(":animated")&&m===a&&o)return s;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(P.event.type)&&i.show.target.add(c.target).length===i.show.target.length&&M.has(c.relatedTarget).length)return s;P.event=d.extend({},c)}return R(g,[90])?(d.attr(M[0],"aria-hidden",!a),a?(P.origin=d.extend({},v),s.focus(c),d.isFunction(l.text)&&Y(l.text,f),d.isFunction(l.title.text)&&X(l.title.text,f),!G&&k.target==="mouse"&&k.adjust.mouse&&(d(b).bind("mousemove.qtip",function(a){v={pageX:a.pageX,pageY:a.pageY,type:"mousemove"}}),G=e),s.reposition(c,arguments[2]),!h.solo||d(A,h.solo).not(M).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(s.timers.show),delete P.origin,G&&!d(A+'[tracking="true"]:visible',h.solo).not(M).length&&(d(b).unbind("mousemove.qtip"),G=f),s.blur(c)),h.effect===f||n===f?(M[g](),t.call(M)):d.isFunction(h.effect)?(M.stop(1,1),h.effect.call(M,s),M.queue("fx",function(a){t(),a()})):M.fadeTo(90,a?1:0,t),a&&h.target.trigger("qtip-"+q+"-inactive"),s):s},show:function(a){return s.toggle(e,a)},hide:function(a){return s.toggle(f,a)},focus:function(a){if(!s.rendered)return s;var b=d(A),c=parseInt(M[0].style.zIndex,10),e=t.zindex+b.length,f=d.extend({},a),g;return M.hasClass(C)||R("focus",[e],f)&&(c!==e&&(b.each(function(){this.style.zIndex>c&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+C).qtip("blur",f)),M.addClass(C)[0].style.zIndex=e),s},blur:function(a){return M.removeClass(C),R("blur",[M.css("zIndex")],a),s},reposition:function(c,e){if(!s.rendered||K)return s;K=1;var g=i.position.target,h=i.position,j=h.my,k=h.at,q=h.adjust,r=q.method.split(" "),t=M.outerWidth(),w=M.outerHeight(),x=0,y=0,z=M.css("position")==="fixed",A=h.viewport,B={left:0,top:0},C=h.container,D=M[0].offsetWidth>0,E,F,G;if(d.isArray(g)&&g.length===2)k={x:m,y:l},B={left:g[0],top:g[1]};else if(g==="mouse"&&(c&&c.pageX||P.event.pageX))k={x:m,y:l},c=(c&&(c.type==="resize"||c.type==="scroll")?P.event:c&&c.pageX&&c.type==="mousemove"?c:v&&v.pageX&&(q.mouse||!c||!c.pageX)?{pageX:v.pageX,pageY:v.pageY}:!q.mouse&&P.origin&&P.origin.pageX&&i.show.distance?P.origin:c)||c||P.event||v||{},B={top:c.pageY,left:c.pageX};else{g==="event"&&c&&c.target&&c.type!=="scroll"&&c.type!=="resize"?P.target=d(c.target):g!=="event"&&(P.target=d(g.jquery?g:O.target)),g=P.target,g=d(g).eq(0);if(g.length===0)return s;g[0]===b||g[0]===a?(x=u.iOS?a.innerWidth:g.width(),y=u.iOS?a.innerHeight:g.height(),g[0]===a&&(B={top:(A||g).scrollTop(),left:(A||g).scrollLeft()})):u.imagemap&&g.is("area")?E=u.imagemap(s,g,k,u.viewport?r:f):u.svg&&typeof g[0].xmlbase=="string"?E=u.svg(s,g,k,u.viewport?r:f):(x=g.outerWidth(),y=g.outerHeight(),B=u.offset(g,C)),E&&(x=E.width,y=E.height,F=E.offset,B=E.position);if(u.iOS>3.1&&u.iOS<4.1||u.iOS>=4.3&&u.iOS<4.33||!u.iOS&&z)G=d(a),B.left-=G.scrollLeft(),B.top-=G.scrollTop();B.left+=k.x===o?x:k.x===p?x/2:0,B.top+=k.y===n?y:k.y===p?y/2:0}return B.left+=q.x+(j.x===o?-t:j.x===p?-t/2:0),B.top+=q.y+(j.y===n?-w:j.y===p?-w/2:0),u.viewport?(B.adjusted=u.viewport(s,B,h,x,y,t,w),F&&B.adjusted.left&&(B.left+=F.left),F&&B.adjusted.top&&(B.top+=F.top)):B.adjusted={left:0,top:0},R("move",[B,A.elem||A],c)?(delete B.adjusted,e===f||!D||isNaN(B.left)||isNaN(B.top)||g==="mouse"||!d.isFunction(h.effect)?M.css(B):d.isFunction(h.effect)&&(h.effect.call(M,s,d.extend({},B)),M.queue(function(a){d(this).css({opacity:"",height:""}),d.browser.msie&&this.style.removeAttribute("filter"),a()})),K=0,s):s},redraw:function(){if(s.rendered<1||L)return s;var a=i.style,b=i.position.container,c,d,e,f;return L=1,R("redraw"),a.height&&M.css(k,a.height),a.width?M.css(j,a.width):(M.css(j,"").appendTo(H),d=M.width(),d%2<1&&(d+=1),e=M.css("max-width")||"",f=M.css("min-width")||"",c=(e+f).indexOf("%")>-1?b.width()/100:0,e=(e.indexOf("%")>-1?c:1)*parseInt(e,10)||d,f=(f.indexOf("%")>-1?c:1)*parseInt(f,10)||0,d=e+f?Math.min(Math.max(d,f),e):d,M.css(j,Math.round(d)).appendTo(b)),R("redrawn"),L=0,s},disable:function(a){return"boolean"!=typeof a&&(a=!M.hasClass(z)&&!P.disabled),s.rendered?(M.toggleClass(z,a),d.attr(M[0],"aria-disabled",a)):P.disabled=!!a,s},enable:function(){return s.disable(f)},destroy:function(){var a=h[0],b=d.attr(a,F),c=h.data("qtip");s.destroyed=e,s.rendered&&(M.stop(1,0).remove(),d.each(s.plugins,function(){this.destroy&&this.destroy()})),clearTimeout(s.timers.show),clearTimeout(s.timers.hide),_();if(!c||s===c)d.removeData(a,"qtip"),i.suppress&&b&&(d.attr(a,"title",b),h.removeAttr(F)),h.removeAttr("aria-describedby");return h.unbind(".qtip-"+q),delete w[s.id],h}})}function K(a,c){var h,i,j,k,l,m=d(this),n=d(b.body),o=this===b?n:m,p=m.metadata?m.metadata(c.metadata):g,q=c.metadata.type==="html5"&&p?p[c.metadata.name]:g,r=m.data(c.metadata.name||"qtipopts");try{r=typeof r=="string"?d.parseJSON(r):r}catch(s){}k=d.extend(e,{},t.defaults,c,typeof r=="object"?I(r):g,I(q||p)),i=k.position,k.id=a;if("boolean"==typeof k.content.text){j=m.attr(k.content.attr);if(k.content.attr!==f&&j)k.content.text=j;else return f}i.container.length||(i.container=n),i.target===f&&(i.target=o),k.show.target===f&&(k.show.target=o),k.show.solo===e&&(k.show.solo=i.container.closest("body")),k.hide.target===f&&(k.hide.target=o),k.position.viewport===e&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new u.Corner(i.at),i.my=new u.Corner(i.my);if(d.data(this,"qtip"))if(k.overwrite)m.qtip("destroy");else if(k.overwrite===f)return f;return k.suppress&&(l=d.attr(this,"title"))&&d(this).removeAttr("title").attr(F,l).attr("title",""),h=new J(m,k,a,!!j),d.data(this,"qtip",h),m.bind("remove.qtip-"+a+" removeqtip.qtip-"+a,function(){h.destroy()}),h}function L(a){var b=this,c=a.elements.tooltip,g=a.options.content.ajax,h=t.defaults.content.ajax,i=".qtip-ajax",j=/)<[^<]*)*<\/script>/gi,k=e,l=f,m;a.checks.ajax={"^content.ajax":function(a,d,e){d==="ajax"&&(g=e),d==="once"?b.init():g&&g.url?b.load():c.unbind(i)}},d.extend(b,{init:function(){return g&&g.url&&c.unbind(i)[g.once?"one":"bind"]("tooltipshow"+i,b.load),b},load:function(c){function r(){var b;if(a.destroyed)return;k=f,p&&(l=e,a.show(c.originalEvent)),(b=h.complete||g.complete)&&d.isFunction(b)&&b.apply(g.context||a,arguments)}function s(b,c,e){var f;if(a.destroyed)return;o&&"string"==typeof b&&(b=d("
    ").append(b.replace(j,"")).find(o)),(f=h.success||g.success)&&d.isFunction(f)?f.call(g.context||a,b,c,e):a.set("content.text",b)}function t(b,c,d){if(a.destroyed||b.status===0)return;a.set("content.text",c+": "+d)}if(l){l=f;return}var i=g.url.lastIndexOf(" "),n=g.url,o,p=!g.loading&&k;if(p)try{c.preventDefault()}catch(q){}else if(c&&c.isDefaultPrevented())return b;m&&m.abort&&m.abort(),i>-1&&(o=n.substr(i),n=n.substr(0,i)),m=d.ajax(d.extend({error:h.error||t,context:a},g,{url:n,success:s,complete:r}))},destroy:function(){m&&m.abort&&m.abort(),a.destroyed=e}}),b.init()}function M(a,b,c){var d=Math.ceil(b/2),e=Math.ceil(c/2),f={bottomright:[[0,0],[b,c],[b,0]],bottomleft:[[0,0],[b,0],[0,c]],topright:[[0,c],[b,0],[b,c]],topleft:[[0,0],[0,c],[b,c]],topcenter:[[0,c],[d,0],[b,c]],bottomcenter:[[0,0],[b,0],[d,c]],rightcenter:[[0,0],[b,e],[0,c]],leftcenter:[[b,0],[b,c],[0,e]]};return f.lefttop=f.bottomright,f.righttop=f.bottomleft,f.leftbottom=f.topright,f.rightbottom=f.topleft,f[a.string()]}function N(a,b){function D(a){var b=v.is(":visible");v.show(),a(),v.toggle(b)}function E(){x.width=r.height,x.height=r.width}function F(){x.width=r.width,x.height=r.height}function G(b,d,g,j){if(!t.tip)return;var k=q.corner.clone(),u=g.adjusted,v=a.options.position.adjust.method.split(" "),x=v[0],y=v[1]||v[0],z={left:f,top:f,x:0,y:0},A,B={},C;q.corner.fixed!==e&&(x===s&&k.precedance===h&&u.left&&k.y!==p?k.precedance=k.precedance===h?i:h:x!==s&&u.left&&(k.x=k.x===p?u.left>0?m:o:k.x===m?o:m),y===s&&k.precedance===i&&u.top&&k.x!==p?k.precedance=k.precedance===i?h:i:y!==s&&u.top&&(k.y=k.y===p?u.top>0?l:n:k.y===l?n:l),k.string()!==w.corner.string()&&(w.top!==u.top||w.left!==u.left)&&q.update(k,f)),A=q.position(k,u),A[k.x]+=I(k,k.x),A[k.y]+=I(k,k.y),A.right!==c&&(A.left=-A.right),A.bottom!==c&&(A.top=-A.bottom),A.user=Math.max(0,r.offset);if(z.left=x===s&&!!u.left)k.x===p?B["margin-left"]=z.x=A["margin-left"]-u.left:(C=A.right!==c?[u.left,-A.left]:[-u.left,A.left],(z.x=Math.max(C[0],C[1]))>C[0]&&(g.left-=u.left,z.left=f),B[A.right!==c?o:m]=z.x);if(z.top=y===s&&!!u.top)k.y===p?B["margin-top"]=z.y=A["margin-top"]-u.top:(C=A.bottom!==c?[u.top,-A.top]:[-u.top,A.top],(z.y=Math.max(C[0],C[1]))>C[0]&&(g.top-=u.top,z.top=f),B[A.bottom!==c?n:l]=z.y);t.tip.css(B).toggle(!(z.x&&z.y||k.x===p&&z.y||k.y===p&&z.x)),g.left-=A.left.charAt?A.user:x!==s||z.top||!z.left&&!z.top?A.left:0,g.top-=A.top.charAt?A.user:y!==s||z.left||!z.left&&!z.top?A.top:0,w.left=u.left,w.top=u.top,w.corner=k.clone()}function H(){var b=r.corner,c=a.options.position,d=c.at,g=c.my.string?c.my.string():c.my;return b===f||g===f&&d===f?f:(b===e?q.corner=new u.Corner(g):b.string||(q.corner=new u.Corner(b),q.corner.fixed=e),w.corner=new u.Corner(q.corner.string()),q.corner.string()!=="centercenter")}function I(a,b,c){b=b?b:a[a.precedance];var d=t.titlebar&&a.y===l,e=d?t.titlebar:v,f="border-"+b+"-width",g=function(a){return parseInt(a.css(f),10)},h;return D(function(){h=(c?g(c):g(t.content)||g(e)||g(v))||0}),h}function J(a){var b=t.titlebar&&a.y===l,c=b?t.titlebar:t.content,e=d.browser.mozilla,f=e?"-moz-":d.browser.webkit?"-webkit-":"",g="border-radius-"+a.y+a.x,h="border-"+a.y+"-"+a.x+"-radius",i=function(a){return parseInt(c.css(a),10)||parseInt(v.css(a),10)},j;return D(function(){j=i(h)||i(f+h)||i(f+g)||i(g)||0}),j}function K(a){function z(a,b,c){var d=a.css(b)||n;return c&&d===a.css(c)?f:j.test(d)?f:d}var b,c,g,h=t.tip.css("cssText",""),i=a||q.corner,j=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,k="border-"+i[i.precedance]+"-color",m="background-color",n="transparent",o=" !important",s=t.titlebar,u=s&&(i.y===l||i.y===p&&h.position().top+x.height/2+r.offset-1,f=c*(e?.5:1),g=Math.pow,h=Math.round,l,m,n,o=Math.sqrt(g(f,2)+g(d,2)),q=[z/f*o,z/d*o];return q[2]=Math.sqrt(g(q[0],2)-g(z,2)),q[3]=Math.sqrt(g(q[1],2)-g(z,2)),l=o+q[2]+q[3]+(e?0:q[0]),m=l/o,n=[h(m*d),h(m*c)],{height:n[b?0:1],width:n[b?1:0]}}function N(a,b,c){return"'}var q=this,r=a.options.style.tip,t=a.elements,v=t.tooltip,w={top:0,left:0},x={width:r.width,height:r.height},y={},z=r.border||0,A=".qtip-tip",B=!!(d("")[0]||{}).getContext,C;q.corner=g,q.mimic=g,q.border=z,q.offset=r.offset,q.size=x,a.checks.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){q.init()||q.destroy(),a.reposition()},"^style.tip.(height|width)$":function(){x={width:r.width,height:r.height},q.create(),q.update(),a.reposition()},"^content.title.text|style.(classes|widget)$":function(){t.tip&&t.tip.length&&q.update()}},d.extend(q,{init:function(){var a=H()&&(B||d.browser.msie);return a&&(q.create(),q.update(),v.unbind(A).bind("tooltipmove"+A,G),B||v.bind("tooltipredraw tooltipredrawn",function(a){a.type==="tooltipredraw"?(C=t.tip.html(),t.tip.html("")):t.tip.html(C)})),a},create:function(){var a=x.width,b=x.height,c;t.tip&&t.tip.remove(),t.tip=d("
    ",{"class":"ui-tooltip-tip"}).css({width:a,height:b}).prependTo(v),B?d("").appendTo(t.tip)[0].getContext("2d").save():(c=N("shape",'coordorigin="0,0"',"position:absolute;"),t.tip.html(c+c),d("*",t.tip).bind("click mousedown",function(a){a.stopPropagation()}))},update:function(a,b){var c=t.tip,j=c.children(),k=x.width,s=x.height,A=r.mimic,C=Math.round,D,G,H,J,O;a||(a=w.corner||q.corner),A===f?A=a:(A=new u.Corner(A),A.precedance=a.precedance,A.x==="inherit"?A.x=a.x:A.y==="inherit"?A.y=a.y:A.x===A.y&&(A[a.precedance]=a[a.precedance])),D=A.precedance,a.precedance===h?E():F(),t.tip.css({width:k=x.width,height:s=x.height}),K(a),y.border!=="transparent"?(z=I(a,g),r.border===0&&z>0&&(y.fill=y.border),q.border=z=r.border!==e?r.border:z):q.border=z=0,H=M(A,k,s),q.size=O=L(a),c.css(O),a.precedance===i?J=[C(A.x===m?z:A.x===o?O.width-k-z:(O.width-k)/2),C(A.y===l?O.height-s:0)]:J=[C(A.x===m?O.width-k:0),C(A.y===l?z:A.y===n?O.height-s-z:(O.height-s)/2)],B?(j.attr(O),G=j[0].getContext("2d"),G.restore(),G.save(),G.clearRect(0,0,3e3,3e3),G.fillStyle=y.fill,G.strokeStyle=y.border,G.lineWidth=z*2,G.lineJoin="miter",G.miterLimit=100,G.translate(J[0],J[1]),G.beginPath(),G.moveTo(H[0][0],H[0][1]),G.lineTo(H[1][0],H[1][1]),G.lineTo(H[2][0],H[2][1]),G.closePath(),z&&(v.css("background-clip")==="border-box"&&(G.strokeStyle=y.fill,G.stroke()),G.strokeStyle=y.border,G.stroke()),G.fill()):(H="m"+H[0][0]+","+H[0][1]+" l"+H[1][0]+","+H[1][1]+" "+H[2][0]+","+H[2][1]+" xe",J[2]=z&&/^(r|b)/i.test(a.string())?parseFloat(d.browser.version,10)===8?2:1:0,j.css({coordsize:k+z+" "+(s+z),antialias:""+(A.string().indexOf(p)>-1),left:J[0],top:J[1],width:k+z,height:s+z}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k+z+" "+(s+z),path:H,fillcolor:y.fill,filled:!!a,stroked:!a}).toggle(!!z||!!a),!a&&b.html()===""&&b.html(N("stroke",'weight="'+z*2+'px" color="'+y.border+'" miterlimit="1000" joinstyle="miter"'))})),b!==f&&q.position(a)},position:function(a){var b=t.tip,c={},e=Math.max(0,r.offset),g,n,o;return r.corner===f||!b?f:(a=a||q.corner,g=a.precedance,n=L(a),o=[a.x,a.y],g===h&&o.reverse(),d.each(o,function(b,d){var f,h,o;d===p?(f=g===i?m:l,c[f]="50%",c["margin-"+f]=-Math.round(n[g===i?j:k]/2)+e):(f=I(a,d),h=I(a,d,t.content),o=J(a),c[d]=b?h:e+(o>f?o:-f))}),c[a[g]]-=n[g===h?j:k],b.css({top:"",bottom:"",left:"",right:"",margin:""}).css(c),c)},destroy:function(){t.tip&&t.tip.remove(),t.tip=!1,v.unbind(A)}}),q.init()}function O(c){function s(){q=d(p,j).not("[disabled]").map(function(){return typeof this.focus=="function"?this:null})}function t(a){q.length<1&&a.length?a.not("body").blur():q.first().focus()}function v(a){var b=d(a.target),c=b.closest(".qtip"),e;e=c.length<1?f:parseInt(c[0].style.zIndex,10)>parseInt(j[0].style.zIndex,10),!e&&d(a.target).closest(A)[0]!==j[0]&&t(b)}var g=this,h=c.options.show.modal,i=c.elements,j=i.tooltip,k="#qtip-overlay",l=".qtipmodal",m=l+c.id,n="is-modal-qtip",o=d(b.body),p=u.modal.focusable.join(","),q={},r;c.checks.modal={"^show.modal.(on|blur)$":function(){g.init(),i.overlay.toggle(j.is(":visible"))},"^content.text$":function(){s()}},d.extend(g,{init:function(){return h.on?(r=g.create(),j.attr(n,e).css("z-index",u.modal.zindex+d(A+"["+n+"]").length).unbind(l).unbind(m).bind("tooltipshow"+l+" tooltiphide"+l,function(a,b,c){var e=a.originalEvent;if(a.target===j[0])if(e&&a.type==="tooltiphide"&&/mouse(leave|enter)/.test(e.type)&&d(e.relatedTarget).closest(r[0]).length)try{a.preventDefault()}catch(f){}else(!e||e&&!e.solo)&&g[a.type.replace("tooltip","")](a,c)}).bind("tooltipfocus"+l,function(a){if(a.isDefaultPrevented()||a.target!==j[0])return;var b=d(A).filter("["+n+"]"),c=u.modal.zindex+b.length,e=parseInt(j[0].style.zIndex,10);r[0].style.zIndex=c-2,b.each(function(){this.style.zIndex>e&&(this.style.zIndex-=1)}),b.end().filter("."+C).qtip("blur",a.originalEvent),j.addClass(C)[0].style.zIndex=c;try{a.preventDefault()}catch(f){}}).bind("tooltiphide"+l,function(a){a.target===j[0]&&d("["+n+"]").filter(":visible").not(j).last().qtip("focus",a)}),h.escape&&d(b).unbind(m).bind("keydown"+m,function(a){a.keyCode===27&&j.hasClass(C)&&c.hide(a)}),h.blur&&i.overlay.unbind(m).bind("click"+m,function(a){j.hasClass(C)&&c.hide(a)}),s(),g):g},create:function(){function c(){r.css({height:d(a).height(),width:d(a).width()})}var b=d(k);return b.length?i.overlay=b.insertAfter(d(A).last()):(r=i.overlay=d("
    ",{id:k.substr(1),html:"
    ",mousedown:function(){return f}}).hide().insertAfter(d(A).last()),d(a).unbind(l).bind("resize"+l,c),c(),r)},toggle:function(a,b,c){if(a&&a.isDefaultPrevented())return g;var i=h.effect,k=b?"show":"hide",l=r.is(":visible"),p=d("["+n+"]").filter(":visible").not(j),q;return r||(r=g.create()),r.is(":animated")&&l===b||!b&&p.length?g:(b?(r.css({left:0,top:0}),r.toggleClass("blurs",h.blur),h.stealfocus!==f&&(o.bind("focusin"+m,v),t(d("body :focus")))):o.unbind("focusin"+m),r.stop(e,f),d.isFunction(i)?i.call(r,b):i===f?r[k]():r.fadeTo(parseInt(c,10)||90,b?1:0,function(){b||d(this).hide()}),b||r.queue(function(a){r.css({left:"",top:""}),a()}),g)},show:function(a,b){return g.toggle(a,e,b)},hide:function(a,b){return g.toggle(a,f,b)},destroy:function(){var a=r;return a&&(a=d("["+n+"]").not(j).length<1,a?(i.overlay.remove(),d(b).unbind(l)):i.overlay.unbind(l+c.id),o.undelegate("*","focusin"+m)),j.removeAttr(n).unbind(l)}}),g.init()}function P(a){var b=this,c=a.elements,e=c.tooltip,f=".bgiframe-"+a.id;d.extend(b,{init:function(){c.bgiframe=d(''),c.bgiframe.appendTo(e),e.bind("tooltipmove"+f,b.adjust)},adjust:function(){var b=a.get("dimensions"),d=a.plugins.tip,f=c.tip,g,h;h=parseInt(e.css("border-left-width"),10)||0,h={left:-h,top:-h},d&&f&&(g=d.corner.precedance==="x"?["width","left"]:["height","top"],h[g[1]]-=f[g[0]]()),c.bgiframe.css(h).css(b)},destroy:function(){c.bgiframe.remove(),e.unbind(f)}}),b.init()}var e=!0,f=!1,g=null,h="x",i="y",j="width",k="height",l="top",m="left",n="bottom",o="right",p="center",q="flip",r="flipinvert",s="shift",t,u,v,w={},x="ui-tooltip",y="ui-widget",z="ui-state-disabled",A="div.qtip."+x,B=x+"-default",C=x+"-focus",D=x+"-hover",E="_replacedByqTip",F="oldtitle",G,H;H=d("
    ",{id:"qtip-rcontainer"}),d(function(){H.appendTo(b.body)}),t=d.fn.qtip=function(a,b,h){var i=(""+a).toLowerCase(),j=g,k=d.makeArray(arguments).slice(1),l=k[k.length-1],m=this[0]?d.data(this[0],"qtip"):g;if(!arguments.length&&m||i==="api")return m;if("string"==typeof a)return this.each(function(){var a=d.data(this,"qtip");if(!a)return e;l&&l.timeStamp&&(a.cache.event=l);if(i!=="option"&&i!=="options"||!b)a[i]&&a[i].apply(a[i],k);else if(d.isPlainObject(b)||h!==c)a.set(b,h);else return j=a.get(b),f}),j!==g?j:this;if("object"==typeof a||!arguments.length)return m=I(d.extend(e,{},a)),t.bind.call(this,m,l)},t.bind=function(a,b){return this.each(function(g){function n(a){function b(){l.render(typeof a=="object"||h.show.ready),i.show.add(i.hide).unbind(k)}if(l.cache.disabled)return f;l.cache.event=d.extend({},a),l.cache.target=a?d(a.target):[c],h.show.delay>0?(clearTimeout(l.timers.show),l.timers.show=setTimeout(b,h.show.delay),j.show!==j.hide&&i.hide.bind(j.hide,function(){clearTimeout(l.timers.show)})):b()}var h,i,j,k,l,m;m=d.isArray(a.id)?a.id[g]:a.id,m=!m||m===f||m.length<1||w[m]?t.nextid++:w[m]=m,k=".qtip-"+m+"-create",l=K.call(this,m,a);if(l===f)return e;h=l.options,d.each(u,function(){this.initialize==="initialize"&&this(l)}),i={show:h.show.target,hide:h.hide.target},j={show:d.trim(""+h.show.event).replace(/ /g,k+" ")+k,hide:d.trim(""+h.hide.event).replace(/ /g,k+" ")+k},/mouse(over|enter)/i.test(j.show)&&!/mouse(out|leave)/i.test(j.hide)&&(j.hide+=" mouseleave"+k),i.show.bind("mousemove"+k,function(a){v={pageX:a.pageX,pageY:a.pageY,type:"mousemove"},l.cache.onTarget=e}),i.show.bind(j.show,n),(h.show.ready||h.prerender)&&n(b)})},u=t.plugins={Corner:function(a){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,p).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase();var b=a.charAt(0);this.precedance=b==="t"||b==="b"?i:h,this.string=function(){return this.precedance===i?this.y+this.x:this.x+this.y},this.abbrev=function(){var a=this.x.substr(0,1),b=this.y.substr(0,1);return a===b?a:this.precedance===i?b+a:a+b},this.invertx=function(a){this.x=this.x===m?o:this.x===o?m:a||this.x},this.inverty=function(a){this.y=this.y===l?n:this.y===n?l:a||this.y},this.clone=function(){return{x:this.x,y:this.y,precedance:this.precedance,string:this.string,abbrev:this.abbrev,clone:this.clone,invertx:this.invertx,inverty:this.inverty}}},offset:function(a,b){function j(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}var c=a.offset(),e=a.closest("body")[0],f=b,g,h,i;if(f){do f.css("position")!=="static"&&(h=f.position(),c.left-=h.left+(parseInt(f.css("borderLeftWidth"),10)||0)+(parseInt(f.css("marginLeft"),10)||0),c.top-=h.top+(parseInt(f.css("borderTopWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0),!g&&(i=f.css("overflow"))!=="hidden"&&i!=="visible"&&(g=f));while((f=d(f[0].offsetParent)).length);g&&g[0]!==e&&j(g,1)}return c},iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||f,fn:{attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,F):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(F,b))}return d.fn["attr"+E].apply(this,arguments)},clone:function(a){var b=d([]),c="title",e=d.fn["clone"+E].apply(this,arguments);return a||e.filter("["+F+"]").attr("title",function(){return d.attr(this,F)}).removeAttr(F),e}}},d.each(u.fn,function(a,b){if(!b||d.fn[a+E])return e;var c=d.fn[a+E]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+E]=d.cleanData,d.cleanData=function(a){for(var b=0,e;(e=a[b])!==c;b++)try{d(e).triggerHandler("removeqtip")}catch(f){}d["cleanData"+E](a)}),t.version="@VERSION",t.nextid=0,t.inactiveEvents="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),t.zindex=15e3,t.defaults={prerender:f,id:f,overwrite:e,suppress:e,content:{text:e,attr:"title",title:{text:f,button:f}},position:{my:"top left",at:"bottom right",target:f,container:f,viewport:f,adjust:{x:0,y:0,mouse:e,resize:e,method:"flip flip"},effect:function(a,b,c){d(this).animate(b,{duration:200,queue:f})}},show:{target:f,event:"mouseenter",effect:e,delay:90,solo:f,ready:f,autofocus:f},hide:{target:f,event:"mouseleave",effect:e,delay:0,fixed:f,inactive:f,leave:"window",distance:f},style:{classes:"",widget:f,width:f,height:f,def:e},events:{render:g,move:g,show:g,hide:g,toggle:g,visible:g,hidden:g,focus:g,blur:g}},u.svg=function(a,c,e,f){var g=d(b),h=c[0],i={width:0,height:0,position:{top:1e10,left:1e10}},j,k,l,m,n;while(!h.getBBox)h=h.parentNode;if(h.getBBox&&h.parentNode){j=h.getBBox(),k=h.getScreenCTM(),l=h.farthestViewportElement||h;if(!l.createSVGPoint)return i;m=l.createSVGPoint(),m.x=j.x,m.y=j.y,n=m.matrixTransform(k),i.position.left=n.x,i.position.top=n.y,m.x+=j.width,m.y+=j.height,n=m.matrixTransform(k),i.width=n.x-i.position.left,i.height=n.y-i.position.top,i.position.left+=g.scrollLeft(),i.position.top+=g.scrollTop()}return i},u.ajax=function(a){var b=a.plugins.ajax;return"object"==typeof b?b:a.plugins.ajax=new L(a)},u.ajax.initialize="render",u.ajax.sanitize=function(a){var b=a.content,c;b&&"ajax"in b&&(c=b.ajax,typeof c!="object"&&(c=a.content.ajax={url:c}),"boolean"!=typeof c.once&&c.once&&(c.once=!!c.once))},d.extend(e,t.defaults,{content:{ajax:{loading:e,once:e}}}),u.tip=function(a){var b=a.plugins.tip;return"object"==typeof b?b:a.plugins.tip=new N(a)},u.tip.initialize="render",u.tip.sanitize=function(a){var b=a.style,c;b&&"tip"in b&&(c=a.style.tip,typeof c!="object"&&(a.style.tip={corner:c}),/string|boolean/i.test(typeof c.corner)||(c.corner=e),typeof c.width!="number"&&delete c.width,typeof c.height!="number"&&delete c.height,typeof c.border!="number"&&c.border!==e&&delete c.border,typeof c.offset!="number"&&delete c.offset)},d.extend(e,t.defaults,{style:{tip:{corner:e,mimic:f,width:6,height:6,border:e,offset:0}}}),u.modal=function(a){var b=a.plugins.modal;return"object"==typeof b?b:a.plugins.modal=new O(a)},u.modal.initialize="render",u.modal.sanitize=function(a){a.show&&(typeof a.show.modal!="object"?a.show.modal={on:!!a.show.modal}:typeof a.show.modal.on=="undefined"&&(a.show.modal.on=e))},u.modal.zindex=t.zindex-200,u.modal.focusable=["a[href]","area[href]","input","select","textarea","button","iframe","object","embed","[tabindex]","[contenteditable]"],d.extend(e,t.defaults,{show:{modal:{on:f,effect:e,blur:e,stealfocus:e,escape:e}}}),u.viewport=function(c,d,e,f,g,q,t){function L(a,b,c,e,f,g,h,i,j){var k=d[f],l=w[a],m=y[a],n=c===s,o=-E.offset[f]+D.offset[f]+D["scroll"+f],q=l===f?j:l===g?-j:-j/2,t=m===f?i:m===g?-i:-i/2,u=G&&G.size?G.size[h]||0:0,v=G&&G.corner&&G.corner.precedance===a&&!n?u:0,x=o-k+v,z=k+j-D[h]-o+v,A=q-(w.precedance===a||l===w[b]?t:0)-(m===p?i/2:0);return n?(v=G&&G.corner&&G.corner.precedance===b?u:0,A=(l===f?1:-1)*q-v,d[f]+=x>0?x:z>0?-z:0,d[f]=Math.max(-E.offset[f]+D.offset[f]+(v&&G.corner[a]===p?G.offset:0),k-A,Math.min(Math.max(-E.offset[f]+D.offset[f]+D[h],k+A),d[f]))):(e*=c===r?2:0,x>0&&(l!==f||z>0)?(d[f]-=A+e,J["invert"+a](f)):z>0&&(l!==g||x>0)&&(d[f]-=(l===p?-A:A)+e,J["invert"+a](g)),d[f]z&&(d[f]=k,J=w.clone())),d[f]-k}var u=e.target,v=c.elements.tooltip,w=e.my,y=e.at,z=e.adjust,A=z.method.split(" "),B=A[0],C=A[1]||A[0],D=e.viewport,E=e.container,F=c.cache,G=c.plugins.tip,H={left:0,top:0},I,J,K;if(!D.jquery||u[0]===a||u[0]===b.body||z.method==="none")return H;I=v.css("position")==="fixed",D={elem:D,height:D[(D[0]===a?"h":"outerH")+"eight"](),width:D[(D[0]===a?"w":"outerW")+"idth"](),scrollleft:I?0:D.scrollLeft(),scrolltop:I?0:D.scrollTop(),offset:D.offset()||{left:0,top:0}},E={elem:E,scrollLeft:E.scrollLeft(),scrollTop:E.scrollTop(),offset:E.offset()||{left:0,top:0}};if(B!=="shift"||C!=="shift")J=w.clone();return H={left:B!=="none"?L(h,i,B,z.x,m,o,j,f,q):0,top:C!=="none"?L(i,h,C,z.y,l,n,k,g,t):0},J&&F.lastClass!==(K=x+"-pos-"+J.abbrev())&&v.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=K),H},u.imagemap=function(a,b,c,e){function v(a,b,c){var d=0,e=1,f=1,g=0,h=0,i=a.width,j=a.height;while(i>0&&j>0&&e>0&&f>0){i=Math.floor(i/2),j=Math.floor(j/2),c.x===m?e=i:c.x===o?e=a.width-i:e+=Math.floor(i/2),c.y===l?f=j:c.y===n?f=a.height-j:f+=Math.floor(j/2),d=b.length;while(d--){if(b.length<2)break;g=b[d][0]-a.position.left,h=b[d][1]-a.position.top,(c.x===m&&g>=e||c.x===o&&g<=e||c.x===p&&(ga.width-e)||c.y===l&&h>=f||c.y===n&&h<=f||c.y===p&&(ha.height-f))&&b.splice(d,1)}}return{left:b[0][0],top:b[0][1]}}b.jquery||(b=d(b));var f=a.cache.areas={},g=(b[0].shape||b.attr("shape")).toLowerCase(),h=b[0].coords||b.attr("coords"),i=h.split(","),j=[],k=d('img[usemap="#'+b.parent("map").attr("name")+'"]'),q=k.offset(),r={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10}},s=0,t=0,u;q.left+=Math.ceil((k.outerWidth()-k.width())/2),q.top+=Math.ceil((k.outerHeight()-k.height())/2);if(g==="poly"){s=i.length;while(s--)t=[parseInt(i[--s],10),parseInt(i[s+1],10)],t[0]>r.position.right&&(r.position.right=t[0]),t[0]r.position.bottom&&(r.position.bottom=t[1]),t[1] Date: Fri, 5 Oct 2012 15:08:11 -0700 Subject: [PATCH 459/502] more! --- v3/commentary-bubbles-demo.js | 82 ++++++++++++++++++++++++--------- v3/css/jquery.qtip.css | 85 ++++++++++++++++++++++++++++++++++- 2 files changed, 145 insertions(+), 22 deletions(-) diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index e7a8daf21..30af55417 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -4,6 +4,50 @@ var listSumTrace = {"code": "def listSum(numbers):\n if not numbers:\n return 0\n else:\n (f, rest) = numbers\n return f + listSum(rest)\n\nmyList = (1, (2, (3, None)))\ntotal = listSum(myList)\n", "trace": [{"ordered_globals": [], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {}, "heap": {}, "line": 1, "event": "step_line"}, {"ordered_globals": ["listSum"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null]}, "line": 8, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4]}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 5, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 1, "event": "call"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 2, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "step_line"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 4, "encoded_locals": {"__return__": 0, "numbers": null}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f4", "ordered_varnames": ["numbers", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 3, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 3, "encoded_locals": {"__return__": 3, "numbers": ["REF", 4], "rest": null, "f": 3}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f3", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": false, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest"]}, {"frame_id": 2, "encoded_locals": {"__return__": 5, "numbers": ["REF", 3], "rest": ["REF", 4], "f": 2}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f2", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList"], "stdout": "", "func_name": "listSum", "stack_to_render": [{"frame_id": 1, "encoded_locals": {"__return__": 6, "numbers": ["REF", 2], "rest": ["REF", 3], "f": 1}, "is_highlighted": true, "is_parent": false, "func_name": "listSum", "is_zombie": false, "parent_frame_id_list": [], "unique_hash": "listSum_f1", "ordered_varnames": ["numbers", "f", "rest", "__return__"]}], "globals": {"myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 6, "event": "return"}, {"ordered_globals": ["listSum", "myList", "total"], "stdout": "", "func_name": "", "stack_to_render": [], "globals": {"total": 6, "myList": ["REF", 2], "listSum": ["REF", 1]}, "heap": {"1": ["FUNCTION", "listSum(numbers)", null], "2": ["TUPLE", 1, ["REF", 3]], "3": ["TUPLE", 2, ["REF", 4]], "4": ["TUPLE", 3, null]}, "line": 9, "event": "return"}]}; +var qtipShared = { + show: { + ready: true, // show on document.ready instead of on mouseenter + delay: 0, + event: null, + }, + hide: { + fixed: true, + event: null, + }, + style: { + classes: 'ui-tooltip-pgbootstrap', // my own customized version of the bootstrap style - see css/jquery.qtip.css + }, +}; + + +function createSpeechBubble(domID, my, at, htmlContent) { + var hashID = '#' + domID; + $(hashID).qtip($.extend({}, qtipShared, { + content: htmlContent, + id: domID, + position: { + my: my, + at: at, + effect: null, // disable all cutesy animations + }, + })); + + + $('#ui-tooltip-' + domID + '-content').click(function() { + if (!$(hashID).data('qtip-minimized')) { + $(hashID) + .data('qtip-minimized', true) + .qtip('option', 'content.text', ' '); + } + else { + $(hashID) + .data('qtip-minimized', false) + .qtip('option', 'content.text', htmlContent); + } + }); +} + + $(document).ready(function() { /* var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, @@ -11,25 +55,21 @@ $(document).ready(function() { editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); */ - $('#v1__heap_object_4').qtip({ - content: 'This is the final element of our linked list. Its car is 3 and cdr is None', - id: 'v1__heap_object_4', - position: { - my: 'bottom left', - at: 'top center', - adjust: {x: 0, y: 0}, - }, - show: { - ready: true, // show on document.ready instead of on mouseenter - //delay: 0, - event: null, - }, - hide: { - fixed: true, - event: null, - }, - style: { - classes: 'ui-tooltip-bootstrap', - }, - }); + createSpeechBubble('v1__heap_object_1', 'bottom left', 'top center', + "Here's a function!"); + + createSpeechBubble('v1__heap_object_2', 'bottom left', 'top center', + 'This is the head of our linked list.'); + + createSpeechBubble('v1__heap_object_4', 'bottom left', 'top center', + 'This is the final element of our linked list. Its car is 3 and cdr is None'); + + + createSpeechBubble('v1__stack0', 'right center', 'left center', + "The first of several recursive calls."); + + createSpeechBubble('v1__stack2', 'right center', 'left center', + "Another recursive call."); + + }); diff --git a/v3/css/jquery.qtip.css b/v3/css/jquery.qtip.css index fb7fe24b6..331781643 100644 --- a/v3/css/jquery.qtip.css +++ b/v3/css/jquery.qtip.css @@ -2,6 +2,8 @@ * http://craigsworks.com/projects/qtip2/ * Copyright (c) 2012 Craig Michael Thompson; Licensed MIT, GPL */ +/* Modified by Philip Guo */ + /* Fluid class for determining actual width in IE */ #qtip-rcontainer{ position: absolute; @@ -243,7 +245,8 @@ /* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ .ui-tooltip-rounded, .ui-tooltip-tipsy, -.ui-tooltip-bootstrap{ +.ui-tooltip-bootstrap, +.ui-tooltip-pgbootstrap{ -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; @@ -514,6 +517,86 @@ } +/* modified version of Twitter bootstrap style by Philip Guo */ +.ui-tooltip-pgbootstrap{ + font-size: 9pt; + line-height: 1.3em; + + font-family: verdana, arial, helvetica, sans-serif; + + color: #333; + background-color: #ffffff; + + max-width: 350px; + min-width: 25px; + + border: 2px solid #4284D3; + + cursor: pointer; + + *border-right-width: 2px; + *border-bottom-width: 2px; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + + /* way too poofy ... + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + */ + + -webkit-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); + box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); + + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + + .ui-tooltip-pgbootstrap .ui-tooltip-titlebar{ + font-size: 18px; + line-height: 22px; + + border-bottom: 1px solid #ccc; + background-color: transparent; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-titlebar .ui-state-default{ + right: 9px; top: 49%; + border-style: none; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-icon{ + background: white; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon{ + width: auto; + height: auto; + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); + } + + .ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon:hover{ + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); + } + + + + /* IE9 fix - removes all filters */ .ui-tooltip:not(.ie9haxors) div.ui-tooltip-content, .ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{ From 9d15d95133f8d03e94e45ca4b7f392bf98fd937c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 5 Oct 2012 15:46:55 -0700 Subject: [PATCH 460/502] minor --- v3/js/pytutor.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 4c27b63fc..b0d8a53e9 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -667,6 +667,9 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { if (i == 0) { return 'lineNo' + d.lineNumber; } + else { + return 'cod' + d.lineNumber; + } }) .html(function(d, i) { if (i == 0) { @@ -1780,6 +1783,9 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { var valStringRepr = String(typeof val) + ':' + String(val); // SUPER HACK - retrieve previous value as a hidden attribute + // TODO: use the jQuery .data() method to store arbitrary data + // inside of a DOM element, so that we can avoid munging strings: + // http://api.jquery.com/data/ var prevValStringRepr = $(this).attr('data-curvalue'); // IMPORTANT! only clear the div and render a new element if the From 13b33199b60949eef5e774547912c8a4d2a9c3ad Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 5 Oct 2012 15:47:13 -0700 Subject: [PATCH 461/502] more updates --- v3/commentary-bubbles-demo.html | 2 +- v3/commentary-bubbles-demo.js | 8 ++++++++ v3/css/jquery.qtip.css | 5 +++++ 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html index c75a213c5..c072cb4d5 100644 --- a/v3/commentary-bubbles-demo.html +++ b/v3/commentary-bubbles-demo.html @@ -32,7 +32,7 @@ -
    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 12 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
    +
    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 12 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
    diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 30af55417..6131d7be8 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -71,5 +71,13 @@ $(document).ready(function() { createSpeechBubble('v1__stack2', 'right center', 'left center', "Another recursive call."); + createSpeechBubble('cod4', 'left center', 'right center', + "line four, booooooooooooo ..."); + + createSpeechBubble('cod5', 'left center', 'right center', + "line five, yay!!!"); + + createSpeechBubble('cod9', 'left center', 'right center', + "line nine, yay!!!"); }); diff --git a/v3/css/jquery.qtip.css b/v3/css/jquery.qtip.css index 331781643..59196f3db 100644 --- a/v3/css/jquery.qtip.css +++ b/v3/css/jquery.qtip.css @@ -564,6 +564,11 @@ background-color: transparent; } + .ui-tooltip-pgbootstrap .ui-tooltip-content{ + padding: 5px /* 5px is minimum or else it might look ugly */ 7px; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-titlebar .ui-state-default{ right: 9px; top: 49%; border-style: none; From c5c8b2788603e12a093209688cdd7a6f73d0c10b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 5 Oct 2012 16:27:56 -0700 Subject: [PATCH 462/502] make more unique IDs --- v3/js/pytutor.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index b0d8a53e9..2925f8fae 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -668,7 +668,7 @@ ExecutionVisualizer.prototype.renderPyCodeOutput = function() { return 'lineNo' + d.lineNumber; } else { - return 'cod' + d.lineNumber; + return myViz.generateID('cod' + d.lineNumber); // make globally unique (within the page) } }) .html(function(d, i) { @@ -1755,7 +1755,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { globalVarTable .enter() - .append('tr'); + .append('tr') + .attr('id', function(d, i) { + return myViz.generateID(varnameToCssID('globals__' + d)); // make globally unique (within the page) + }); var globalVarTableCells = globalVarTable @@ -1914,7 +1917,10 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { stackVarTable .enter() - .append('tr'); + .append('tr') + .attr('id', function(d, i) { + return myViz.generateID(varnameToCssID(d.frame.unique_hash + '__' + d.varname)); // make globally unique (within the page) + }); var stackVarTableCells = stackVarTable From e9b1fbb70c4c24ca6a86b2c0640f52fd78548eb2 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 5 Oct 2012 16:38:50 -0700 Subject: [PATCH 463/502] updated speech bubbles example --- v3/commentary-bubbles-demo.html | 4 +++- v3/commentary-bubbles-demo.js | 11 ++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html index c072cb4d5..cce5c4f65 100644 --- a/v3/commentary-bubbles-demo.html +++ b/v3/commentary-bubbles-demo.html @@ -32,7 +32,9 @@ -
    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 12 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
    + + +
    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 15 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    listSum
    numbersNone
    Return
    value
    0
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
    diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 6131d7be8..57ed88e88 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -71,13 +71,18 @@ $(document).ready(function() { createSpeechBubble('v1__stack2', 'right center', 'left center', "Another recursive call."); - createSpeechBubble('cod4', 'left center', 'right center', + createSpeechBubble('v1__cod4', 'left center', 'right center', "line four, booooooooooooo ..."); - createSpeechBubble('cod5', 'left center', 'right center', + createSpeechBubble('v1__cod5', 'left center', 'right center', "line five, yay!!!"); - createSpeechBubble('cod9', 'left center', 'right center', + createSpeechBubble('v1__cod9', 'left center', 'right center', "line nine, yay!!!"); + createSpeechBubble('v1__listSum_f2__numbers', 'right center', 'left center', + "this is a variable, of course!"); + + createSpeechBubble('v1__listSum_f2__rest', 'right center', 'left center', + "this is another variable, of course; what else would it be?!?"); }); From 4afd4f5039a1b0bbef5a83ef2defec5d29b034cb Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Fri, 5 Oct 2012 22:12:02 -0700 Subject: [PATCH 464/502] minor --- v3/css/jquery.qtip.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/css/jquery.qtip.css b/v3/css/jquery.qtip.css index 59196f3db..f44caf6eb 100644 --- a/v3/css/jquery.qtip.css +++ b/v3/css/jquery.qtip.css @@ -528,7 +528,7 @@ background-color: #ffffff; max-width: 350px; - min-width: 25px; + min-width: 10px; border: 2px solid #4284D3; From 962745e00944d895d789ae4567027b0d253c954b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 6 Oct 2012 10:40:33 -0700 Subject: [PATCH 465/502] more demo action --- v3/commentary-bubbles-demo.css | 109 ++++++++++++++++++++++++++++++++ v3/commentary-bubbles-demo.html | 1 + v3/commentary-bubbles-demo.js | 40 +++++++----- v3/css/jquery.qtip.css | 90 +------------------------- 4 files changed, 136 insertions(+), 104 deletions(-) create mode 100644 v3/commentary-bubbles-demo.css diff --git a/v3/commentary-bubbles-demo.css b/v3/commentary-bubbles-demo.css new file mode 100644 index 000000000..1072ecb0f --- /dev/null +++ b/v3/commentary-bubbles-demo.css @@ -0,0 +1,109 @@ +/* For styling tricks, see: http://css-tricks.com/textarea-tricks/ */ +textarea.bubbleInputText { + border: 1px solid #ccc; + outline: none; + overflow: auto; /* to look pretty on IE */ + + /* make sure textarea doesn't grow and stretch the enclosing bubble */ + resize: none; + width: 200px; + max-width: 200px; + height: 60px; + max-height: 60px; +} + + +.ui-tooltip-pgbootstrap, +textarea.bubbleInputText { + font-size: 9pt; + line-height: 1.3em; + + font-family: verdana, arial, helvetica, sans-serif; +} + + +/* modified version of Twitter bootstrap style by Philip Guo */ +.ui-tooltip-pgbootstrap{ + color: #333; + background-color: #ffffff; + + max-width: 250px; + min-width: 10px; + + border: 2px solid #4284D3; + + cursor: pointer; + + *border-right-width: 2px; + *border-bottom-width: 2px; + + -webkit-border-radius: 5px; + -moz-border-radius: 5px; + border-radius: 5px; + + /* way too poofy ... + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + */ + + -webkit-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); + box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); + + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + + .ui-tooltip-pgbootstrap .ui-tooltip-titlebar{ + font-size: 18px; + line-height: 22px; + + border-bottom: 1px solid #ccc; + background-color: transparent; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-content{ + padding: 5px /* 5px is minimum or else it might look ugly */ 7px; + } + + + .ui-tooltip-pgbootstrap .ui-tooltip-titlebar .ui-state-default{ + right: 9px; top: 49%; + border-style: none; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-icon{ + background: white; + } + + .ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon{ + width: auto; + height: auto; + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); + } + + .ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon:hover{ + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); + } + + +/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ +.ui-tooltip-pgbootstrap{ + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html index cce5c4f65..c94ddb9e4 100644 --- a/v3/commentary-bubbles-demo.html +++ b/v3/commentary-bubbles-demo.html @@ -23,6 +23,7 @@ + diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 57ed88e88..3b6736a67 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -20,7 +20,7 @@ var qtipShared = { }; -function createSpeechBubble(domID, my, at, htmlContent) { +function createSpeechBubble(domID, my, at, htmlContent, isInput) { var hashID = '#' + domID; $(hashID).qtip($.extend({}, qtipShared, { content: htmlContent, @@ -33,21 +33,28 @@ function createSpeechBubble(domID, my, at, htmlContent) { })); - $('#ui-tooltip-' + domID + '-content').click(function() { - if (!$(hashID).data('qtip-minimized')) { - $(hashID) - .data('qtip-minimized', true) - .qtip('option', 'content.text', ' '); - } - else { - $(hashID) - .data('qtip-minimized', false) - .qtip('option', 'content.text', htmlContent); - } - }); + if (isInput) { + + } + else { + $('#ui-tooltip-' + domID + '-content').click(function() { + if (!$(hashID).data('qtip-minimized')) { + $(hashID) + .data('qtip-minimized', true) + .qtip('option', 'content.text', ' '); + } + else { + $(hashID) + .data('qtip-minimized', false) + .qtip('option', 'content.text', htmlContent); + } + }); + } } +inputTextarea = '' + $(document).ready(function() { /* var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, @@ -68,8 +75,8 @@ $(document).ready(function() { createSpeechBubble('v1__stack0', 'right center', 'left center', "The first of several recursive calls."); - createSpeechBubble('v1__stack2', 'right center', 'left center', - "Another recursive call."); + //createSpeechBubble('v1__stack2', 'right center', 'left center', + // "Another recursive call."); createSpeechBubble('v1__cod4', 'left center', 'right center', "line four, booooooooooooo ..."); @@ -85,4 +92,7 @@ $(document).ready(function() { createSpeechBubble('v1__listSum_f2__rest', 'right center', 'left center', "this is another variable, of course; what else would it be?!?"); + + createSpeechBubble('v1__stack2', 'right center', 'left center', + inputTextarea, true); }); diff --git a/v3/css/jquery.qtip.css b/v3/css/jquery.qtip.css index f44caf6eb..fb7fe24b6 100644 --- a/v3/css/jquery.qtip.css +++ b/v3/css/jquery.qtip.css @@ -2,8 +2,6 @@ * http://craigsworks.com/projects/qtip2/ * Copyright (c) 2012 Craig Michael Thompson; Licensed MIT, GPL */ -/* Modified by Philip Guo */ - /* Fluid class for determining actual width in IE */ #qtip-rcontainer{ position: absolute; @@ -245,8 +243,7 @@ /* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ .ui-tooltip-rounded, .ui-tooltip-tipsy, -.ui-tooltip-bootstrap, -.ui-tooltip-pgbootstrap{ +.ui-tooltip-bootstrap{ -moz-border-radius: 5px; -webkit-border-radius: 5px; border-radius: 5px; @@ -517,91 +514,6 @@ } -/* modified version of Twitter bootstrap style by Philip Guo */ -.ui-tooltip-pgbootstrap{ - font-size: 9pt; - line-height: 1.3em; - - font-family: verdana, arial, helvetica, sans-serif; - - color: #333; - background-color: #ffffff; - - max-width: 350px; - min-width: 10px; - - border: 2px solid #4284D3; - - cursor: pointer; - - *border-right-width: 2px; - *border-bottom-width: 2px; - - -webkit-border-radius: 5px; - -moz-border-radius: 5px; - border-radius: 5px; - - /* way too poofy ... - -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); - */ - - -webkit-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); - -moz-box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); - box-shadow: 2px 2px 3px 0px rgba(0, 0, 0, 0.2); - - -webkit-background-clip: padding-box; - -moz-background-clip: padding; - background-clip: padding-box; -} - - .ui-tooltip-pgbootstrap .ui-tooltip-titlebar{ - font-size: 18px; - line-height: 22px; - - border-bottom: 1px solid #ccc; - background-color: transparent; - } - - .ui-tooltip-pgbootstrap .ui-tooltip-content{ - padding: 5px /* 5px is minimum or else it might look ugly */ 7px; - } - - - .ui-tooltip-pgbootstrap .ui-tooltip-titlebar .ui-state-default{ - right: 9px; top: 49%; - border-style: none; - } - - .ui-tooltip-pgbootstrap .ui-tooltip-icon{ - background: white; - } - - .ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon{ - width: auto; - height: auto; - float: right; - font-size: 20px; - font-weight: bold; - line-height: 18px; - color: #000000; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.2; - filter: alpha(opacity=20); - } - - .ui-tooltip-pgbootstrap .ui-tooltip-icon .ui-icon:hover{ - color: #000000; - text-decoration: none; - cursor: pointer; - opacity: 0.4; - filter: alpha(opacity=40); - } - - - - /* IE9 fix - removes all filters */ .ui-tooltip:not(.ie9haxors) div.ui-tooltip-content, .ui-tooltip:not(.ie9haxors) div.ui-tooltip-titlebar{ From 692a2550d8cddad11ba397ff0f5c07c3f087dbe0 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 6 Oct 2012 14:32:46 -0700 Subject: [PATCH 466/502] keep chuggin' along on demo --- v3/commentary-bubbles-demo.css | 4 + v3/commentary-bubbles-demo.js | 135 ++++++++++++++++++++++++++++++++- 2 files changed, 135 insertions(+), 4 deletions(-) diff --git a/v3/commentary-bubbles-demo.css b/v3/commentary-bubbles-demo.css index 1072ecb0f..bb3d92a53 100644 --- a/v3/commentary-bubbles-demo.css +++ b/v3/commentary-bubbles-demo.css @@ -107,3 +107,7 @@ textarea.bubbleInputText { border-radius: 5px; } + +.ui-tooltip-pgbootstrap-stub{ + border: 2px solid #999; +} diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 3b6736a67..01e05f9f9 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -15,7 +15,7 @@ var qtipShared = { event: null, }, style: { - classes: 'ui-tooltip-pgbootstrap', // my own customized version of the bootstrap style - see css/jquery.qtip.css + classes: 'ui-tooltip-pgbootstrap', // my own customized version of the bootstrap style }, }; @@ -53,15 +53,142 @@ function createSpeechBubble(domID, my, at, htmlContent, isInput) { } +// a speech bubble annotation to attach to: +// 'codeline' - a line of code +// 'frame' - a stack frame +// 'variable' - a variable within a stack frame +// 'object' - an object on the heap +// (as determined by the 'type' param) +// +// domID is the ID of the element to attach to (without the leading '#' sign) +function AnnotationBubble(type, domID) { + this.domID = domID; + this.hashID = '#' + domID; + + if (type == 'codeline') { + this.my = 'left center'; + this.at = 'right center'; + } + else if (type == 'frame') { + this.my = 'right center'; + this.at = 'left center'; + } + else if (type == 'variable') { + this.my = 'right center'; + this.at = 'left center'; + } + else if (type == 'object') { + this.my = 'bottom left'; + this.at = 'top center'; + } + else { + assert(false); + } + + // possible states: + // 'hidden' + // 'edit' + // 'view' + // 'minimized' + // 'stub' + this.state = 'hidden'; + + this.text = ''; // the actual contents of the annotation bubble +} + +AnnotationBubble.prototype.showStub = function() { + assert(this.state == 'hidden' || this.state == 'edit'); + assert(this.text == ''); + + // destroy then create a new tip: + this.destroyQTip(); + $(this.hashID).qtip($.extend({}, qtipShared, { + content: ' ', + id: this.domID, + position: { + my: this.my, + at: this.at, + effect: null, // disable all cutesy animations + }, + style: { + classes: 'ui-tooltip-pgbootstrap ui-tooltip-pgbootstrap-stub' + } + })); + + this.state = 'stub'; +} + +AnnotationBubble.prototype.showEditor = function() { + assert(this.state == 'stub' || this.state == 'view'); + + var ta = ''; + + // destroy then create a new tip: + this.destroyQTip(); + $(this.hashID).qtip($.extend({}, qtipShared, { + content: ta, + id: this.domID, + position: { + my: this.my, + at: this.at, + effect: null, // disable all cutesy animations + } + })); + + this.state = 'edit'; +} + +AnnotationBubble.prototype.showViewer = function() { + assert(this.state == 'edit'); + assert(this.text); // must be non-empty! + + // destroy then create a new tip: + this.destroyQTip(); + $(this.hashID).qtip($.extend({}, qtipShared, { + content: this.text, + id: this.domID, + position: { + my: this.my, + at: this.at, + effect: null, // disable all cutesy animations + } + })); + + this.state = 'view'; +} + +AnnotationBubble.prototype.minimizeViewer = function() { + assert(this.state == 'view'); + $(this.hashID).qtip('option', 'content.text', ' '); + this.state = 'minimized'; +} + +AnnotationBubble.prototype.restoreViewer = function() { + assert(this.state == 'minimized'); + $(this.hashID).qtip('option', 'content.text', this.text); + this.state = 'view'; +} + + +AnnotationBubble.prototype.destroyQTip = function() { + $(this.hashID).qtip('destroy'); +} + + inputTextarea = '' $(document).ready(function() { + $.fn.qtip.styles = {}; + $.fn.qtip.styles.stubStyle = {border: {color: '#999'}}; + + /* var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, {embeddedMode: false, editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); */ + /* createSpeechBubble('v1__heap_object_1', 'bottom left', 'top center', "Here's a function!"); @@ -75,9 +202,6 @@ $(document).ready(function() { createSpeechBubble('v1__stack0', 'right center', 'left center', "The first of several recursive calls."); - //createSpeechBubble('v1__stack2', 'right center', 'left center', - // "Another recursive call."); - createSpeechBubble('v1__cod4', 'left center', 'right center', "line four, booooooooooooo ..."); @@ -95,4 +219,7 @@ $(document).ready(function() { createSpeechBubble('v1__stack2', 'right center', 'left center', inputTextarea, true); + */ + + x = new AnnotationBubble('frame', 'v1__stack2'); }); From f6812256c71f9ea287719d4c2fbda4565698fe02 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 6 Oct 2012 15:29:14 -0700 Subject: [PATCH 467/502] buh --- v3/commentary-bubbles-demo.css | 7 +++--- v3/commentary-bubbles-demo.js | 39 ++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) diff --git a/v3/commentary-bubbles-demo.css b/v3/commentary-bubbles-demo.css index bb3d92a53..7b1916984 100644 --- a/v3/commentary-bubbles-demo.css +++ b/v3/commentary-bubbles-demo.css @@ -8,17 +8,16 @@ textarea.bubbleInputText { resize: none; width: 200px; max-width: 200px; - height: 60px; - max-height: 60px; + height: 45px; + max-height: 45px; } .ui-tooltip-pgbootstrap, textarea.bubbleInputText { + font-family: verdana, arial, helvetica, sans-serif; font-size: 9pt; line-height: 1.3em; - - font-family: verdana, arial, helvetica, sans-serif; } diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 01e05f9f9..ef3eaee9a 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -100,6 +100,8 @@ AnnotationBubble.prototype.showStub = function() { assert(this.state == 'hidden' || this.state == 'edit'); assert(this.text == ''); + var myBubble = this; // to avoid name clashes with 'this' in inner scopes + // destroy then create a new tip: this.destroyQTip(); $(this.hashID).qtip($.extend({}, qtipShared, { @@ -115,12 +117,21 @@ AnnotationBubble.prototype.showStub = function() { } })); + + $(this.qTipID()) + .unbind('click') // unbind all old handlers + .click(function() { + myBubble.showEditor(); + }); + this.state = 'stub'; } AnnotationBubble.prototype.showEditor = function() { assert(this.state == 'stub' || this.state == 'view'); + var myBubble = this; // to avoid name clashes with 'this' in inner scopes + var ta = ''; // destroy then create a new tip: @@ -135,6 +146,20 @@ AnnotationBubble.prototype.showEditor = function() { } })); + + $(this.qTipContentID()).find('textarea.bubbleInputText') + .blur(function() { // set handler when the textarea loses focus + myBubble.text = $(this).val().trim(); // strip all leading and trailing spaces + + if (myBubble.text) { + myBubble.showViewer(); + } + else { + myBubble.showStub(); + } + }) + .focus(); // grab focus so that the user can start typing right away! + this.state = 'edit'; } @@ -169,6 +194,19 @@ AnnotationBubble.prototype.restoreViewer = function() { this.state = 'view'; } +AnnotationBubble.prototype.enterHiddenMode = function() { + assert(this.state == 'stub' || this.state == 'edit'); + this.destroyQTip(); + this.state = 'hidden'; +} + +AnnotationBubble.prototype.qTipContentID = function() { + return '#ui-tooltip-' + this.domID + '-content'; +} + +AnnotationBubble.prototype.qTipID = function() { + return '#ui-tooltip-' + this.domID; +} AnnotationBubble.prototype.destroyQTip = function() { $(this.hashID).qtip('destroy'); @@ -222,4 +260,5 @@ $(document).ready(function() { */ x = new AnnotationBubble('frame', 'v1__stack2'); + x.showStub(); }); From 6386153fe6c2c4bdc2d81f3df6b22a5d5394b3ec Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 6 Oct 2012 16:10:07 -0700 Subject: [PATCH 468/502] bam --- v3/commentary-bubbles-demo.html | 5 +-- v3/commentary-bubbles-demo.js | 59 ++++++++++++++++++++++++++++++--- 2 files changed, 58 insertions(+), 6 deletions(-) diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html index c94ddb9e4..1f488b2a9 100644 --- a/v3/commentary-bubbles-demo.html +++ b/v3/commentary-bubbles-demo.html @@ -31,11 +31,12 @@ - -
    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 15 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    listSum
    numbersNone
    Return
    value
    0
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
    +

    + + diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index ef3eaee9a..e2242e21c 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -148,7 +148,8 @@ AnnotationBubble.prototype.showEditor = function() { $(this.qTipContentID()).find('textarea.bubbleInputText') - .blur(function() { // set handler when the textarea loses focus + // set handler when the textarea loses focus + .blur(function() { myBubble.text = $(this).val().trim(); // strip all leading and trailing spaces if (myBubble.text) { @@ -194,7 +195,7 @@ AnnotationBubble.prototype.restoreViewer = function() { this.state = 'view'; } -AnnotationBubble.prototype.enterHiddenMode = function() { +AnnotationBubble.prototype.hide = function() { assert(this.state == 'stub' || this.state == 'edit'); this.destroyQTip(); this.state = 'hidden'; @@ -212,9 +213,40 @@ AnnotationBubble.prototype.destroyQTip = function() { $(this.hashID).qtip('destroy'); } +AnnotationBubble.prototype.enterEditMode = function() { + assert(globalAnnotationMode == 'edit'); + if (this.state == 'minimized') { + this.restoreViewer(); + } + else if (this.state == 'hidden') { + this.showStub(); + } +} + +AnnotationBubble.prototype.enterViewMode = function() { + assert(globalAnnotationMode == 'view'); + if (this.state == 'stub') { + this.hide(); + } + else if (this.state == 'edit') { + this.text = $(this.qTipContentID()).find('textarea.bubbleInputText').val().trim(); // strip all leading and trailing spaces + + if (this.text) { + this.showViewer(); + } + else { + this.hide(); + } + } +} + inputTextarea = '' +globalAnnotationMode = 'view'; + +allBubbles = []; + $(document).ready(function() { $.fn.qtip.styles = {}; $.fn.qtip.styles.stubStyle = {border: {color: '#999'}}; @@ -259,6 +291,25 @@ $(document).ready(function() { inputTextarea, true); */ - x = new AnnotationBubble('frame', 'v1__stack2'); - x.showStub(); + allBubbles.push(new AnnotationBubble('frame', 'v1__stack2')); + + $('#modeToggleBtn').click(function() { + if (globalAnnotationMode == 'view') { + $('#modeToggleBtn').html('Enter View Mode'); + globalAnnotationMode = 'edit'; + $.each(allBubbles, function(i, e) { + e.enterEditMode(); + }); + } + else if (globalAnnotationMode == 'edit') { + $('#modeToggleBtn').html('Enter Edit Mode'); + globalAnnotationMode = 'view'; + $.each(allBubbles, function(i, e) { + e.enterViewMode(); + }); + } + else { + assert(false); + } + }); }); From cee32266ad51647bc3fced29270b06e87b406681 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 6 Oct 2012 16:46:17 -0700 Subject: [PATCH 469/502] more testy --- v3/commentary-bubbles-demo.css | 6 +++ v3/commentary-bubbles-demo.js | 84 ++++++++++++++++++++++++++++++++-- 2 files changed, 86 insertions(+), 4 deletions(-) diff --git a/v3/commentary-bubbles-demo.css b/v3/commentary-bubbles-demo.css index 7b1916984..7c6220ef4 100644 --- a/v3/commentary-bubbles-demo.css +++ b/v3/commentary-bubbles-demo.css @@ -109,4 +109,10 @@ textarea.bubbleInputText { .ui-tooltip-pgbootstrap-stub{ border: 2px solid #999; + + /* + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + */ } diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index e2242e21c..2ba8e2dc8 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -164,6 +164,25 @@ AnnotationBubble.prototype.showEditor = function() { this.state = 'edit'; } + +AnnotationBubble.prototype.bindViewerClickHandler = function() { + var myBubble = this; + + $(this.qTipID()) + .unbind('click') // unbind all old handlers + .click(function() { + if (globalAnnotationMode == 'edit') { + myBubble.showEditor(); + } + else if (globalAnnotationMode == 'view') { + myBubble.minimizeViewer(); + } + else { + assert(false); + } + }); +} + AnnotationBubble.prototype.showViewer = function() { assert(this.state == 'edit'); assert(this.text); // must be non-empty! @@ -180,18 +199,32 @@ AnnotationBubble.prototype.showViewer = function() { } })); + this.bindViewerClickHandler(); this.state = 'view'; } + AnnotationBubble.prototype.minimizeViewer = function() { assert(this.state == 'view'); - $(this.hashID).qtip('option', 'content.text', ' '); + + var myBubble = this; + + $(this.hashID).qtip('option', 'content.text', ' '); //hack to "minimize" its size + + $(this.qTipID()) + .unbind('click') // unbind all old handlers + .click(function() { + assert(globalAnnotationMode == 'view'); + myBubble.restoreViewer(); + }); + this.state = 'minimized'; } AnnotationBubble.prototype.restoreViewer = function() { assert(this.state == 'minimized'); $(this.hashID).qtip('option', 'content.text', this.text); + this.bindViewerClickHandler(); this.state = 'view'; } @@ -201,6 +234,11 @@ AnnotationBubble.prototype.hide = function() { this.state = 'hidden'; } + +AnnotationBubble.prototype.destroyQTip = function() { + $(this.hashID).qtip('destroy'); +} + AnnotationBubble.prototype.qTipContentID = function() { return '#ui-tooltip-' + this.domID + '-content'; } @@ -209,9 +247,6 @@ AnnotationBubble.prototype.qTipID = function() { return '#ui-tooltip-' + this.domID; } -AnnotationBubble.prototype.destroyQTip = function() { - $(this.hashID).qtip('destroy'); -} AnnotationBubble.prototype.enterEditMode = function() { assert(globalAnnotationMode == 'edit'); @@ -291,7 +326,48 @@ $(document).ready(function() { inputTextarea, true); */ + + allBubbles.push(new AnnotationBubble('frame', 'v1__globals')); + allBubbles.push(new AnnotationBubble('frame', 'v1__stack0')); + allBubbles.push(new AnnotationBubble('frame', 'v1__stack1')); allBubbles.push(new AnnotationBubble('frame', 'v1__stack2')); + allBubbles.push(new AnnotationBubble('frame', 'v1__stack3')); + + allBubbles.push(new AnnotationBubble('object', 'v1__heap_object_1')); + allBubbles.push(new AnnotationBubble('object', 'v1__heap_object_2')); + allBubbles.push(new AnnotationBubble('object', 'v1__heap_object_3')); + allBubbles.push(new AnnotationBubble('object', 'v1__heap_object_4')); + + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod1')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod2')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod3')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod4')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod5')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod6')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod7')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod8')); + allBubbles.push(new AnnotationBubble('codeline', 'v1__cod9')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__globals__listSum')); + allBubbles.push(new AnnotationBubble('variable', 'v1__globals__myList')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__numbers')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__f')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__rest')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__numbers')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__f')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__rest')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__numbers')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__f')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__rest')); + + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f4__numbers')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f4____return__')); + + + $('#modeToggleBtn').click(function() { if (globalAnnotationMode == 'view') { From f24fb3908b6b1515941307d9325075b51fc6e78d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 6 Oct 2012 16:49:45 -0700 Subject: [PATCH 470/502] twek --- v3/commentary-bubbles-demo.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/commentary-bubbles-demo.css b/v3/commentary-bubbles-demo.css index 7c6220ef4..b6d509ea7 100644 --- a/v3/commentary-bubbles-demo.css +++ b/v3/commentary-bubbles-demo.css @@ -8,8 +8,8 @@ textarea.bubbleInputText { resize: none; width: 200px; max-width: 200px; - height: 45px; - max-height: 45px; + height: 48px; + max-height: 48px; } From 6a8c4aed4454f21488a252868814f16c97d57365 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 6 Oct 2012 17:12:32 -0700 Subject: [PATCH 471/502] more tweaks --- v3/commentary-bubbles-demo.css | 8 ++++---- v3/commentary-bubbles-demo.html | 2 +- v3/commentary-bubbles-demo.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/v3/commentary-bubbles-demo.css b/v3/commentary-bubbles-demo.css index b6d509ea7..2b6581b0c 100644 --- a/v3/commentary-bubbles-demo.css +++ b/v3/commentary-bubbles-demo.css @@ -6,10 +6,10 @@ textarea.bubbleInputText { /* make sure textarea doesn't grow and stretch the enclosing bubble */ resize: none; - width: 200px; - max-width: 200px; - height: 48px; - max-height: 48px; + width: 230px; + max-width: 230px; + height: 35px; + max-height: 35px; } diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html index 1f488b2a9..b228a2e90 100644 --- a/v3/commentary-bubbles-demo.html +++ b/v3/commentary-bubbles-demo.html @@ -36,7 +36,7 @@

    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 15 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    listSum
    numbersNone
    Return
    value
    0
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None

    - + diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 2ba8e2dc8..8c6ff563e 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -371,14 +371,14 @@ $(document).ready(function() { $('#modeToggleBtn').click(function() { if (globalAnnotationMode == 'view') { - $('#modeToggleBtn').html('Enter View Mode'); + $('#modeToggleBtn').html('View Annotations'); globalAnnotationMode = 'edit'; $.each(allBubbles, function(i, e) { e.enterEditMode(); }); } else if (globalAnnotationMode == 'edit') { - $('#modeToggleBtn').html('Enter Edit Mode'); + $('#modeToggleBtn').html('Add/Edit Annotations'); globalAnnotationMode = 'view'; $.each(allBubbles, function(i, e) { e.enterViewMode(); From 78a6eaa6e9519f6ad53c4bb3844b200b4d223cfc Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sat, 6 Oct 2012 17:30:27 -0700 Subject: [PATCH 472/502] more robust!!! --- v3/commentary-bubbles-demo.css | 13 +++++++++---- v3/commentary-bubbles-demo.js | 18 +++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/v3/commentary-bubbles-demo.css b/v3/commentary-bubbles-demo.css index 2b6581b0c..22b53bf3b 100644 --- a/v3/commentary-bubbles-demo.css +++ b/v3/commentary-bubbles-demo.css @@ -6,8 +6,8 @@ textarea.bubbleInputText { /* make sure textarea doesn't grow and stretch the enclosing bubble */ resize: none; - width: 230px; - max-width: 230px; + width: 225px; + max-width: 225px; height: 35px; max-height: 35px; } @@ -64,7 +64,7 @@ textarea.bubbleInputText { } .ui-tooltip-pgbootstrap .ui-tooltip-content{ - padding: 5px /* 5px is minimum or else it might look ugly */ 7px; + padding: 5px /* 5px is minimum or else it might look ugly */ 8px; } @@ -108,7 +108,7 @@ textarea.bubbleInputText { .ui-tooltip-pgbootstrap-stub{ - border: 2px solid #999; + border: 1px solid #888; /* -webkit-box-shadow: none; @@ -116,3 +116,8 @@ textarea.bubbleInputText { box-shadow: none; */ } + + .ui-tooltip-pgbootstrap-stub .ui-tooltip-content{ + padding: 6px 9px; + } + diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 8c6ff563e..10616b9f3 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -128,7 +128,7 @@ AnnotationBubble.prototype.showStub = function() { } AnnotationBubble.prototype.showEditor = function() { - assert(this.state == 'stub' || this.state == 'view'); + assert(this.state == 'stub' || this.state == 'view' || this.state == 'minimized'); var myBubble = this; // to avoid name clashes with 'this' in inner scopes @@ -214,8 +214,15 @@ AnnotationBubble.prototype.minimizeViewer = function() { $(this.qTipID()) .unbind('click') // unbind all old handlers .click(function() { - assert(globalAnnotationMode == 'view'); - myBubble.restoreViewer(); + if (globalAnnotationMode == 'edit') { + myBubble.showEditor(); + } + else if (globalAnnotationMode == 'view') { + myBubble.restoreViewer(); + } + else { + assert(false); + } }); this.state = 'minimized'; @@ -250,10 +257,7 @@ AnnotationBubble.prototype.qTipID = function() { AnnotationBubble.prototype.enterEditMode = function() { assert(globalAnnotationMode == 'edit'); - if (this.state == 'minimized') { - this.restoreViewer(); - } - else if (this.state == 'hidden') { + if (this.state == 'hidden') { this.showStub(); } } From 06ca91083ca508022003add76c5a22ebb1f7be69 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 7 Oct 2012 00:16:15 -0700 Subject: [PATCH 473/502] test for limited height --- v3/commentary-bubbles-demo.js | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 10616b9f3..8d1c9b6cc 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -65,6 +65,8 @@ function AnnotationBubble(type, domID) { this.domID = domID; this.hashID = '#' + domID; + this.type = type; + if (type == 'codeline') { this.my = 'left center'; this.at = 'right center'; @@ -256,6 +258,11 @@ AnnotationBubble.prototype.qTipID = function() { AnnotationBubble.prototype.enterEditMode = function() { + // punt if you're a codeline annotation and your line of code is hidden + if (this.type == 'codeline' && !isOutputLineVisible(this.domID)) { + return; + } + assert(globalAnnotationMode == 'edit'); if (this.state == 'hidden') { this.showStub(); @@ -263,6 +270,11 @@ AnnotationBubble.prototype.enterEditMode = function() { } AnnotationBubble.prototype.enterViewMode = function() { + // punt if you're a codeline annotation and your line of code is hidden + if (this.type == 'codeline' && !isOutputLineVisible(this.domID)) { + return; + } + assert(globalAnnotationMode == 'view'); if (this.state == 'stub') { this.hide(); @@ -286,10 +298,27 @@ globalAnnotationMode = 'view'; allBubbles = []; -$(document).ready(function() { - $.fn.qtip.styles = {}; - $.fn.qtip.styles.stubStyle = {border: {color: '#999'}}; +// returns True iff lineNo is visible in pyCodeOutputDiv +// NB: copied, pasted, and modified from isOutputLineVisible in js/pytutor.js +function isOutputLineVisible(lineDivID) { + var pcod = $('#pyCodeOutputDiv'); + + var lineNoTd = $('#' + lineDivID); + var LO = lineNoTd.offset().top; + + var PO = pcod.offset().top; + var ST = pcod.scrollTop(); + var H = pcod.height(); + + // add a few pixels of fudge factor on the bottom end due to bottom scrollbar + return (PO <= LO) && (LO < (PO + H - 30)); +} + + +$(document).ready(function() { + // force vertical code scrolling + $('#pyCodeOutputDiv').css('max-height', '120px'); /* var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, From 9369fd3c1a76b6414bb1a1e2e9c3e8f40c906aaf Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Sun, 7 Oct 2012 00:22:46 -0700 Subject: [PATCH 474/502] bah --- v3/commentary-bubbles-demo.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 8d1c9b6cc..abb54f7f2 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -400,6 +400,9 @@ $(document).ready(function() { allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f4____return__')); + $('#pyCodeOutputDiv').scroll(function() { + console.log('scrolled!!!'); + }); $('#modeToggleBtn').click(function() { From a21530bf06f51e60bb13a2e5a715b0bab0d96a53 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 8 Oct 2012 15:30:39 -0700 Subject: [PATCH 475/502] got scrolling working for now --- v3/commentary-bubbles-demo.js | 107 ++++++++++++++-------------------- 1 file changed, 45 insertions(+), 62 deletions(-) diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index abb54f7f2..97992157a 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -9,10 +9,12 @@ var qtipShared = { ready: true, // show on document.ready instead of on mouseenter delay: 0, event: null, + effect: function() {$(this).show();}, // don't do any fancy fading because it screws up with scrolling }, hide: { fixed: true, event: null, + effect: function() {$(this).hide();}, // don't do any fancy fading because it screws up with scrolling }, style: { classes: 'ui-tooltip-pgbootstrap', // my own customized version of the bootstrap style @@ -88,18 +90,20 @@ function AnnotationBubble(type, domID) { } // possible states: - // 'hidden' + // 'invisible' // 'edit' // 'view' // 'minimized' // 'stub' - this.state = 'hidden'; + this.state = 'invisible'; this.text = ''; // the actual contents of the annotation bubble + + this.qtipHidden = false; // is there a qtip object present but hidden? (TODO: kinda confusing) } AnnotationBubble.prototype.showStub = function() { - assert(this.state == 'hidden' || this.state == 'edit'); + assert(this.state == 'invisible' || this.state == 'edit'); assert(this.text == ''); var myBubble = this; // to avoid name clashes with 'this' in inner scopes @@ -237,10 +241,11 @@ AnnotationBubble.prototype.restoreViewer = function() { this.state = 'view'; } -AnnotationBubble.prototype.hide = function() { +// NB: actually DESTROYS the QTip object +AnnotationBubble.prototype.makeInvisible = function() { assert(this.state == 'stub' || this.state == 'edit'); this.destroyQTip(); - this.state = 'hidden'; + this.state = 'invisible'; } @@ -258,44 +263,58 @@ AnnotationBubble.prototype.qTipID = function() { AnnotationBubble.prototype.enterEditMode = function() { - // punt if you're a codeline annotation and your line of code is hidden - if (this.type == 'codeline' && !isOutputLineVisible(this.domID)) { - return; - } - assert(globalAnnotationMode == 'edit'); - if (this.state == 'hidden') { + if (this.state == 'invisible') { this.showStub(); + + if (this.type == 'codeline') { + this.redrawCodelineBubble(); + } } } AnnotationBubble.prototype.enterViewMode = function() { - // punt if you're a codeline annotation and your line of code is hidden - if (this.type == 'codeline' && !isOutputLineVisible(this.domID)) { - return; - } - assert(globalAnnotationMode == 'view'); if (this.state == 'stub') { - this.hide(); + this.makeInvisible(); } else if (this.state == 'edit') { this.text = $(this.qTipContentID()).find('textarea.bubbleInputText').val().trim(); // strip all leading and trailing spaces if (this.text) { this.showViewer(); + + if (this.type == 'codeline') { + this.redrawCodelineBubble(); + } } else { - this.hide(); + this.makeInvisible(); } } } +AnnotationBubble.prototype.redrawCodelineBubble = function() { + assert(this.type == 'codeline'); -inputTextarea = '' + if (isOutputLineVisible(this.domID)) { + if (this.qtipHidden) { + $(this.hashID).qtip('show'); + } + else { + $(this.hashID).qtip('reposition'); + } -globalAnnotationMode = 'view'; + this.qtipHidden = false; + } + else { + $(this.hashID).qtip('hide'); + this.qtipHidden = true; + } +} + +globalAnnotationMode = 'view'; allBubbles = []; @@ -312,7 +331,7 @@ function isOutputLineVisible(lineDivID) { var H = pcod.height(); // add a few pixels of fudge factor on the bottom end due to bottom scrollbar - return (PO <= LO) && (LO < (PO + H - 30)); + return (PO <= LO) && (LO < (PO + H - 25)); } @@ -320,46 +339,6 @@ $(document).ready(function() { // force vertical code scrolling $('#pyCodeOutputDiv').css('max-height', '120px'); - /* - var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, - {embeddedMode: false, - editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); - */ - - /* - createSpeechBubble('v1__heap_object_1', 'bottom left', 'top center', - "Here's a function!"); - - createSpeechBubble('v1__heap_object_2', 'bottom left', 'top center', - 'This is the head of our linked list.'); - - createSpeechBubble('v1__heap_object_4', 'bottom left', 'top center', - 'This is the final element of our linked list. Its car is 3 and cdr is None'); - - - createSpeechBubble('v1__stack0', 'right center', 'left center', - "The first of several recursive calls."); - - createSpeechBubble('v1__cod4', 'left center', 'right center', - "line four, booooooooooooo ..."); - - createSpeechBubble('v1__cod5', 'left center', 'right center', - "line five, yay!!!"); - - createSpeechBubble('v1__cod9', 'left center', 'right center', - "line nine, yay!!!"); - - createSpeechBubble('v1__listSum_f2__numbers', 'right center', 'left center', - "this is a variable, of course!"); - - createSpeechBubble('v1__listSum_f2__rest', 'right center', 'left center', - "this is another variable, of course; what else would it be?!?"); - - createSpeechBubble('v1__stack2', 'right center', 'left center', - inputTextarea, true); - */ - - allBubbles.push(new AnnotationBubble('frame', 'v1__globals')); allBubbles.push(new AnnotationBubble('frame', 'v1__stack0')); allBubbles.push(new AnnotationBubble('frame', 'v1__stack1')); @@ -401,7 +380,11 @@ $(document).ready(function() { $('#pyCodeOutputDiv').scroll(function() { - console.log('scrolled!!!'); + $.each(allBubbles, function(i, e) { + if (e.type == 'codeline') { + e.redrawCodelineBubble(); + } + }); }); From 89205f3cfc192bda94211419c8e9dddc7eb3cd7c Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 8 Oct 2012 15:54:08 -0700 Subject: [PATCH 476/502] marching forward --- v3/commentary-bubbles-demo.css | 45 +++++++++++++++++++++++++++++++++ v3/commentary-bubbles-demo.html | 18 ++++++++++--- v3/commentary-bubbles-demo.js | 8 ++++++ v3/css/pytutor.css | 4 +++ 4 files changed, 71 insertions(+), 4 deletions(-) diff --git a/v3/commentary-bubbles-demo.css b/v3/commentary-bubbles-demo.css index 22b53bf3b..67d1b405d 100644 --- a/v3/commentary-bubbles-demo.css +++ b/v3/commentary-bubbles-demo.css @@ -1,3 +1,48 @@ +body { + background-color: white; + + font-family: verdana, arial, helvetica, sans-serif; + + font-size: 10pt; + + margin-top: 30px; + margin-left: 30px; + + /* center align */ + /* + max-width: 1000px; + margin-left: auto; + margin-right: auto; + */ +} + + +div#lessonHeader { + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #ccc; + width: 800px; +} + +div#lessonTitle { + font-size: 16pt; + margin-bottom: 15pt; +} + +div#lessonDescription { + font-size: 11pt; + line-height: 1.5em; +} + +div#curStepNarration { + font-size: 11pt; + min-height: 60px; + margin-bottom: 12px; + line-height: 1.5em; + width: 800px; +} + + /* For styling tricks, see: http://css-tricks.com/textarea-tricks/ */ textarea.bubbleInputText { border: 1px solid #ccc; diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html index b228a2e90..5f6b1d928 100644 --- a/v3/commentary-bubbles-demo.html +++ b/v3/commentary-bubbles-demo.html @@ -30,13 +30,23 @@ +

    +
    Linked List Recursion Example
    +
    This code shows a function that sums up + the elements of a linked list using recursion.
    +
    - +
    At the current step, the program is about to +return from the base case of the recursion, which returns 0 to its +caller. +
    + +

    -
    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 15 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    listSum
    numbersNone
    Return
    value
    0
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
    -

    - + + +

    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 15 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    listSum
    numbersNone
    Return
    value
    0
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
    diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index 97992157a..b6406f704 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -336,6 +336,14 @@ function isOutputLineVisible(lineDivID) { $(document).ready(function() { + /* + var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, + {embeddedMode: false, + editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); + + return; + */ + // force vertical code scrolling $('#pyCodeOutputDiv').css('max-height', '120px'); diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 6c7dda325..8d0924347 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -160,6 +160,10 @@ div.ExecutionVisualizer #pyStdout { font-size: 12pt; padding: 4px; font-family: Andale mono, monospace; + + overflow: auto; /* to look pretty on IE */ + /* make sure textarea doesn't grow and stretch */ + resize: none; } From 4e66a22a68fe0837297b143300c45e933bcb3b3f Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 9 Oct 2012 14:06:10 -0700 Subject: [PATCH 477/502] teeny color tweak --- v3/commentary-bubbles-demo.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/commentary-bubbles-demo.css b/v3/commentary-bubbles-demo.css index 67d1b405d..75ceea3ab 100644 --- a/v3/commentary-bubbles-demo.css +++ b/v3/commentary-bubbles-demo.css @@ -153,7 +153,7 @@ textarea.bubbleInputText { .ui-tooltip-pgbootstrap-stub{ - border: 1px solid #888; + border: 1px solid #999; /* -webkit-box-shadow: none; From d86fa76cd7f0ae38d27dbec74b9b71e402ddeb17 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 9 Oct 2012 16:18:19 -0700 Subject: [PATCH 478/502] =?UTF-8?q?add=20a=20new=C2=A0verticalStack=20para?= =?UTF-8?q?meter=20option=20to=20stack=20the=20code=20and=20visualization?= =?UTF-8?q?=20=20atop=20one=20another,=20along=20with=20codeDivHeight=20an?= =?UTF-8?q?d=20codeDivWidth=20options=20=20to=20adjust=20the=20height=20an?= =?UTF-8?q?d=20width,=20respectively,=20of=20the=20code=20display=20div?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- v3/css/pytutor.css | 14 ++++- v3/embedding-demo.js | 6 ++ v3/js/pytutor.js | 141 ++++++++++++++++++++++++------------------- 3 files changed, 97 insertions(+), 64 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index 8d0924347..b1dfd935a 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -55,12 +55,19 @@ div.ExecutionVisualizer #dataViz { margin-left: 30px; } +div.ExecutionVisualizer div#codeDisplayDiv { + width: 550px; +} + div.ExecutionVisualizer div#pyCodeOutputDiv { max-width: 550px; max-height: 450px; /*max-height: 620px;*/ overflow: auto; /*margin-bottom: 4px;*/ + + margin-left: auto; + margin-right: auto; } div.ExecutionVisualizer table#pyCodeOutput { @@ -126,7 +133,7 @@ div.ExecutionVisualizer div#editCodeLinkDiv { margin-top: 12px; margin-bottom: 4px; */ - margin: 6px auto; + margin: 8px auto; } div.ExecutionVisualizer #errorOutput { @@ -141,7 +148,7 @@ div.ExecutionVisualizer #errorOutput { div.ExecutionVisualizer #vcrControls { margin: 15px auto; - width: 100%; + /*width: 100%;*/ text-align: center; } @@ -465,6 +472,9 @@ div.ExecutionVisualizer #executionSlider { width: 500px; margin-top: 15px; margin-bottom: 5px; + + margin-left: auto; + margin-right: auto; } div.ExecutionVisualizer #executionSliderCaption { diff --git a/v3/embedding-demo.js b/v3/embedding-demo.js index 9af98dbc6..584e92eaa 100644 --- a/v3/embedding-demo.js +++ b/v3/embedding-demo.js @@ -40,9 +40,13 @@ $(document).ready(function() { // The "startingInstruction: 15" optional parameter means to jump to step 15 // in the visualization when it loads. (The HTML webpage will actually display // "Step 16 of 64" since indices are zero-indexed.) + // + // verticalStack means to stack the code and visualizations vertically atop one another + // (rather than side-by-side) var hanoiVisualizer = new ExecutionVisualizer('hanoiDiv', hanoiTrace, {embeddedMode: true, startingInstruction: 15, + verticalStack: true, editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); // "embeddedMode: false" displays the full visualizer widget with the "Program Output" pane @@ -50,6 +54,8 @@ $(document).ready(function() { var happyVisualizer = new ExecutionVisualizer('happyDiv', happyTrace, {embeddedMode: false, jumpToEnd: true, + codeDivWidth: 450, + codeDivHeight: 150, editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 2925f8fae..827947a46 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -68,13 +68,16 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // params contains optional parameters, such as: // jumpToEnd - if non-null, jump to the very end of execution // startingInstruction - the (zero-indexed) execution point to display upon rendering -// hideOutput - hide "Program output" and "Generate URL" displays -// codeDivHeight - maximum height of #pyCodeOutputDiv (in pixels) +// hideOutput - hide "Program output" display +// codeDivHeight - maximum height of #pyCodeOutputDiv (in integer pixels) +// codeDivWidth - maximum width of #pyCodeOutputDiv (in integer pixels) // editCodeBaseURL - the base URL to visit when the user clicks 'Edit code' // embeddedMode - make the widget narrower horizontally and disable breakpoints // updateOutputCallback - function to call (with 'this' as parameter) // whenever this.updateOutput() is called // (BEFORE rendering the output display) +// verticalStack - if true, then stack code display ON TOP of visualization +// (else place side-by-side) function ExecutionVisualizer(domRootID, dat, params) { this.curInputCode = dat.code.rtrim(); // kill trailing spaces this.curTrace = dat.trace; @@ -90,6 +93,9 @@ function ExecutionVisualizer(domRootID, dat, params) { this.curInstr = 0; this.params = params; + if (!this.params) { + this.params = {}; // make it an empty object by default + } // needs to be unique! this.visualizerID = curVisualizerID; @@ -170,54 +176,56 @@ ExecutionVisualizer.prototype.render = function() { var myViz = this; // to prevent confusion of 'this' inside of nested functions - // TODO: make less gross! - this.domRoot.html( - '\ - \ - \ - \ - \ -
    \ -
    \ -
    \ -
    \ - Edit code\ -
    \ -
    \ -
    \ - \ - \ - Step ? of ?\ - \ - \ -
    \ -
    \ -
    \ -
    \ -
    \ - Program output:
    \ - \ -
    \ -
    \ -
    \ - \ - \ - \ - \ - \ -
    \ -
    \ -
    Frames
    \ -
    \ -
    \ -
    \ -
    \ -
    \ -
    Objects
    \ -
    \ -
    \ -
    \ -
    '); + var codeDisplayHTML = + '
    \ +
    \ + \ +
    \ +
    \ + \ + \ + Step ? of ?\ + \ + \ +
    \ +
    \ +
    \ +
    \ + Program output:
    \ + \ +
    \ +
    '; + + var codeVizHTML = + '
    \ + \ + \ + \ + \ + \ +
    \ +
    \ +
    Frames
    \ +
    \ +
    \ +
    \ +
    \ +
    Objects
    \ +
    \ +
    \ +
    '; + + + if (this.params.verticalStack) { + this.domRoot.html('
    ' + + codeDisplayHTML + '
    ' + + codeVizHTML + '
    '); + } + else { + this.domRoot.html('
    ' + + codeDisplayHTML + '' + + codeVizHTML + '
    '); + } this.domRoot.find('#legendDiv') @@ -250,16 +258,30 @@ ExecutionVisualizer.prototype.render = function() { if (this.params.embeddedMode) { this.params.hideOutput = true; // put this before hideOutput handler - this.domRoot.find('#executionSlider') - .css('width', '330px'); + this.params.codeDivWidth = 350; + this.params.codeDivHeight = 400; + } + + // not enough room for these extra buttons ... + if (this.params.codeDivWidth && + this.params.codeDivWidth < 470) { this.domRoot.find('#jmpFirstInstr').hide(); this.domRoot.find('#jmpLastInstr').hide(); + } - this.domRoot.find('#pyCodeOutputDiv') - .css('max-width', '350px') - .css('max-height', '400px'); + if (this.params.codeDivWidth) { + this.domRoot.find('#pyCodeOutputDiv,#codeDisplayDiv,#pyStdout') + .css('max-width', this.params.codeDivWidth + 'px'); + + this.domRoot.find('#executionSlider') + .css('width', (this.params.codeDivWidth - 20) + 'px'); + } + + if (this.params.codeDivHeight) { + this.domRoot.find('#pyCodeOutputDiv') + .css('max-height', this.params.codeDivHeight + 'px'); } @@ -271,12 +293,7 @@ ExecutionVisualizer.prototype.render = function() { + myViz.generateID('global_table') + '">
    '); - if (this.params && this.params.codeDivHeight) { - this.domRoot.find('#pyCodeOutputDiv').css('max-height', this.params.codeDivHeight); - } - - - if (this.params && this.params.hideOutput) { + if (this.params.hideOutput) { this.domRoot.find('#progOutputs').hide(); } @@ -341,7 +358,7 @@ ExecutionVisualizer.prototype.render = function() { }); - if (this.params && this.params.startingInstruction) { + if (this.params.startingInstruction) { assert(0 <= this.params.startingInstruction && this.params.startingInstruction < this.curTrace.length); this.curInstr = this.params.startingInstruction; From aa3b4bb409c7d12e1c380f590012679792d91d90 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 9 Oct 2012 16:54:07 -0700 Subject: [PATCH 479/502] avoid a SUBTLE DOM ID name clash!!! --- v3/js/pytutor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 827947a46..1a67b488d 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -1774,7 +1774,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .enter() .append('tr') .attr('id', function(d, i) { - return myViz.generateID(varnameToCssID('globals__' + d)); // make globally unique (within the page) + return myViz.generateID(varnameToCssID('global__' + d + '_tr')); // make globally unique (within the page) }); @@ -1936,7 +1936,7 @@ ExecutionVisualizer.prototype.renderDataStructures = function() { .enter() .append('tr') .attr('id', function(d, i) { - return myViz.generateID(varnameToCssID(d.frame.unique_hash + '__' + d.varname)); // make globally unique (within the page) + return myViz.generateID(varnameToCssID(d.frame.unique_hash + '__' + d.varname + '_tr')); // make globally unique (within the page) }); From 27f1606742f7831291f19782581c4f31c10eca53 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 9 Oct 2012 16:57:53 -0700 Subject: [PATCH 480/502] updated demo accordingly --- v3/commentary-bubbles-demo.html | 2 +- v3/commentary-bubbles-demo.js | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/v3/commentary-bubbles-demo.html b/v3/commentary-bubbles-demo.html index 5f6b1d928..dc650cbb8 100644 --- a/v3/commentary-bubbles-demo.html +++ b/v3/commentary-bubbles-demo.html @@ -46,7 +46,7 @@ -
    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 15 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    listSum
    numbersNone
    Return
    value
    0
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
    +
    1def listSum(numbers):
    2  if not numbers:
    3    return 0
    4  else:
    5    (f, rest) = numbers
    6    return f + listSum(rest)
    7
    8myList = (1, (2, (3, None)))
    9total = listSum(myList)
    Step 15 of 18
    line that has just executed

    next line to execute

    Program output:
    Frames
    Global variables
    listSum
     
    myList
     
    listSum
    numbers
     
    f1
    rest
     
    listSum
    numbers
     
    f2
    rest
     
    listSum
    numbers
     
    f3
    restNone
    listSum
    numbersNone
    Return
    value
    0
    Objects
    function listSum(numbers)
    tuple
    01
    1
     
    tuple
    01
    2
     
    tuple
    01
    3None
    diff --git a/v3/commentary-bubbles-demo.js b/v3/commentary-bubbles-demo.js index b6406f704..edace49e0 100644 --- a/v3/commentary-bubbles-demo.js +++ b/v3/commentary-bubbles-demo.js @@ -368,23 +368,23 @@ $(document).ready(function() { allBubbles.push(new AnnotationBubble('codeline', 'v1__cod8')); allBubbles.push(new AnnotationBubble('codeline', 'v1__cod9')); - allBubbles.push(new AnnotationBubble('variable', 'v1__globals__listSum')); - allBubbles.push(new AnnotationBubble('variable', 'v1__globals__myList')); + allBubbles.push(new AnnotationBubble('variable', 'v1__global__listSum_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__global__myList_tr')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__numbers')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__f')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__rest')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__numbers_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__f_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f1__rest_tr')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__numbers')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__f')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__rest')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__numbers_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__f_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f2__rest_tr')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__numbers')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__f')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__rest')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__numbers_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__f_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f3__rest_tr')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f4__numbers')); - allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f4____return__')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f4__numbers_tr')); + allBubbles.push(new AnnotationBubble('variable', 'v1__listSum_f4____return___tr')); $('#pyCodeOutputDiv').scroll(function() { From 9f539313234eea694f9f46d66ad9bd4739cef631 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 9 Oct 2012 18:22:56 -0700 Subject: [PATCH 481/502] added a heightChangeCallback optional parameter to ExecutionVisualizer, which is a function to call whenever the HEIGHT of #dataViz changes --- v3/embedding-demo.js | 57 ++++++++++++++++++++++---------------------- v3/js/pytutor.js | 13 ++++++++++ 2 files changed, 42 insertions(+), 28 deletions(-) diff --git a/v3/embedding-demo.js b/v3/embedding-demo.js index 584e92eaa..2a045fb4b 100644 --- a/v3/embedding-demo.js +++ b/v3/embedding-demo.js @@ -32,9 +32,31 @@ $(document).ready(function() { // Note that "embeddedMode: true" makes the visualizer appear more compact on-screen. // editCodeBaseURL is the base URL to prepend onto the 'Edit code' link. + + // A more subtle point is that when some div in your HTML webpage + // (such as a visualizer div) expands in height, it will "push down" + // all divs below it, but the SVG arrows rendered by jsPlumb + // WILL NOT MOVE. Thus, they will be in the incorrect location + // unless you call redrawAllConnectors(). + // + // We use the "heightChangeCallback: redrawAllConnectors" optional parameter + // to force redraw of all SVG arrows of visualizers BELOW the current one whenever + // its height changes. + // + // Alternatively, here is one jQuery plugin that you can use to detect div height changes: + // http://benalman.com/projects/jquery-resize-plugin/ + // + // A related trick you can implement is to make a div never shrink in height once it's grown; + // that way, you can avoid lots of jarring jumps and (inefficient) redraws. + // Render listSumTrace inside of listSumDiv var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, {embeddedMode: true, + heightChangeCallback: function() { + // note that these might not exist during a callback ... + if (hanoiVisualizer) {hanoiVisualizer.redrawConnectors();} + if (happyVisualizer) {happyVisualizer.redrawConnectors();} + }, editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); // The "startingInstruction: 15" optional parameter means to jump to step 15 @@ -47,6 +69,9 @@ $(document).ready(function() { {embeddedMode: true, startingInstruction: 15, verticalStack: true, + heightChangeCallback: function() { + if (happyVisualizer) {happyVisualizer.redrawConnectors();} + }, editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); // "embeddedMode: false" displays the full visualizer widget with the "Program Output" pane @@ -59,37 +84,13 @@ $(document).ready(function() { editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); - // The redrawConnectors() method needs to be called whenever - // HTML elements move around on-screen. This is because the SVG - // arrows rendered by jsPlumb don't automatically get redrawn - // in their new positions unless redrawConnectors() is called. - - // Call redrawConnectors() whenever the window is resized, - // since HTML elements might have moved during a resize. + // Call redrawConnectors() on all visualizers whenever the window is resized, + // since HTML elements might have moved during a resize. The SVG arrows rendered + // by jsPlumb don't automatically get re-drawn in their new positions unless + // redrawConnectors() is called. $(window).resize(function() { listSumVisualizer.redrawConnectors(); hanoiVisualizer.redrawConnectors(); happyVisualizer.redrawConnectors(); }); - - - // A more subtle point is that when some div in your HTML webpage - // (such as a visualizer div) expands in height, it will "push down" - // all divs below it, but the SVG arrows rendered by jsPlumb - // WILL NOT MOVE. Thus, they will be in the incorrect location, - // unless you call redrawConnectors(). Here is one jQuery plugin - // that you can use to detect div height changes: - // - // http://benalman.com/projects/jquery-resize-plugin/ - // - // As a concrete example, drag around the execution slider in - // "Towers of Hanoi" and notice how the arrows in "Happy Birthday" - // end up not properly aligned with the other elements. - // - // A related trick you can implement is to make a div never shrink - // in height once it's grown; that way, you can avoid lots of jarring - // jumps and redraws. - // - // Please email me if you want me to add more official support - // for this behavior. }); diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 1a67b488d..717752235 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -76,6 +76,8 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // updateOutputCallback - function to call (with 'this' as parameter) // whenever this.updateOutput() is called // (BEFORE rendering the output display) +// heightChangeCallback - function to call (with 'this' as parameter) +// whenever the HEIGHT of #dataViz changes // verticalStack - if true, then stack code display ON TOP of visualization // (else place side-by-side) function ExecutionVisualizer(domRootID, dat, params) { @@ -773,6 +775,8 @@ ExecutionVisualizer.prototype.updateOutput = function(smoothTransition) { return; } + var prevDataVizHeight = myViz.domRoot.find('#dataViz').height(); + var gutterSVG = myViz.domRoot.find('svg#leftCodeGutterSVG'); @@ -1048,6 +1052,15 @@ ExecutionVisualizer.prototype.updateOutput = function(smoothTransition) { // finally, render all of the data structures this.renderDataStructures(); + + + // call the callback if necessary (BEFORE rendering) + if (this.params.heightChangeCallback) { + if (myViz.domRoot.find('#dataViz').height() != prevDataVizHeight) { + this.params.heightChangeCallback(this); + } + } + } From b49816941920343de656a3dd8a68a425f6e30c00 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 9 Oct 2012 18:37:34 -0700 Subject: [PATCH 482/502] added a exec_script_str_local that should only be used when running locally, which disables security checks and returns the result of the finalizer function --- v3/generate_json_trace.py | 8 ++++---- v3/pg_logger.py | 22 +++++++++++++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/v3/generate_json_trace.py b/v3/generate_json_trace.py index af3c336fa..08f44bb46 100644 --- a/v3/generate_json_trace.py +++ b/v3/generate_json_trace.py @@ -13,13 +13,13 @@ def json_finalizer(input_code, output_trace): ret = dict(code=input_code, trace=output_trace) json_output = json.dumps(ret, indent=INDENT_LEVEL) - print(json_output) + return json_output def js_var_finalizer(input_code, output_trace): global JS_VARNAME ret = dict(code=input_code, trace=output_trace) json_output = json.dumps(ret, indent=None) - print("var %s = %s;" % (JS_VARNAME, json_output)) + return "var %s = %s;" % (JS_VARNAME, json_output) parser = OptionParser(usage="Generate JSON trace for pytutor") parser.add_option('-c', '--cumulative', default=False, action='store_true', @@ -35,6 +35,6 @@ def js_var_finalizer(input_code, output_trace): if options.js_varname: JS_VARNAME = options.js_varname - pg_logger.exec_script_str(fin.read(), options.cumulative, js_var_finalizer) + print(pg_logger.exec_script_str_local(fin.read(), options.cumulative, js_var_finalizer)) else: - pg_logger.exec_script_str(fin.read(), options.cumulative, json_finalizer) + print(pg_logger.exec_script_str_local(fin.read(), options.cumulative, json_finalizer)) diff --git a/v3/pg_logger.py b/v3/pg_logger.py index ce8a477d5..e573398bb 100644 --- a/v3/pg_logger.py +++ b/v3/pg_logger.py @@ -188,11 +188,13 @@ def visit_function_obj(v, ids_seen_set): class PGLogger(bdb.Bdb): - def __init__(self, cumulative_mode, finalizer_func): + def __init__(self, cumulative_mode, finalizer_func, disable_security_checks=False): bdb.Bdb.__init__(self) self.mainpyfile = '' self._wait_for_mainpyfile = 0 + self.disable_security_checks = disable_security_checks + # a function that takes the output trace as a parameter and # processes it self.finalizer_func = finalizer_func @@ -746,7 +748,7 @@ def _runscript(self, script_str): # memory bombs such as: # x = 2 # while True: x = x*x - if resource_module_loaded: + if resource_module_loaded and (not self.disable_security_checks): resource.setrlimit(resource.RLIMIT_AS, (200000000, 200000000)) resource.setrlimit(resource.RLIMIT_CPU, (5, 5)) @@ -839,7 +841,7 @@ def finalize(self): self.trace = res - self.finalizer_func(self.executed_script, self.trace) + return self.finalizer_func(self.executed_script, self.trace) @@ -854,3 +856,17 @@ def exec_script_str(script_str, cumulative_mode, finalizer_func): finally: logger.finalize() + +# disables security check and returns the result of finalizer_func +# WARNING: ONLY RUN THIS LOCALLY and never over the web, since +# security checks are disabled +def exec_script_str_local(script_str, cumulative_mode, finalizer_func): + logger = PGLogger(cumulative_mode, finalizer_func, disable_security_checks=True) + + try: + logger._runscript(script_str) + except bdb.BdbQuit: + pass + finally: + return logger.finalize() + From 87f9014d8d20d31cbff707a52921a38d9ab602be Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Tue, 9 Oct 2012 18:42:36 -0700 Subject: [PATCH 483/502] minor comment update --- v3/embedding-demo.js | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/v3/embedding-demo.js b/v3/embedding-demo.js index 2a045fb4b..4224b17e0 100644 --- a/v3/embedding-demo.js +++ b/v3/embedding-demo.js @@ -39,9 +39,8 @@ $(document).ready(function() { // WILL NOT MOVE. Thus, they will be in the incorrect location // unless you call redrawAllConnectors(). // - // We use the "heightChangeCallback: redrawAllConnectors" optional parameter - // to force redraw of all SVG arrows of visualizers BELOW the current one whenever - // its height changes. + // We use the "heightChangeCallback" optional parameter to force redraw of all SVG arrows + // of visualizers BELOW the current one, whenever its height changes. // // Alternatively, here is one jQuery plugin that you can use to detect div height changes: // http://benalman.com/projects/jquery-resize-plugin/ From b4b4c5ff598cca6e097e48a12eefdc37c1f3489a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 14:23:17 -0700 Subject: [PATCH 484/502] start adding iframe support --- v3/iframe-embed-demo.html | 11 ++++ v3/iframe-embed.html | 30 +++++++++ v3/js/iframe-embed.js | 127 ++++++++++++++++++++++++++++++++++++++ v3/js/opt-frontend.js | 22 ++++++- v3/pythontutor.py | 8 +++ v3/visualize.html | 17 +++-- 6 files changed, 210 insertions(+), 5 deletions(-) create mode 100644 v3/iframe-embed-demo.html create mode 100644 v3/iframe-embed.html create mode 100644 v3/js/iframe-embed.js diff --git a/v3/iframe-embed-demo.html b/v3/iframe-embed-demo.html new file mode 100644 index 000000000..a4b5e43b8 --- /dev/null +++ b/v3/iframe-embed-demo.html @@ -0,0 +1,11 @@ + + + + + blah blah blah + + + + + + diff --git a/v3/iframe-embed.html b/v3/iframe-embed.html new file mode 100644 index 000000000..cde799372 --- /dev/null +++ b/v3/iframe-embed.html @@ -0,0 +1,30 @@ + + + + + Online Python Tutor - iframe embed page + + + + + + + + + + + + + + + + + + + + +
    + + + diff --git a/v3/js/iframe-embed.js b/v3/js/iframe-embed.js new file mode 100644 index 000000000..1f60783c3 --- /dev/null +++ b/v3/js/iframe-embed.js @@ -0,0 +1,127 @@ +/* + +Online Python Tutor +https://github.com/pgbovine/OnlinePythonTutor/ + +Copyright (C) 2010-2012 Philip J. Guo (philip@pgbovine.net) + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +*/ + + +// Pre-reqs: pytutor.js and jquery.ba-bbq.min.js should be imported BEFORE this file + + +// backend scripts to execute (Python 2 and 3 variants, if available) +//var python2_backend_script = 'web_exec_py2.py'; +//var python3_backend_script = 'web_exec_py3.py'; + +// uncomment below if you're running on Google App Engine using the built-in app.yaml +var python2_backend_script = 'exec'; +var python3_backend_script = null; + + +var myVisualizer = null; // singleton ExecutionVisualizer instance + + +$(document).ready(function() { + + var preseededCode = $.bbq.getState('code'); + var cumulativeState = $.bbq.getState('cumulative'); + var pyState = $.bbq.getState('py'); + + var preseededCurInstr = Number($.bbq.getState('curInstr')); + if (!preseededCurInstr) { + preseededCurInstr = 0; + } + + // TODO: add more options + + + + var backend_script = null; + if (pyState == '2') { + backend_script = python2_backend_script; + } + else if (pyState == '3') { + backend_script = python3_backend_script; + } + + if (!backend_script) { + alert('Error: This server is not configured to run Python ' + $('#pythonVersionSelector').val()); + return; + } + + + $.get(backend_script, + {user_script : preseededCode, cumulative_mode: cumulativeState}, + function(dataFromBackend) { + var trace = dataFromBackend.trace; + + // don't enter visualize mode if there are killer errors: + if (!trace || + (trace.length == 0) || + (trace[trace.length - 1].event == 'uncaught_exception')) { + + if (trace.length == 1) { + alert(trace[0].exception_msg); + } + else if (trace[trace.length - 1].exception_msg) { + alert(trace[trace.length - 1].exception_msg); + } + else { + alert("Whoa, unknown error! Reload to try again, or report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)"); + } + } + else { + var startingInstruction = 0; + + // only do this at most ONCE, and then clear out preseededCurInstr + if (preseededCurInstr && preseededCurInstr < trace.length) { // NOP anyways if preseededCurInstr is 0 + startingInstruction = preseededCurInstr; + } + + myVisualizer = new ExecutionVisualizer('vizDiv', + dataFromBackend, + {startingInstruction: preseededCurInstr, + embeddedMode: true, + editCodeBaseURL: 'http://pythontutor.com/visualize.html', + }); + } + }, + "json"); + + + // log a generic AJAX error handler + $(document).ajaxError(function() { + alert("Online Python Tutor server error (possibly due to memory/resource overload)."); + }); + + + // redraw connector arrows on window resize + $(window).resize(function() { + if (appMode == 'display') { + myVisualizer.redrawConnectors(); + } + }); + +}); + diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 64a8f9fa8..508760e1c 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -66,6 +66,8 @@ function setCodeMirrorVal(dat) { $(document).ready(function() { + $("#embedLinkDiv").hide(); + pyInputCodeMirror = CodeMirror(document.getElementById('codeInputPane'), { mode: 'python', lineNumbers: true, @@ -87,11 +89,14 @@ $(document).ready(function() { if (appMode === undefined || appMode == 'edit') { $("#pyInputPane").show(); $("#pyOutputPane").hide(); + $("#embedLinkDiv").hide(); } else if (appMode == 'display') { $("#pyInputPane").hide(); $("#pyOutputPane").show(); + $("#embedLinkDiv").show(); + $('#executeBtn').html("Visualize execution"); $('#executeBtn').attr('disabled', false); @@ -132,6 +137,7 @@ $(document).ready(function() { $('#executeBtn').html("Please wait ... processing your code"); $('#executeBtn').attr('disabled', true); $("#pyOutputPane").hide(); + $("#embedLinkDiv").hide(); $.get(backend_script, @@ -483,7 +489,7 @@ $(document).ready(function() { // log a generic AJAX error handler $(document).ajaxError(function() { - alert("Server error (possibly due to memory/resource overload)."); + alert("Server error (possibly due to memory/resource overload). Report a bug to philip@pgbovine.net\n\n(Click the 'Generate URL' button to include a unique URL in your email bug report.)"); $('#executeBtn').html("Visualize execution"); $('#executeBtn').attr('disabled', false); @@ -510,5 +516,19 @@ $(document).ready(function() { var urlStr = $.param.fragment(window.location.href, myArgs, 2 /* clobber all */); $('#urlOutput').val(urlStr); }); + + + $('#genEmbedBtn').bind('click', function() { + assert(appMode == 'display'); + var myArgs = {code: pyInputCodeMirror.getValue(), + cumulative: $('#cumulativeModeSelector').val(), + py: $('#pythonVersionSelector').val(), + curInstr: myVisualizer.curInstr, + }; + + var embedUrlStr = $.param.fragment('http://pythontutor.com/iframe-embed.html', myArgs, 2 /* clobber all */); + var iframeStr = ''; + $('#embedCodeOutput').val(iframeStr); + }); }); diff --git a/v3/pythontutor.py b/v3/pythontutor.py index be76d4b1e..0deb959f4 100644 --- a/v3/pythontutor.py +++ b/v3/pythontutor.py @@ -48,6 +48,13 @@ def get(self): self.response.out.write(template.render()) +class IframeEmbedPage(webapp2.RequestHandler): + def get(self): + self.response.headers['Content-Type'] = 'text/html' + template = JINJA_ENVIRONMENT.get_template('iframe-embed.html') + self.response.out.write(template.render()) + + class LessonPage(webapp2.RequestHandler): def get(self): @@ -76,6 +83,7 @@ def get(self): app = webapp2.WSGIApplication([('/', TutorPage), + ('/iframe-embed.html', IframeEmbedPage), ('/lesson.html', LessonPage), ('/exec', ExecScript)], debug=True) diff --git a/v3/visualize.html b/v3/visualize.html index 6279ecb10..8ad886874 100644 --- a/v3/visualize.html +++ b/v3/visualize.html @@ -170,11 +170,20 @@

    -

    To report a bug, click the 'Generate URL' button, paste the URL along -with a brief error description in an email, and send the email to -philip@pgbovine.net +

    To share this visualization, click the 'Generate URL' button above +and share that URL. To report a bug, paste the URL along with a brief +error description in an email addressed to philip@pgbovine.net

    + +
    +

    +

    +

    To embed this visualization in your webpage, click the 'Generate +embed code' button above and paste the resulting HTML code into your +webpage. Adjust the height and width parameters as needed.

    +
    + Online Python Tutor supports Python 2.7 and Python 3.2 with limited module @@ -197,7 +206,7 @@ href="https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/user-FAQ.md">FAQ or other documentation -can help. Its code is open source on GitHub.

    Join the Date: Wed, 10 Oct 2012 14:49:27 -0700 Subject: [PATCH 485/502] tweaks --- v3/iframe-embed-demo.html | 4 +++- v3/js/opt-frontend.js | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/v3/iframe-embed-demo.html b/v3/iframe-embed-demo.html index a4b5e43b8..dcf5949c6 100644 --- a/v3/iframe-embed-demo.html +++ b/v3/iframe-embed-demo.html @@ -2,10 +2,12 @@ - blah blah blah + ifram embed demo + + diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 508760e1c..f3b271ebf 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -527,7 +527,7 @@ $(document).ready(function() { }; var embedUrlStr = $.param.fragment('http://pythontutor.com/iframe-embed.html', myArgs, 2 /* clobber all */); - var iframeStr = ''; + var iframeStr = ''; $('#embedCodeOutput').val(iframeStr); }); }); From 744c4dde119bc826cb5bd43ddbcbf15ea0fbc806 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 14:51:20 -0700 Subject: [PATCH 486/502] clear out stale values --- v3/js/opt-frontend.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index f3b271ebf..2c2b98915 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -57,7 +57,7 @@ var pyInputCodeMirror; // CodeMirror object that contains the input text function setCodeMirrorVal(dat) { pyInputCodeMirror.setValue(dat.rtrim() /* kill trailing spaces */); - $('#urlOutput').val(''); + $('#urlOutput,#embedCodeOutput').val(''); // also scroll to top to make the UI more usable on smaller monitors $(document).scrollTop(0); @@ -114,7 +114,7 @@ $(document).ready(function() { assert(false); } - $('#urlOutput').val(''); // clear to avoid stale values + $('#urlOutput,#embedCodeOutput').val(''); // clear to avoid stale values }); @@ -189,7 +189,7 @@ $(document).ready(function() { myVisualizer = new ExecutionVisualizer('pyOutputPane', dataFromBackend, {startingInstruction: startingInstruction, - updateOutputCallback: function() {$('#urlOutput').val('');} + updateOutputCallback: function() {'#urlOutput,#embedCodeOutput').val('');} }); From f0497d753c201537953b13d293ac58421d405b33 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 14:52:37 -0700 Subject: [PATCH 487/502] whoops --- v3/js/opt-frontend.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 2c2b98915..91535bd68 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -189,7 +189,7 @@ $(document).ready(function() { myVisualizer = new ExecutionVisualizer('pyOutputPane', dataFromBackend, {startingInstruction: startingInstruction, - updateOutputCallback: function() {'#urlOutput,#embedCodeOutput').val('');} + updateOutputCallback: function() {$('#urlOutput,#embedCodeOutput').val('');} }); From 123266414d19a1733263d9517eeecae63e18fd2d Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 14:58:40 -0700 Subject: [PATCH 488/502] updated embedding demo --- v3/iframe-embed-demo.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/v3/iframe-embed-demo.html b/v3/iframe-embed-demo.html index dcf5949c6..2bdb818bb 100644 --- a/v3/iframe-embed-demo.html +++ b/v3/iframe-embed-demo.html @@ -2,12 +2,16 @@ - ifram embed demo + Online Python Tutor - iframe embed demo +

    + + + From d7482d9eba71289d3b3154f9d84e83ffc958e310 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 15:06:13 -0700 Subject: [PATCH 489/502] added an extra embed option --- v3/js/iframe-embed.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/v3/js/iframe-embed.js b/v3/js/iframe-embed.js index 1f60783c3..0651317e6 100644 --- a/v3/js/iframe-embed.js +++ b/v3/js/iframe-embed.js @@ -47,14 +47,15 @@ $(document).ready(function() { var preseededCode = $.bbq.getState('code'); var cumulativeState = $.bbq.getState('cumulative'); var pyState = $.bbq.getState('py'); + var verticalStack = $.bbq.getState('verticalStack'); var preseededCurInstr = Number($.bbq.getState('curInstr')); if (!preseededCurInstr) { preseededCurInstr = 0; } - // TODO: add more options - + // TODO: add more options as needed + var backend_script = null; @@ -103,6 +104,7 @@ $(document).ready(function() { dataFromBackend, {startingInstruction: preseededCurInstr, embeddedMode: true, + verticalStack: (verticalStack !== undefined), editCodeBaseURL: 'http://pythontutor.com/visualize.html', }); } From eeec6a95c0d05cb7c261241136f902b495b4c4a1 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 15:21:35 -0700 Subject: [PATCH 490/502] small tweaks --- v3/iframe-embed-demo.html | 4 ++++ v3/js/iframe-embed.js | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/v3/iframe-embed-demo.html b/v3/iframe-embed-demo.html index 2bdb818bb..2cda803c1 100644 --- a/v3/iframe-embed-demo.html +++ b/v3/iframe-embed-demo.html @@ -11,6 +11,10 @@

    + + +

    + diff --git a/v3/js/iframe-embed.js b/v3/js/iframe-embed.js index 0651317e6..5fc536f4f 100644 --- a/v3/js/iframe-embed.js +++ b/v3/js/iframe-embed.js @@ -47,7 +47,7 @@ $(document).ready(function() { var preseededCode = $.bbq.getState('code'); var cumulativeState = $.bbq.getState('cumulative'); var pyState = $.bbq.getState('py'); - var verticalStack = $.bbq.getState('verticalStack'); + var verticalStackBool = ($.bbq.getState('verticalStack') == 'true'); // boolean var preseededCurInstr = Number($.bbq.getState('curInstr')); if (!preseededCurInstr) { @@ -104,7 +104,7 @@ $(document).ready(function() { dataFromBackend, {startingInstruction: preseededCurInstr, embeddedMode: true, - verticalStack: (verticalStack !== undefined), + verticalStack: verticalStackBool, editCodeBaseURL: 'http://pythontutor.com/visualize.html', }); } From c0b62e52c98009f2fc5585ca26086ed035bac531 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 16:17:03 -0700 Subject: [PATCH 491/502] Update v3/docs/embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md index 0cbb8bb56..6d3c7e3ca 100644 --- a/v3/docs/embedding-HOWTO.md +++ b/v3/docs/embedding-HOWTO.md @@ -17,10 +17,35 @@ philip@pgbovine.net if you have questions. And please excuse the sloppy writing; I'm not trying to win any style awards here :) +## iframe embedding -## High-Level Overview +An easy (although somewhat limited) way to embed an OPT visualization on your website is to enclose it within an [iframe](http://www.w3schools.com/tags/tag_iframe.asp). -To embed a visualization, you: +If you generate a visualization (e.g., click here) +and then click on the "Generate embed code" link at the bottom of the page, the following code will be generated: + +```html + +``` + +If you copy-and-paste the above code into your HTML webpage, then it will embed the given visualization as an iframe. + +See `v3/iframe-embed-demo.html` for a working demo showing several embedded iframes ([online here](http://pythontutor.com/iframe-embed-demo.html)). + +### iframe embedding parameters + + +## Direct embedding + +The iframe-based approach has some limitations (e.g., hard to dynamically resize the enclosing iframe, cannot run while offline), +so here are instructions for directly embedding visualizations into your webpage: + + +### High-Level Overview + +To directly embed a visualization, you: 1. Run the target Python program offline to generate an execution trace, which is one (really, really long) string representing a JavaScript (JSON) object. @@ -38,7 +63,7 @@ or, say, a USB drive), they can play with the visualization without an Internet Finally, multiple visualizations can be embedded in a single HTML webpage, although you need to be careful to redraw the SVG arrows when page elements are resized or moved. -## The Nitty-Gritty +### The Nitty-Gritty Let's attempt to go [literate programming](http://en.wikipedia.org/wiki/Literate_programming) style now ... load up [embedding-demo.html](http://pythontutor.com/embedding-demo.html) in From 54cd439bef9098913910970fa899798fbc051003 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 16:28:18 -0700 Subject: [PATCH 492/502] Update v3/docs/embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md index 6d3c7e3ca..4ce31c16f 100644 --- a/v3/docs/embedding-HOWTO.md +++ b/v3/docs/embedding-HOWTO.md @@ -22,7 +22,7 @@ And please excuse the sloppy writing; I'm not trying to win any style awards her An easy (although somewhat limited) way to embed an OPT visualization on your website is to enclose it within an [iframe](http://www.w3schools.com/tags/tag_iframe.asp). If you generate a visualization (e.g., click here) -and then click on the "Generate embed code" link at the bottom of the page, the following code will be generated: +and then click the "Generate embed code" button at the bottom of the page, the following code will be generated: ```html +

    diff --git a/v3/js/iframe-embed.js b/v3/js/iframe-embed.js index 5fc536f4f..8ead50aad 100644 --- a/v3/js/iframe-embed.js +++ b/v3/js/iframe-embed.js @@ -46,6 +46,10 @@ $(document).ready(function() { var preseededCode = $.bbq.getState('code'); var cumulativeState = $.bbq.getState('cumulative'); + if (!cumulativeState) { + cumulativeState = 'false'; // string! + } + var pyState = $.bbq.getState('py'); var verticalStackBool = ($.bbq.getState('verticalStack') == 'true'); // boolean From 3904492d157acb2e3b2822ce82cbe5a82688f87b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 16:40:02 -0700 Subject: [PATCH 494/502] Update v3/docs/embedding-HOWTO.md --- v3/docs/embedding-HOWTO.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/v3/docs/embedding-HOWTO.md b/v3/docs/embedding-HOWTO.md index 4ce31c16f..d03e6afa7 100644 --- a/v3/docs/embedding-HOWTO.md +++ b/v3/docs/embedding-HOWTO.md @@ -41,17 +41,19 @@ You can customize the iframe's size by adjusting the `width` and `height` parame after the hash mark (`#` character) in the `src=` URL string. Note that OPT uses the hash mark rather than the usual question mark `?` query string. Here are the currently-supported parameters: -- `code` - The Python code to visualize (URL encoded string) -- `cumulative` - Should exited functions still be displayed? (mandatory string: `true` or `false`) +- `code` - The Python code to visualize (mandatory: URL-encoded string) - `py` - Python interpreter version (mandatory: `2` for Python 2.7 or `3` for Python 3.2) - `verticalStack` - Set to `true` if you want the code and visualization to stack atop one another (optional) -- `curInstr` - A (zero-indexed) integer of the instruction to jump to in the visualization (optional) +- `curInstr` - A (zero-indexed) integer of the execution point to directly jump to in the visualization (optional) +- `cumulative` - Set to `true` if you want exited functions to be displayed (optional) + ## Direct embedding -The iframe-based approach has some limitations (e.g., hard to dynamically resize the enclosing iframe, cannot run while offline), -so here are instructions for directly embedding visualizations into your webpage: +The iframe-based approach has some limitations (e.g., hard to dynamically resize the enclosing iframe, +cannot run while offline, limited parameter choices). +Here are instructions for a more powerful but harder-to-use alternative -- directly embedding visualizations. ### High-Level Overview From ac2ee6f9ef535a21ebd8db49f81a6619e31a88fa Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Wed, 10 Oct 2012 16:46:50 -0700 Subject: [PATCH 495/502] bah --- v3/js/iframe-embed.js | 1 - 1 file changed, 1 deletion(-) diff --git a/v3/js/iframe-embed.js b/v3/js/iframe-embed.js index 8ead50aad..0e0028643 100644 --- a/v3/js/iframe-embed.js +++ b/v3/js/iframe-embed.js @@ -109,7 +109,6 @@ $(document).ready(function() { {startingInstruction: preseededCurInstr, embeddedMode: true, verticalStack: verticalStackBool, - editCodeBaseURL: 'http://pythontutor.com/visualize.html', }); } }, From c9be9e4acf45981eb830d9c192ddb736478aed63 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 11 Oct 2012 10:18:15 -0700 Subject: [PATCH 496/502] hide 'Edit code' link if editCodeBaseURL is null --- v3/css/pytutor.css | 2 +- v3/js/opt-frontend.js | 3 ++- v3/js/pytutor.js | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/v3/css/pytutor.css b/v3/css/pytutor.css index b1dfd935a..0fe03b844 100644 --- a/v3/css/pytutor.css +++ b/v3/css/pytutor.css @@ -470,7 +470,7 @@ div.ExecutionVisualizer div#heapHeader { div.ExecutionVisualizer #executionSlider { width: 500px; - margin-top: 15px; + margin-top: 20px; margin-bottom: 5px; margin-left: auto; diff --git a/v3/js/opt-frontend.js b/v3/js/opt-frontend.js index 91535bd68..8aec34b2e 100644 --- a/v3/js/opt-frontend.js +++ b/v3/js/opt-frontend.js @@ -105,7 +105,8 @@ $(document).ready(function() { // jsPlumb connectors won't render properly myVisualizer.updateOutput(); - // customize edit button click functionality AFTER rendering (TODO: awkward!) + // customize edit button click functionality AFTER rendering (NB: awkward!) + $('#pyOutputPane #editCodeLinkDiv').show(); $('#pyOutputPane #editBtn').click(function() { enterEditMode(); }); diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 717752235..90bd126a8 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -71,7 +71,7 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // hideOutput - hide "Program output" display // codeDivHeight - maximum height of #pyCodeOutputDiv (in integer pixels) // codeDivWidth - maximum width of #pyCodeOutputDiv (in integer pixels) -// editCodeBaseURL - the base URL to visit when the user clicks 'Edit code' +// editCodeBaseURL - the base URL to visit when the user clicks 'Edit code' (if null, then 'Edit code' link hidden) // embeddedMode - make the widget narrower horizontally and disable breakpoints // updateOutputCallback - function to call (with 'this' as parameter) // whenever this.updateOutput() is called @@ -252,6 +252,7 @@ ExecutionVisualizer.prototype.render = function() { this.domRoot.find('#editBtn').attr('href', urlStr); } else { + this.domRoot.find('#editCodeLinkDiv').hide(); // just hide for simplicity! this.domRoot.find('#editBtn').attr('href', "#"); this.domRoot.find('#editBtn').click(function(){return false;}); // DISABLE the link! } From 7f96c8d60403ef5ce85dbf29197ad94fc3bc163b Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 11 Oct 2012 10:30:14 -0700 Subject: [PATCH 497/502] get embeddedMode to play nicely with codeDivWidth and codeDivHeight --- v3/js/pytutor.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index 90bd126a8..a46f279ac 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -72,7 +72,7 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // codeDivHeight - maximum height of #pyCodeOutputDiv (in integer pixels) // codeDivWidth - maximum width of #pyCodeOutputDiv (in integer pixels) // editCodeBaseURL - the base URL to visit when the user clicks 'Edit code' (if null, then 'Edit code' link hidden) -// embeddedMode - make the widget narrower horizontally and disable breakpoints +// embeddedMode - shortcut for hideOutput=true, codeDivWidth=350, codeDivHeight=400 // updateOutputCallback - function to call (with 'this' as parameter) // whenever this.updateOutput() is called // (BEFORE rendering the output display) @@ -261,8 +261,14 @@ ExecutionVisualizer.prototype.render = function() { if (this.params.embeddedMode) { this.params.hideOutput = true; // put this before hideOutput handler - this.params.codeDivWidth = 350; - this.params.codeDivHeight = 400; + // don't override if they've already been set! + if (this.params.codeDivWidth === undefined) { + this.params.codeDivWidth = 350; + } + + if (this.params.codeDivHeight === undefined) { + this.params.codeDivHeight = 400; + } } From 7ed4150415e94dec84c4e091f876e971e4292a6e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 11 Oct 2012 11:16:23 -0700 Subject: [PATCH 498/502] added an redrawAllConnectorsOnHeightChange option --- v3/embedding-demo.js | 14 ++++---------- v3/js/pytutor.js | 17 +++++++++++++++-- 2 files changed, 19 insertions(+), 12 deletions(-) diff --git a/v3/embedding-demo.js b/v3/embedding-demo.js index 4224b17e0..962e91c54 100644 --- a/v3/embedding-demo.js +++ b/v3/embedding-demo.js @@ -39,8 +39,8 @@ $(document).ready(function() { // WILL NOT MOVE. Thus, they will be in the incorrect location // unless you call redrawAllConnectors(). // - // We use the "heightChangeCallback" optional parameter to force redraw of all SVG arrows - // of visualizers BELOW the current one, whenever its height changes. + // We use the "redrawAllConnectorsOnHeightChange" optional parameter to force redraw + // of all SVG arrows of ALL visualizers, whenever the height of one changes. // // Alternatively, here is one jQuery plugin that you can use to detect div height changes: // http://benalman.com/projects/jquery-resize-plugin/ @@ -51,11 +51,7 @@ $(document).ready(function() { // Render listSumTrace inside of listSumDiv var listSumVisualizer = new ExecutionVisualizer('listSumDiv', listSumTrace, {embeddedMode: true, - heightChangeCallback: function() { - // note that these might not exist during a callback ... - if (hanoiVisualizer) {hanoiVisualizer.redrawConnectors();} - if (happyVisualizer) {happyVisualizer.redrawConnectors();} - }, + redrawAllConnectorsOnHeightChange: true, editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); // The "startingInstruction: 15" optional parameter means to jump to step 15 @@ -68,9 +64,7 @@ $(document).ready(function() { {embeddedMode: true, startingInstruction: 15, verticalStack: true, - heightChangeCallback: function() { - if (happyVisualizer) {happyVisualizer.redrawConnectors();} - }, + redrawAllConnectorsOnHeightChange: true, editCodeBaseURL: 'http://pythontutor.com/visualize.html'}); // "embeddedMode: false" displays the full visualizer widget with the "Program Output" pane diff --git a/v3/js/pytutor.js b/v3/js/pytutor.js index a46f279ac..eeff85a6e 100644 --- a/v3/js/pytutor.js +++ b/v3/js/pytutor.js @@ -55,6 +55,8 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ +var allVisualizers = []; // global array of ALL visualizers ever on the page + var SVG_ARROW_POLYGON = '0,3 12,3 12,0 18,5 12,10 12,7 0,7'; var SVG_ARROW_HEIGHT = 10; // must match height of SVG_ARROW_POLYGON @@ -78,6 +80,9 @@ var curVisualizerID = 1; // global to uniquely identify each ExecutionVisualizer // (BEFORE rendering the output display) // heightChangeCallback - function to call (with 'this' as parameter) // whenever the HEIGHT of #dataViz changes +// redrawAllConnectorsOnHeightChange - if this is non-null, then call redrawConnectors() in ALL ExecutionVisualizer +// objects on this page whenever the height of ANY of them changes. +// (NB: This might be inefficient and overkill; use at your own discretion.) // verticalStack - if true, then stack code display ON TOP of visualization // (else place side-by-side) function ExecutionVisualizer(domRootID, dat, params) { @@ -158,6 +163,8 @@ function ExecutionVisualizer(domRootID, dat, params) { this.hasRendered = false; this.render(); // go for it! + + allVisualizers.push(this); } @@ -1062,10 +1069,16 @@ ExecutionVisualizer.prototype.updateOutput = function(smoothTransition) { // call the callback if necessary (BEFORE rendering) - if (this.params.heightChangeCallback) { - if (myViz.domRoot.find('#dataViz').height() != prevDataVizHeight) { + if (myViz.domRoot.find('#dataViz').height() != prevDataVizHeight) { + if (this.params.heightChangeCallback) { this.params.heightChangeCallback(this); } + + if (this.params.redrawAllConnectorsOnHeightChange) { + $.each(allVisualizers, function(i, e) { + e.redrawConnectors(); + }); + } } } From 39ae4f7455e8b7458b02d26360b20000838e0398 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 11 Oct 2012 11:36:15 -0700 Subject: [PATCH 499/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index 50b432db5..0ad7eb552 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -103,7 +103,10 @@ https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/opt-trace-form ... and the frontend should be able to visualize it! -My +For instance, the [Chicory Java trace generator for Daikon](http://groups.csail.mit.edu/pag/daikon/download/doc/daikon_manual_html/daikon_7.html#SEC69) +might be a good basis for writing a Java backend for OPT. + +Also, my [master's thesis](http://pgbovine.net/projects/pubs/guo-mixedlevel-mengthesis.pdf) from 2006 describes one possible technique for building a C-language backend based upon the [Valgrind](http://www.valgrind.org) tool. More importantly, it describes the difficulties involved in creating a robust execution From 3c0ddfab8bf8bef2a6816f624512a5f573022d9a Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Thu, 11 Oct 2012 16:47:39 -0700 Subject: [PATCH 500/502] added Hangout on Air link --- v3/css/index.css | 2 +- v3/index.html | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/v3/css/index.css b/v3/css/index.css index f23f6eaf5..053cbca81 100644 --- a/v3/css/index.css +++ b/v3/css/index.css @@ -117,7 +117,7 @@ div#learnPane p { div#learnPane #startLink { font-size: 16pt; font-weight: normal; - margin-top: 20px; + margin-top: 25px; margin-bottom: 20px; font-family: verdana, arial, helvetica, sans-serif; } diff --git a/v3/index.html b/v3/index.html index 632afe8e5..ea93033f1 100644 --- a/v3/index.html +++ b/v3/index.html @@ -101,14 +101,17 @@

    LEARN programming by vi College have used it for teaching introductory computer science and programming courses.

    +

    Watch a +video demo and interview with the instructor of UC Berkeley's +introductory CS course.

    +

    But this is just the beginning. We are actively seeking partnerships with educators at all grade levels to deploy and improve this tool. Email philip@pgbovine.net if you are interested in collaborating.

    -

    - From 95821963ff5998499259ca5038d7ff82eecc530e Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 15 Oct 2012 13:45:24 -0300 Subject: [PATCH 501/502] Update v3/docs/project-ideas.md --- v3/docs/project-ideas.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/v3/docs/project-ideas.md b/v3/docs/project-ideas.md index 0ad7eb552..08dd3e97c 100644 --- a/v3/docs/project-ideas.md +++ b/v3/docs/project-ideas.md @@ -122,6 +122,12 @@ Right now the OPT backend runs Python code on the server, but it would be super- that runs entirely in the browser. Modifying Skulpt -- http://www.skulpt.org/ -- is the leading contender here, since I am in touch with its main developers. +The basic idea is to use Skulpt to generate a JavaScript trace object (all within the web browser without +a server call) and then construct a new ExecutionVisualizer with that trace object as a parameter. +Read "Direct embedding" and the associated code for more detailed info: +https://github.com/pgbovine/OnlinePythonTutor/blob/master/v3/docs/embedding-HOWTO.md#direct-embedding + + Main Advantages: - Enables fine-grained tracing of expression and sub-expression evaluation, which has clear pedagogical benefits; right now OPT can only single-step over one line at a time since it relies on the Python bdb debugger. - Enables an interactive REPL that incrementally takes in user inputs rather than just executing batch programs; this can lead to better interactivity and responsiveness. From 2eaa305afb14eb17b4836c7e5892975079e044d7 Mon Sep 17 00:00:00 2001 From: Philip Guo Date: Mon, 15 Oct 2012 16:59:08 -0300 Subject: [PATCH 502/502] Update v3/docs/developer-overview.md --- v3/docs/developer-overview.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/v3/docs/developer-overview.md b/v3/docs/developer-overview.md index 734e8e42c..588b961c0 100644 --- a/v3/docs/developer-overview.md +++ b/v3/docs/developer-overview.md @@ -43,6 +43,9 @@ if you're eventually going to deploy on something other than Google App Engine, for development and testing. The main caveat here is that Google App Engine currently runs Python 2.7, so you won't be able to test Python 3 locally this way. +Here is a [blog post by a Hacker School student](http://theworldsoldestintern.wordpress.com/2012/10/15/installing-online-python-tutor-on-your-laptop-localhost8080/) +who set up OPT on his Ubuntu laptop. (btw [Hacker School](http://www.hackerschool.com/) is worth checking out!) + ## Overall system architecture